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