Skip to content

Commit a035f41

Browse files
committed
ci: extract TCK snapshots in one pass
1 parent 9944956 commit a035f41

1 file changed

Lines changed: 23 additions & 8 deletions

File tree

‎tools/download_serialization_test_data.sh‎

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,28 +98,43 @@ for language in "${languages[@]}"; do
9898
staging_directory="$(
9999
mktemp -d "${SERIALIZATION_DATA}/.${language}_generated_files.XXXXXX"
100100
)"
101-
count=0
101+
members=()
102+
names=()
102103

103104
while IFS= read -r member; do
104105
case "${member}" in
105106
*/serialization/"${language}"/snapshots/*.sk)
106107
name="${member##*/}"
107-
output="${staging_directory}/${name}"
108-
if [[ -e "${output}" || -L "${output}" ]]; then
109-
echo "Duplicate snapshot in archive: ${name}" >&2
110-
exit 1
111-
fi
112-
tar -xOzf "${archive_path}" "${member}" > "${output}"
113-
count=$((count + 1))
108+
for existing_name in "${names[@]-}"; do
109+
if [[ "${name}" == "${existing_name}" ]]; then
110+
echo "Duplicate snapshot in archive: ${name}" >&2
111+
exit 1
112+
fi
113+
done
114+
members+=("${member}")
115+
names+=("${name}")
114116
;;
115117
esac
116118
done < <(tar -tzf "${archive_path}")
117119

120+
count=${#members[@]}
118121
if [[ ${count} -eq 0 ]]; then
119122
echo "No ${language} snapshots found in the TCK archive" >&2
120123
exit 1
121124
fi
122125

126+
tar \
127+
-xzf "${archive_path}" \
128+
-C "${staging_directory}" \
129+
--strip-components=4 \
130+
"${members[@]}"
131+
for name in "${names[@]}"; do
132+
if [[ ! -f "${staging_directory}/${name}" ]]; then
133+
echo "Failed to extract snapshot: ${name}" >&2
134+
exit 1
135+
fi
136+
done
137+
123138
destination="${SERIALIZATION_DATA}/${language}_generated_files"
124139
if [[ -L "${destination}" ]]; then
125140
echo "Snapshot output path cannot be a symbolic link: ${destination}" >&2

0 commit comments

Comments
 (0)