/ tests / frontend / fetch.sh
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