From 1e3d2a2927ab1ab16ed92ab6244b969e19c728a7 Mon Sep 17 00:00:00 2001 From: Christopher Angelo Phillips <32073428+spiffcs@users.noreply.github.com> Date: Tue, 1 Jul 2025 10:11:36 -0400 Subject: [PATCH] chore: update tests to read from latest test-fixture-cache and fix cache publish (#4042) * feat: update integration test with correct package for httpd Signed-off-by: Christopher Phillips <32073428+spiffcs@users.noreply.github.com> * chore: update integration and cli tests with new upstream expectations - php interpreter 8.3.21 => 8.3.22 - runCycloneDXInDocker update for local arm64 qemu emulation CycloneDX - getSyftBinaryLocationByOS update to detect arm64 v8.0 artifact path Signed-off-by: Christopher Phillips <32073428+spiffcs@users.noreply.github.com> * chore: add snalshot to test command for fixture builds Signed-off-by: Christopher Phillips <32073428+spiffcs@users.noreply.github.com> * chore: update cdx in docker for all GOOS Signed-off-by: Christopher Phillips <32073428+spiffcs@users.noreply.github.com> --------- Signed-off-by: Christopher Phillips <32073428+spiffcs@users.noreply.github.com> --- Taskfile.yaml | 41 ++++----- .../integration/package_deduplication_test.go | 4 +- .../php/interpreter_cataloger_test.go | 86 +++++++++---------- test/cli/dir_root_scan_regression_test.go | 2 - test/cli/utils_test.go | 29 ++++--- 5 files changed, 85 insertions(+), 77 deletions(-) diff --git a/Taskfile.yaml b/Taskfile.yaml index 6ccfff10f..b90671cd9 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -78,6 +78,7 @@ tasks: - task: integration - task: validate-cyclonedx-schema - task: test-utils + - task: snapshot - task: cli - task: check-docker-cache @@ -264,12 +265,12 @@ tasks: YELLOW='\033[0;33m' RESET='\033[0m' - echo -e "${YELLOW}creating fingerprint files for non-docker fixtures...${RESET}" + echo -e "${YELLOW}creating fingerprint files for non-docker fixtures...${RESET}" for dir in $(find . -type d -name 'test-fixtures'); do if [ -f "$dir/Makefile" ]; then # for debugging... #echo -e "${YELLOW}• calculating fingerprints in $dir... ${RESET}" - + (make -C "$dir" fingerprint) fi done @@ -298,18 +299,18 @@ tasks: BOLD='\033[1m' PURPLE='\033[0;35m' RESET='\033[0m' - + # if DOWNLOAD_TEST_FIXTURE_CACHE is set to 'false', then skip the cache download and always build if [ "$DOWNLOAD_TEST_FIXTURE_CACHE" = "false" ]; then echo -e "${BOLD}${PURPLE}skipping cache download, rebuilding cache...${RESET}" {{ .TASK }} build-fixtures exit 0 fi - + LATEST_FINGERPRINT=$(docker manifest inspect {{ .CACHE_IMAGE }} | {{ .YQ }} -r '.annotations.fingerprint') echo "latest cache: $LATEST_FINGERPRINT" - + if [ -f {{ .LAST_CACHE_PULL_FILE }} ]; then LAST_PULL_FINGERPRINT=$(cat {{ .LAST_CACHE_PULL_FILE }} | {{ .YQ }} -r '.digest') else @@ -317,41 +318,41 @@ tasks: {{ .TASK }} download-test-fixture-cache exit 0 fi - + {{ .TASK }} fingerprints - WANT_FINGERPRINT=$(cat {{ .CACHE_PATHS_FILE }} | {{ .YQ }} -r '.digest') + WANT_FINGERPRINT=$(cat {{ .CACHE_PATHS_FILE }} | {{ .YQ }} -r '.digest') echo "desired cache: $WANT_FINGERPRINT" echo "last pulled cache: $LAST_PULL_FINGERPRINT" - + # if we already have the latest cache, skip the refresh if [ "$LAST_PULL_FINGERPRINT" = "$WANT_FINGERPRINT" ]; then echo -e "${BOLD}${PURPLE}already have the latest cache (skipping cache download)${RESET}" exit 0 fi - + # at this point we only refresh the cache if we want the same cache that is currently available. # we don't by default refresh the cache if the cache if it is simply different from what we have, # because we may be working on a code change that doesn't require a cache refresh (but could trigger one, # which would be annoying to deal with in a development workflow). - + if [ "$LATEST_FINGERPRINT" = "$WANT_FINGERPRINT" ]; then echo -e "${BOLD}${PURPLE}found newer cache! downloading cache...${RESET}" {{ .TASK }} download-test-fixture-cache else echo -e "${BOLD}${PURPLE}found different cache, but isn't clear if it's newer (skipping cache download and manually building)${RESET}" - + {{ .YQ }} eval '.paths[] | "\(.digest) \(.path)"' {{ .LAST_CACHE_PULL_FILE }} > .tmp/last_cache_lines {{ .YQ }} eval '.paths[] | "\(.digest) \(.path)"' {{ .CACHE_PATHS_FILE }} > .tmp/cache_lines diff .tmp/last_cache_lines .tmp/cache_lines || true - + echo -e "${BOLD}${PURPLE}diff with more context...${RESET}" - + diff -U10000 {{ .LAST_CACHE_PULL_FILE }} {{ .CACHE_PATHS_FILE }} || true - + echo -e "${BOLD}${PURPLE}detected changes to input material, manually building fixtures...${RESET}" - + {{ .TASK }} build-fixtures fi @@ -364,7 +365,7 @@ tasks: BOLD='\033[1m' YELLOW='\033[0;33m' RESET='\033[0m' - + # Use a for loop with command substitution to avoid subshell issues for dir in $(find . -type d -name 'test-fixtures'); do if [ -f "$dir/Makefile" ]; then @@ -402,15 +403,15 @@ tasks: set -eu oras_command="{{ .ORAS }} push {{ .CACHE_IMAGE }}" - paths=$(cat {{ .CACHE_PATHS_FILE }} | {{ .YQ }} -r '.paths[].path') + paths=$(cat {{ .CACHE_PATHS_FILE }} | {{ .YQ }} -r '.paths[].path') for path in $paths; do oras_command+=" $path" done oras_command+=" {{ .CACHE_PATHS_FILE }}" - + oras_command+=" --annotation org.opencontainers.image.source=https://github.com/{{ .OWNER }}/{{ .PROJECT }}" oras_command+=" --annotation fingerprint=$(cat {{ .CACHE_PATHS_FILE }} | {{ .YQ }} -r '.digest')" - + echo "Executing: $oras_command" eval $oras_command @@ -640,7 +641,7 @@ tasks: BOLD='\033[1m' YELLOW='\033[0;33m' RESET='\033[0m' - + # Use a for loop with command substitution to avoid subshell issues for dir in $(find . -type d -name 'test-fixtures'); do if [ -f "$dir/Makefile" ]; then diff --git a/cmd/syft/internal/test/integration/package_deduplication_test.go b/cmd/syft/internal/test/integration/package_deduplication_test.go index 594c762bc..86eb9fc91 100644 --- a/cmd/syft/internal/test/integration/package_deduplication_test.go +++ b/cmd/syft/internal/test/integration/package_deduplication_test.go @@ -33,7 +33,7 @@ func TestPackageDeduplication(t *testing.T) { "curl-minimal-7.76.1-31.el9": 3, // curl upgrade layer + all above layers "wget-1.21.1-8.el9_4": 4, // wget + all above layers "vsftpd-3.0.5-6.el9": 2, // vsftpd + all above layers - "httpd-2.4.62-1.el9_5.2": 1, // last layer + "httpd-2.4.62-4.el9": 1, // last layer }, }, { @@ -51,7 +51,7 @@ func TestPackageDeduplication(t *testing.T) { "curl-minimal-7.76.1-31.el9": 1, // upgrade "wget-1.21.1-8.el9_4": 1, "vsftpd-3.0.5-6.el9": 1, - "httpd-2.4.62-1.el9_5.2": 1, + "httpd-2.4.62-4.el9": 1, }, }, } diff --git a/syft/pkg/cataloger/php/interpreter_cataloger_test.go b/syft/pkg/cataloger/php/interpreter_cataloger_test.go index 8a1589a2d..2a285f8e0 100644 --- a/syft/pkg/cataloger/php/interpreter_cataloger_test.go +++ b/syft/pkg/cataloger/php/interpreter_cataloger_test.go @@ -18,54 +18,54 @@ func Test_InterpreterCataloger(t *testing.T) { fixture: "image-extensions", expectedPkgs: []string{ // interpreters - "php-cli @ 8.3.21 (/usr/local/bin/php)", - "php-fpm @ 8.3.21 (/usr/local/sbin/php-fpm)", + "php-cli @ 8.3.22 (/usr/local/bin/php)", + "php-fpm @ 8.3.22 (/usr/local/sbin/php-fpm)", // extensions - "bcmath @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/bcmath.so)", - "exif @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/exif.so)", - "ftp @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ftp.so)", - "gd @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gd.so)", - "gmp @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gmp.so)", - "intl @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/intl.so)", - "ldap @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ldap.so)", - "opcache @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/opcache.so)", - "pcntl @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pcntl.so)", - "pdo_mysql @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_mysql.so)", - "pdo_pgsql @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_pgsql.so)", - "sodium @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sodium.so)", - "sysvsem @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sysvsem.so)", + "bcmath @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/bcmath.so)", + "exif @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/exif.so)", + "ftp @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ftp.so)", + "gd @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gd.so)", + "gmp @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gmp.so)", + "intl @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/intl.so)", + "ldap @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ldap.so)", + "opcache @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/opcache.so)", + "pcntl @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pcntl.so)", + "pdo_mysql @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_mysql.so)", + "pdo_pgsql @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_pgsql.so)", + "sodium @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sodium.so)", + "sysvsem @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sysvsem.so)", "zip @ 1.22.3 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/zip.so)", }, expectedRels: []string{ - "bcmath @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/bcmath.so) [dependency-of] php-cli @ 8.3.21 (/usr/local/bin/php)", - "bcmath @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/bcmath.so) [dependency-of] php-fpm @ 8.3.21 (/usr/local/sbin/php-fpm)", - "exif @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/exif.so) [dependency-of] php-cli @ 8.3.21 (/usr/local/bin/php)", - "exif @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/exif.so) [dependency-of] php-fpm @ 8.3.21 (/usr/local/sbin/php-fpm)", - "ftp @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ftp.so) [dependency-of] php-cli @ 8.3.21 (/usr/local/bin/php)", - "ftp @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ftp.so) [dependency-of] php-fpm @ 8.3.21 (/usr/local/sbin/php-fpm)", - "gd @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gd.so) [dependency-of] php-cli @ 8.3.21 (/usr/local/bin/php)", - "gd @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gd.so) [dependency-of] php-fpm @ 8.3.21 (/usr/local/sbin/php-fpm)", - "gmp @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gmp.so) [dependency-of] php-cli @ 8.3.21 (/usr/local/bin/php)", - "gmp @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gmp.so) [dependency-of] php-fpm @ 8.3.21 (/usr/local/sbin/php-fpm)", - "intl @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/intl.so) [dependency-of] php-cli @ 8.3.21 (/usr/local/bin/php)", - "intl @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/intl.so) [dependency-of] php-fpm @ 8.3.21 (/usr/local/sbin/php-fpm)", - "ldap @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ldap.so) [dependency-of] php-cli @ 8.3.21 (/usr/local/bin/php)", - "ldap @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ldap.so) [dependency-of] php-fpm @ 8.3.21 (/usr/local/sbin/php-fpm)", - "opcache @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/opcache.so) [dependency-of] php-cli @ 8.3.21 (/usr/local/bin/php)", - "opcache @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/opcache.so) [dependency-of] php-fpm @ 8.3.21 (/usr/local/sbin/php-fpm)", - "pcntl @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pcntl.so) [dependency-of] php-cli @ 8.3.21 (/usr/local/bin/php)", - "pcntl @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pcntl.so) [dependency-of] php-fpm @ 8.3.21 (/usr/local/sbin/php-fpm)", - "pdo_mysql @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_mysql.so) [dependency-of] php-cli @ 8.3.21 (/usr/local/bin/php)", - "pdo_mysql @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_mysql.so) [dependency-of] php-fpm @ 8.3.21 (/usr/local/sbin/php-fpm)", - "pdo_pgsql @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_pgsql.so) [dependency-of] php-cli @ 8.3.21 (/usr/local/bin/php)", - "pdo_pgsql @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_pgsql.so) [dependency-of] php-fpm @ 8.3.21 (/usr/local/sbin/php-fpm)", - "sodium @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sodium.so) [dependency-of] php-cli @ 8.3.21 (/usr/local/bin/php)", - "sodium @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sodium.so) [dependency-of] php-fpm @ 8.3.21 (/usr/local/sbin/php-fpm)", - "sysvsem @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sysvsem.so) [dependency-of] php-cli @ 8.3.21 (/usr/local/bin/php)", - "sysvsem @ 8.3.21 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sysvsem.so) [dependency-of] php-fpm @ 8.3.21 (/usr/local/sbin/php-fpm)", - "zip @ 1.22.3 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/zip.so) [dependency-of] php-cli @ 8.3.21 (/usr/local/bin/php)", - "zip @ 1.22.3 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/zip.so) [dependency-of] php-fpm @ 8.3.21 (/usr/local/sbin/php-fpm)", + "bcmath @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/bcmath.so) [dependency-of] php-cli @ 8.3.22 (/usr/local/bin/php)", + "bcmath @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/bcmath.so) [dependency-of] php-fpm @ 8.3.22 (/usr/local/sbin/php-fpm)", + "exif @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/exif.so) [dependency-of] php-cli @ 8.3.22 (/usr/local/bin/php)", + "exif @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/exif.so) [dependency-of] php-fpm @ 8.3.22 (/usr/local/sbin/php-fpm)", + "ftp @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ftp.so) [dependency-of] php-cli @ 8.3.22 (/usr/local/bin/php)", + "ftp @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ftp.so) [dependency-of] php-fpm @ 8.3.22 (/usr/local/sbin/php-fpm)", + "gd @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gd.so) [dependency-of] php-cli @ 8.3.22 (/usr/local/bin/php)", + "gd @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gd.so) [dependency-of] php-fpm @ 8.3.22 (/usr/local/sbin/php-fpm)", + "gmp @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gmp.so) [dependency-of] php-cli @ 8.3.22 (/usr/local/bin/php)", + "gmp @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/gmp.so) [dependency-of] php-fpm @ 8.3.22 (/usr/local/sbin/php-fpm)", + "intl @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/intl.so) [dependency-of] php-cli @ 8.3.22 (/usr/local/bin/php)", + "intl @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/intl.so) [dependency-of] php-fpm @ 8.3.22 (/usr/local/sbin/php-fpm)", + "ldap @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ldap.so) [dependency-of] php-cli @ 8.3.22 (/usr/local/bin/php)", + "ldap @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/ldap.so) [dependency-of] php-fpm @ 8.3.22 (/usr/local/sbin/php-fpm)", + "opcache @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/opcache.so) [dependency-of] php-cli @ 8.3.22 (/usr/local/bin/php)", + "opcache @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/opcache.so) [dependency-of] php-fpm @ 8.3.22 (/usr/local/sbin/php-fpm)", + "pcntl @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pcntl.so) [dependency-of] php-cli @ 8.3.22 (/usr/local/bin/php)", + "pcntl @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pcntl.so) [dependency-of] php-fpm @ 8.3.22 (/usr/local/sbin/php-fpm)", + "pdo_mysql @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_mysql.so) [dependency-of] php-cli @ 8.3.22 (/usr/local/bin/php)", + "pdo_mysql @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_mysql.so) [dependency-of] php-fpm @ 8.3.22 (/usr/local/sbin/php-fpm)", + "pdo_pgsql @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_pgsql.so) [dependency-of] php-cli @ 8.3.22 (/usr/local/bin/php)", + "pdo_pgsql @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/pdo_pgsql.so) [dependency-of] php-fpm @ 8.3.22 (/usr/local/sbin/php-fpm)", + "sodium @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sodium.so) [dependency-of] php-cli @ 8.3.22 (/usr/local/bin/php)", + "sodium @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sodium.so) [dependency-of] php-fpm @ 8.3.22 (/usr/local/sbin/php-fpm)", + "sysvsem @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sysvsem.so) [dependency-of] php-cli @ 8.3.22 (/usr/local/bin/php)", + "sysvsem @ 8.3.22 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/sysvsem.so) [dependency-of] php-fpm @ 8.3.22 (/usr/local/sbin/php-fpm)", + "zip @ 1.22.3 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/zip.so) [dependency-of] php-cli @ 8.3.22 (/usr/local/bin/php)", + "zip @ 1.22.3 (/usr/local/lib/php/extensions/no-debug-non-zts-20230831/zip.so) [dependency-of] php-fpm @ 8.3.22 (/usr/local/sbin/php-fpm)", }, }, { diff --git a/test/cli/dir_root_scan_regression_test.go b/test/cli/dir_root_scan_regression_test.go index 6fbea309a..c7788b914 100644 --- a/test/cli/dir_root_scan_regression_test.go +++ b/test/cli/dir_root_scan_regression_test.go @@ -35,7 +35,5 @@ func TestDirectoryScanCompletesWithinTimeout(t *testing.T) { for _, traitFn := range assertions { traitFn(t, stdout, stderr, cmd.ProcessState.ExitCode()) } - logOutputOnFailure(t, cmd, stdout, stderr) - } diff --git a/test/cli/utils_test.go b/test/cli/utils_test.go index 52ce1fa28..ad223c728 100644 --- a/test/cli/utils_test.go +++ b/test/cli/utils_test.go @@ -81,18 +81,23 @@ func pullDockerImage(t testing.TB, image string) { // docker run -v $(pwd)/sbom:/sbom cyclonedx/cyclonedx-cli:latest validate --input-format json --input-version v1_4 --input-file /sbom func runCycloneDXInDocker(t testing.TB, env map[string]string, image string, f *os.File, args ...string) (*exec.Cmd, string, string) { - allArgs := append( - []string{ - "run", - "-t", - "-v", - fmt.Sprintf("%s:/sbom", f.Name()), - image, - }, - args..., - ) + t.Helper() + + allArgs := []string{"run", "-t"} + + if runtime.GOARCH == "arm64" { + t.Logf("Detected %s/%s — adding --platform=linux/amd64 for emulation", runtime.GOOS, runtime.GOARCH) + allArgs = append(allArgs, "--platform=linux/amd64") + } + + allArgs = append(allArgs, "-v", fmt.Sprintf("%s:/sbom", f.Name())) + + allArgs = append(allArgs, image) + allArgs = append(allArgs, args...) + cmd := exec.Command("docker", allArgs...) stdout, stderr, _ := runCommand(cmd, env) + return cmd, stdout, stderr } @@ -287,6 +292,10 @@ func getSyftBinaryLocationByOS(t testing.TB, goOS string) string { if runtime.GOARCH == "amd64" { archPath = fmt.Sprintf("%s_v1", archPath) } + + if runtime.GOARCH == "arm64" { + archPath = fmt.Sprintf("%s_v8.0", archPath) + } // note: there is a subtle - vs _ difference between these versions switch goOS { case "darwin", "linux":