mirror of
https://github.com/anchore/syft
synced 2024-11-10 06:14:16 +00:00
62897fbc89
Co-authored-by: Christopher Phillips <christopher.phillips@anchore.com>
98 lines
3.2 KiB
Bash
Executable file
98 lines
3.2 KiB
Bash
Executable file
. test_harness.sh
|
|
|
|
INSTALL_ARCHIVE_POSITIVE_CASES=0
|
|
|
|
# helper for asserting install_asset positive cases
|
|
test_positive_snapshot_install_asset() {
|
|
os="$1"
|
|
arch="$2"
|
|
format="$3"
|
|
|
|
# for troubleshooting
|
|
# log_set_priority 10
|
|
|
|
name=${PROJECT_NAME}
|
|
binary=$(get_binary_name "${os}" "${arch}" "${PROJECT_NAME}")
|
|
github_download=$(snapshot_download_url)
|
|
version=$(snapshot_version)
|
|
|
|
download_dir=$(mktemp -d)
|
|
install_dir=$(mktemp -d)
|
|
|
|
download_and_install_asset "${github_download}" "${download_dir}" "${install_dir}" "${name}" "${os}" "${arch}" "${version}" "${format}" "${binary}"
|
|
|
|
assertEquals "0" "$?" "download/install did not succeed"
|
|
|
|
expected_path="${install_dir}/${binary}"
|
|
assertFileExists "${expected_path}" "install_asset os=${os} arch=${arch} format=${format}"
|
|
|
|
# directory structure for arch has been updated as of go 1.18
|
|
# https://goreleaser.com/customization/build/#why-is-there-a-_v1-suffix-on-amd64-buildsjk
|
|
if [ $arch == "amd64" ]; then
|
|
arch="amd64_v1"
|
|
fi
|
|
|
|
assertFilesEqual \
|
|
"$(snapshot_dir)/${os}-build_${os}_${arch}/${binary}" \
|
|
"${expected_path}" \
|
|
"unable to verify installation of os=${os} arch=${arch} format=${format}"
|
|
|
|
((INSTALL_ARCHIVE_POSITIVE_CASES++))
|
|
|
|
rm -rf -- "$download_dir"
|
|
rm -rf -- "$install_dir"
|
|
}
|
|
|
|
# helper for asserting install_asset negative cases
|
|
test_negative_snapshot_install_asset() {
|
|
os="$1"
|
|
arch="$2"
|
|
format="$3"
|
|
|
|
# for troubleshooting
|
|
# log_set_priority 10
|
|
|
|
name=${PROJECT_NAME}
|
|
binary=$(get_binary_name "${os}" "${arch}" "${PROJECT_NAME}")
|
|
github_download=$(snapshot_download_url)
|
|
version=$(snapshot_version)
|
|
|
|
download_dir=$(mktemp -d)
|
|
install_dir=$(mktemp -d)
|
|
|
|
download_and_install_asset "${github_download}" "${download_dir}" "${install_dir}" "${name}" "${os}" "${arch}" "${version}" "${format}" "${binary}"
|
|
|
|
assertNotEquals "0" "$?" "download/install should have failed but did not"
|
|
|
|
rm -rf -- "$download_dir"
|
|
rm -rf -- "$install_dir"
|
|
}
|
|
|
|
|
|
test_install_asset_exercised_all_archive_assets() {
|
|
expected=$(snapshot_assets_archive_count)
|
|
|
|
assertEquals "${expected}" "${INSTALL_ARCHIVE_POSITIVE_CASES}" "did not download all possible archive assets (missing an os/arch/format variant?)"
|
|
}
|
|
|
|
|
|
worker_pid=$(setup_snapshot_server)
|
|
trap 'teardown_snapshot_server ${worker_pid}' EXIT
|
|
|
|
# exercise all possible archive assets (not rpm/deb/dmg) against a snapshot build
|
|
run_test_case test_positive_snapshot_install_asset "linux" "amd64" "tar.gz"
|
|
run_test_case test_positive_snapshot_install_asset "linux" "arm64" "tar.gz"
|
|
run_test_case test_positive_snapshot_install_asset "linux" "ppc64le" "tar.gz"
|
|
run_test_case test_positive_snapshot_install_asset "linux" "s390x" "tar.gz"
|
|
run_test_case test_positive_snapshot_install_asset "darwin" "amd64" "tar.gz"
|
|
run_test_case test_positive_snapshot_install_asset "darwin" "arm64" "tar.gz"
|
|
run_test_case test_positive_snapshot_install_asset "windows" "amd64" "zip"
|
|
|
|
# let's make certain we covered all assets that were expected
|
|
run_test_case test_install_asset_exercised_all_archive_assets
|
|
|
|
# make certain we handle missing assets alright
|
|
run_test_case test_negative_snapshot_install_asset "bogus" "amd64" "zip"
|
|
|
|
trap - EXIT
|
|
teardown_snapshot_server "${worker_pid}"
|