github.com/lineaje-labs/syft@v0.98.1-0.20231227153149-9e393f60ff1b/test/compare/mac.sh (about) 1 #!/usr/bin/env bash 2 set -eux 3 set -o pipefail 4 5 DISTDIR=$1 6 ACC_DIR=$2 7 TEST_IMAGE=$3 8 RESULTSDIR=$4 9 10 TEST_IMAGE_TAR=image.tar 11 TEST_TYPE=mac 12 WORK_DIR=`mktemp -d -t "syft-acceptance-test-${TEST_TYPE}-XXXXXX"` 13 NORMAL_TEST_IMAGE=$(echo ${TEST_IMAGE} | tr ':' '-' ) 14 REPORT=${WORK_DIR}/acceptance-${TEST_TYPE}-${NORMAL_TEST_IMAGE}.json 15 GOLDEN_REPORT=${ACC_DIR}/test-fixtures/acceptance-${NORMAL_TEST_IMAGE}.json 16 17 # check if tmp dir was created 18 if [[ ! "${WORK_DIR}" || ! -d "${WORK_DIR}" ]]; then 19 echo "Could not create temp dir" 20 exit 1 21 fi 22 23 function cleanup { 24 # we should still preserve previous failures 25 exit_code=$? 26 rm -rf "${WORK_DIR}" 27 exit ${exit_code} 28 } 29 30 trap cleanup EXIT 31 32 # fetch test image 33 if [[ -f ${TEST_IMAGE_TAR} ]] 34 then 35 echo "using existing image" 36 else 37 skopeo --version || brew install skopeo 38 skopeo --override-os linux copy "docker://docker.io/${TEST_IMAGE}" "docker-archive:${TEST_IMAGE_TAR}" 39 fi 40 41 # run syft 42 SYFT_PATH="${DISTDIR}/darwin-build_darwin_amd64_v1/syft" 43 chmod 755 "${SYFT_PATH}" 44 "${SYFT_PATH}" version 45 SYFT_CHECK_FOR_APP_UPDATE=0 "${SYFT_PATH}" packages docker-archive:${TEST_IMAGE_TAR} -vv -o json > "${REPORT}" 46 47 # keep the generated report around 48 mkdir -p ${RESULTSDIR} 49 cp ${REPORT} ${RESULTSDIR} 50 51 # compare the results to a known good output 52 ${ACC_DIR}/compare.py \ 53 ${GOLDEN_REPORT} \ 54 ${REPORT} | tee ${RESULTSDIR}/acceptance-${TEST_TYPE}.txt