fetch.sh
1 #! /usr/bin/env atf-sh 2 3 . $(atf_get_srcdir)/test_environment.sh 4 5 TEST_ROOT=${TMPDIR} 6 CONF=${TEST_ROOT}/conf 7 REPOS=${TEST_ROOT}/repos 8 REPO=${TEST_ROOT}/repo 9 DB=${TEST_ROOT}/db 10 CACHE=${TEST_ROOT}/cache 11 WORK=${TEST_ROOT}/work 12 13 PKG_DBDIR=${DB} 14 15 tests_init \ 16 fetch_dep_success \ 17 fetch_missing \ 18 fetch_missing_dep \ 19 fetch_missing_file \ 20 fetch_missing_dep_file 21 22 test_setup() 23 { 24 variant=$1 25 atf_check rm -rf ${TEST_ROOT}/* 26 atf_check mkdir -p ${CONF} ${REPOS} ${REPO} ${DB} ${CACHE} ${WORK} 27 # Do a local config to avoid permissions-on-system-db errors. 28 if ! cat > ${CONF}/pkg.conf << EOF 29 PKG_CACHEDIR=${CACHE} 30 PKG_DBDIR=${DB} 31 REPOS_DIR=[ 32 ${REPOS} 33 ] 34 repositories: { 35 test: { url : file://${REPO} } 36 } 37 EOF 38 then 39 atf_fail 40 fi 41 # Create two packages so we at least have a repo. 42 atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg ${WORK}/test test 1 /usr/local 43 if ! cat << EOF >> ${WORK}/test.ucl 44 deps: { 45 b: { 46 origin: "b", 47 version: "1" 48 } 49 } 50 EOF 51 then 52 atf_fail 53 fi 54 atf_check \ 55 -o ignore \ 56 -e empty \ 57 -s exit:0 \ 58 pkg -C "${CONF}/pkg.conf" create -o ${REPO} -M ${WORK}/test.ucl 59 atf_check rm -f ${WORK}/* 60 61 if [ "${variant}" != "missing-pkg" ]; then 62 atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg ${WORK}/b b 1 /usr/local 63 atf_check \ 64 -o ignore \ 65 -e empty \ 66 -s exit:0 \ 67 pkg -C "${CONF}/pkg.conf" create -o ${REPO} -M ${WORK}/b.ucl 68 atf_check rm -f ${WORK}/* 69 fi 70 71 atf_check \ 72 -o ignore \ 73 -e empty \ 74 -s exit:0 \ 75 pkg -C "${CONF}/pkg.conf" repo ${REPO} 76 77 if [ "${variant}" = "missing-file" ]; then 78 atf_check rm -f ${REPO}/test-1.pkg 79 fi 80 if [ "${variant}" = "missing-dep-file" ]; then 81 atf_check rm -f ${REPO}/b-1.pkg 82 fi 83 84 cat << EOF > ${REPOS}/test.conf 85 test: { 86 url: file:///${REPO}, 87 enabled: true 88 } 89 EOF 90 atf_check \ 91 -o ignore \ 92 pkg -C "${CONF}/pkg.conf" update 93 pkg -C "${CONF}/pkg.conf" search . 94 } 95 96 fetch_dep_success_body() 97 { 98 test_setup 99 100 atf_check \ 101 -o ignore \ 102 -e empty \ 103 -s exit:0 \ 104 pkg -C "${CONF}/pkg.conf" fetch -U -r test -y -d test 105 } 106 107 fetch_missing_body() 108 { 109 test_setup 110 111 atf_check \ 112 -o ignore \ 113 -e not-empty \ 114 -s not-exit:0 \ 115 pkg -C "${CONF}/pkg.conf" fetch -r test -y missing 116 } 117 118 fetch_missing_dep_body() 119 { 120 test_setup missing-pkg 121 122 atf_check \ 123 -o ignore \ 124 -e match:"pkg: test has a missing dependency: b$" \ 125 -s not-exit:0 \ 126 pkg -C "${CONF}/pkg.conf" fetch -r test -d -y test 127 } 128 129 fetch_missing_file_body() 130 { 131 test_setup missing-file 132 133 atf_check \ 134 -o ignore \ 135 -e match:"cached package test-1: file://.*/test-1.pkg is missing from repo" \ 136 -s not-exit:0 \ 137 pkg -C "${CONF}/pkg.conf" fetch -r test -d -y test 138 } 139 140 fetch_missing_dep_file_body() 141 { 142 test_setup missing-dep-file 143 144 atf_check \ 145 -o ignore \ 146 -e match:"cached package b-1: file://.*/b-1.pkg is missing from repo" \ 147 -s not-exit:0 \ 148 pkg -C "${CONF}/pkg.conf" fetch -r test -d -y test 149 } 150