/ tests / frontend / repo.sh
repo.sh
  1  #! /usr/bin/env atf-sh
  2  
  3  . $(atf_get_srcdir)/test_environment.sh
  4  
  5  tests_init \
  6  	repo_v2 \
  7  	repo_multiversion \
  8  	repo_multiformat \
  9  	repo_content
 10  
 11  repo_v2_body() {
 12  	touch plop
 13  	touch bla
 14  	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg test test 1 "${TMPDIR}"
 15  	cat >> test.ucl << EOF
 16  files: {
 17  	"${TMPDIR}/plop": ""
 18  	"${TMPDIR}/bla": ""
 19  }
 20  EOF
 21  
 22  	cat > meta.ucl << EOF
 23  version = 2
 24  EOF
 25  	atf_check \
 26  		-o empty \
 27  		-e empty \
 28  		-s exit:0 \
 29  		pkg create -M test.ucl
 30  
 31  	atf_check \
 32  		-o inline:"Creating repository in .:  done\nPacking files for repository:  done\n" \
 33  		-e empty \
 34  		-s exit:0 \
 35  		pkg repo --meta-file meta.ucl .
 36  
 37  	ln -s test-1.pkg test.pkg
 38  
 39  	atf_check \
 40  		-o inline:"Creating repository in .:  done\nPacking files for repository:  done\n" \
 41  		-e empty \
 42  		-s exit:0 \
 43  		pkg repo --meta-file meta.ucl .
 44  
 45  	if [ `uname -s` = "Darwin" ]; then
 46  		atf_pass
 47  	fi
 48  
 49  	atf_check -s exit:127 -o ignore -e ignore "ls digest.pkg"
 50  
 51  	mkdir Latest
 52  	ln -s test-1.pkg Latest/test.pkg
 53  
 54  	atf_check \
 55  		-o inline:"Creating repository in .:  done\nPacking files for repository:  done\n" \
 56  		-e empty \
 57  		-s exit:0 \
 58  		pkg repo .
 59  
 60  }
 61  
 62  repo_multiversion_body() {
 63  	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg test test 1.0 "${TMPDIR}"
 64  	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg test1 test 1.1 "${TMPDIR}"
 65  	for i in test test1; do
 66  		atf_check pkg create -M $i.ucl
 67  	done
 68  
 69  	atf_check \
 70  		-o inline:"Creating repository in .:  done\nPacking files for repository:  done\n" \
 71  		pkg repo .
 72  
 73  	cat > pkg.conf << EOF
 74  PKG_DBDIR=${TMPDIR}
 75  REPOS_DIR=[]
 76  repositories: {
 77  	local: { url : file://${TMPDIR} }
 78  }
 79  EOF
 80  
 81  	atf_check -o ignore \
 82  		pkg -C ./pkg.conf update
 83  
 84  	# Ensure we can pickup the old version
 85  	atf_check -o match:"Installing test-1\.0" \
 86  		pkg -C ./pkg.conf install -y test-1.0
 87  
 88  	atf_check -o match:"Upgrading.*to 1\.1" \
 89  		pkg -C ./pkg.conf install -y test
 90  
 91  	atf_check -o ignore pkg delete -y test
 92  
 93  	atf_check -o match:"Installing test-1\.0" \
 94  		pkg -C ./pkg.conf install -y test-1.0
 95  
 96  	atf_check -o match:"Upgrading.*to 1\.1" \
 97  		pkg -C ./pkg.conf upgrade -y
 98  
 99  	atf_check -o ignore pkg -C ./pkg.conf delete -y test
100  
101  	# Ensure the latest version is installed
102  	atf_check -o match:"Installing test-1.1" \
103  		pkg -C ./pkg.conf install -y test
104  }
105  
106  repo_multiformat_body() {
107  	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg test test 1.0 "${TMPDIR}"
108  	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg plop plop 1.1 "${TMPDIR}"
109  	atf_check pkg create -M test.ucl
110  	atf_check pkg create --format tar -M plop.ucl
111  
112  	atf_check \
113  		-o inline:"Creating repository in .:  done\nPacking files for repository:  done\n" \
114  		pkg repo .
115  
116  	cat > pkg.conf << EOF
117  PKG_DBDIR=${TMPDIR}
118  REPOS_DIR=[]
119  repositories: {
120  	local: { url : file://${TMPDIR} }
121  }
122  EOF
123  
124  	atf_check -o ignore \
125  		pkg -C ./pkg.conf update
126  
127  	# Ensure we can pickup the old version
128  	atf_check -o match:"Installing test-1\.0" \
129  		pkg -C ./pkg.conf install -y test
130  
131  	atf_check -o match:"Installing plop-1\.1" \
132  		pkg -C ./pkg.conf install -y plop
133  }
134  
135  repo_symlinks_body() {
136  	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg test test 1.0 "${TMPDIR}"
137  	atf_check pkg create --format txz -M test.ucl
138  	mkdir repo
139  	ln -sf ../test-1.0.pkg ./repo/meh-1.0.pkg
140  	atf_check -o ignore pkg repo repo
141  	cat > pkg.conf << EOF
142  PKG_DBDIR=${TMPDIR}
143  REPOS_DIR=[]
144  repositories: {
145  	local: { url : file://${TMPDIR}/repo }
146  }
147  EOF
148  
149  	atf_check -o ignore \
150  		pkg -C ./pkg.conf update
151  	atf_check -o inline:"test\n" \
152  		pkg -C ./pkg.conf rquery "%n"
153  	atf_check -o inline:"test\n" \
154  		pkg -C ./pkg.conf rquery -a "%n"
155  	atf_check -o inline:"test\n" \
156  		pkg -C ./pkg.conf rquery -e "%n == test" "%n"
157  	atf_check -o empty \
158  		pkg -C ./pkg.conf rquery -e "%n != test" "%n"
159  	atf_check -o inline:"test\n" \
160  		pkg -C ./pkg.conf rquery -e "%n == test" "%n" test
161  	atf_check -o empty \
162  		  -s exit:1 \
163  		pkg -C ./pkg.conf rquery -e "%n != test" "%n" test
164  	atf_check -o empty \
165  		  -s exit:1 \
166  		pkg -C ./pkg.conf rquery -e "%n == test" "%n" nottest
167  
168  	rm -rf repo
169  	mkdir repo
170  	cp test-1.0.pkg repo/
171  	ln -fs test-1.0.pkg ./repo/meh-1.0.pkg
172  
173  	atf_check -o ignore pkg repo repo
174  	atf_check -o ignore \
175  		pkg -C ./pkg.conf update -f
176  	atf_check -o inline:"test\n" \
177  		pkg -C ./pkg.conf rquery -a "%n"
178  }
179  
180  repo_content_body() {
181  	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg test test 1.0 "${TMPDIR}"
182  	atf_check pkg create --format txz -M test.ucl
183  	atf_check -o ignore pkg repo .
184  	nb=$(tar -xf packagesite.pkg -O - packagesite.yaml | wc -l)
185  	[ $nb -eq 1 ] || atf_fail "packagesite has $nb entries instead of 1"
186  }