mirror of
https://github.com/anchore/syft.git
synced 2026-11-01 23:16:30 +01:00
Refactor install.sh (#765)
* [wip] get assets based on gh api Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * put install.sh download_asset fn under test Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * put install.sh install_asset fn under test Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * use zip for darwin installs Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * fix install.sh negative test cases Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * allow errors to propagate in install.sh Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * remove exit on error from install.sh tests Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * add more docs around install.sh helpers Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * add integration tests for install.sh Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * add install.sh testing to pipeline Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * add install test cache to CI Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * make colors globally available Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * test download against github release Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * always test release-based install against latest release Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * use better install.sh test names Signed-off-by: Alex Goodman <alex.goodman@anchore.com>
This commit is contained in:
Executable
+98
@@ -0,0 +1,98 @@
|
||||
. 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}"
|
||||
|
||||
build_dir_name="${name}"
|
||||
if [ "$os" == "darwin" ]; then
|
||||
# TODO: when we simplify the goreleaser build steps, this exception would not longer be expected
|
||||
build_dir_name="${name}-macos"
|
||||
fi
|
||||
|
||||
assertFilesEqual \
|
||||
"$(snapshot_dir)/${build_dir_name}_${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 "darwin" "amd64" "tar.gz"
|
||||
run_test_case test_positive_snapshot_install_asset "darwin" "amd64" "zip"
|
||||
run_test_case test_positive_snapshot_install_asset "darwin" "arm64" "tar.gz"
|
||||
run_test_case test_positive_snapshot_install_asset "darwin" "arm64" "zip"
|
||||
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}"
|
||||
Reference in New Issue
Block a user