github.com/nextlinux/gosbom@v0.81.1-0.20230627115839-1ff50c281391/test/compare/deb.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_TYPE=deb 11 WORK_DIR=`mktemp -d -t "gosbom-acceptance-test-${TEST_TYPE}-XXXXXX"` 12 NORMAL_TEST_IMAGE=$(echo ${TEST_IMAGE} | tr ':' '-' ) 13 REPORT=${WORK_DIR}/acceptance-${TEST_TYPE}-${NORMAL_TEST_IMAGE}.json 14 GOLDEN_REPORT=${ACC_DIR}/test-fixtures/acceptance-${NORMAL_TEST_IMAGE}.json 15 16 # check if tmp dir was created 17 if [[ ! "${WORK_DIR}" || ! -d "${WORK_DIR}" ]]; then 18 echo "Could not create temp dir" 19 exit 1 20 fi 21 22 function cleanup { 23 # we should still preserve previous failures 24 exit_code=$? 25 rm -rf "${WORK_DIR}" 26 exit ${exit_code} 27 } 28 29 trap cleanup EXIT 30 31 # fetch test image 32 docker pull ${TEST_IMAGE} 33 34 # install and run gosbom 35 docker run --rm \ 36 -v /var/run/docker.sock://var/run/docker.sock \ 37 -v /${PWD}:/src \ 38 -v ${WORK_DIR}:${WORK_DIR} \ 39 -e GOSBOM_CHECK_FOR_APP_UPDATE=0 \ 40 -w /src \ 41 ubuntu:latest \ 42 /bin/bash -x -c "\ 43 DEBIAN_FRONTEND=noninteractive apt install ${DISTDIR}/gosbom_*_linux_amd64.deb -y && \ 44 gosbom version && \ 45 gosbom packages ${TEST_IMAGE} -vv -o json > ${REPORT} \ 46 " 47 48 # keep the generated report around 49 mkdir -p ${RESULTSDIR} 50 cp ${REPORT} ${RESULTSDIR} 51 52 # compare the results to a known good output 53 ${ACC_DIR}/compare.py \ 54 ${GOLDEN_REPORT} \ 55 ${REPORT} | tee ${RESULTSDIR}/acceptance-${TEST_TYPE}.txt