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