summaryrefslogtreecommitdiffstats
path: root/test/test.d/pool-transition.sh
blob: 6d82e005ce991562f48312af07803acad1d0c955 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#!/bin/bash

curdir=$(readlink -e $(dirname $0))
. "${curdir}/../lib/common.inc"

testMovePackagesWithoutPool() {
	local arches=('i686' 'x86_64')
	local pkgs=('pkg-simple-a' 'pkg-simple-b' 'pkg-split-a' 'pkg-split-b')
	local pkgbase
	local arch
	local pkg
	local old

	for pkgbase in ${pkgs[@]}; do
		for arch in ${arches[@]}; do
			releasePackage testing ${pkgbase} ${arch}
		done
	done

	../db-update

	# transform two packages to old style layout
	for arch in ${arches[@]}; do
		for old in 0 2; do
			for pkg in "${pkgdir}/${pkgs[${old}]}"/*-${arch}.pkg.tar.*; do
				pkg=$(basename $pkg)
				mv -f "${FTP_BASE}/${PKGPOOL}/${pkg}" "${FTP_BASE}/testing/os/${arch}/${pkg}"
			done
		done
	done

	../cron-jobs/ftpdir-cleanup >/dev/null

	../db-move testing extra ${pkgs[@]}

	../cron-jobs/ftpdir-cleanup >/dev/null

	for pkgbase in ${pkgs[@]}; do
		for arch in ${arches[@]}; do
			for pkg in "${pkgdir}/${pkgbase}"/*-${arch}.pkg.tar.*; do
				checkPackage extra $(basename ${pkg}) ${arch}
			done
			checkRemovedPackage testing ${pkgbase} ${arch}
		done
	done
}

testUpdateAnyPackageWithoutPool() {
	local pkgname='pkg-any-a'
	local pkg1='pkg-any-a-1-1-any.pkg.tar.xz'
	local pkg2='pkg-any-a-1-2-any.pkg.tar.xz'
	local arch


	releasePackage extra pkg-any-a any
	../db-update
	# transform two packages to old style layout
	mv -f "${FTP_BASE}/${PKGPOOL}/${pkg1}" "${FTP_BASE}/extra/os/any"
	for arch in i686 x86_64; do
		ln -sf "../any/${pkg1}" "${FTP_BASE}/extra/os/${arch}"
	done

	pushd "${TMP}/svn-packages-copy/${pkgname}/trunk/" >/dev/null
	sed 's/pkgrel=1/pkgrel=2/g' -i PKGBUILD
	svn commit -q -m"update pkg to pkgrel=2" >/dev/null
	extra-i686-build >/dev/null 2>&1
	mv "${pkg2}" "${pkgdir}/${pkgname}/"
	popd >/dev/null

	releasePackage extra ${pkgname} any
	../db-update
	rm -f "${pkgdir}/${pkgname}/${pkg2}"

	../cron-jobs/ftpdir-cleanup >/dev/null

	checkAnyPackage extra "${pkg2}"

	[ -f "${FTP_BASE}/${PKGPOOL}/${pkg1}" ] && fail "${PKGPOOL}/${pkg1} found"
	for arch in any i686 x86_64; do
		[ -f "${FTP_BASE}/extra/os/${arch}/${pkg1}" ] && fail "extra/os/${arch}/${pkg1} found"
	done
}

testMoveAnyPackagesWithoutPool() {
	local pkgs=('pkg-any-a' 'pkg-any-b')
	local pkgbase
	local arch
	local pkg

	for pkgbase in ${pkgs[@]}; do
		releasePackage testing ${pkgbase} any
	done

	../db-update

	# transform a package to old style layout
	for pkg in "${pkgdir}/${pkgs[0]}"/*-any.pkg.tar.*; do
		pkg=$(basename $pkg)
		mv -f "${FTP_BASE}/${PKGPOOL}/${pkg}" "${FTP_BASE}/testing/os/any/${pkg}"
		for arch in i686 x86_64; do
			ln -sf "../any/${pkg}" "${FTP_BASE}/testing/os/${arch}/${pkg}"
		done
	done

	../cron-jobs/ftpdir-cleanup >/dev/null

	../db-move testing extra ${pkgs[@]}

	../cron-jobs/ftpdir-cleanup >/dev/null

	for pkgbase in ${pkgs[@]}; do
		for pkg in "${pkgdir}/${pkgbase}"/*-any.pkg.tar.*; do
			checkAnyPackage extra $(basename ${pkg})
		done
		checkRemovedAnyPackage testing ${pkgbase}
	done

	for pkg in "${pkgdir}/${pkgs[0]}"/*-any.pkg.tar.*; do
		pkg=$(basename $pkg)
		for arch in any i686 x86_64; do
			[ -f "${FTP_BASE}/testing/os/${arch}/${pkg}" ] && fail "testing/os/${arch}/${pkg} found"
		done
	done
}

testUpdateSameAnyPackageToDifferentRepositoriesWithoutPool() {
	local pkg
	local arch

	releasePackage extra pkg-any-a any
	../db-update

	# transform a package to old style layout
	for pkg in "${pkgdir}/pkg-any-a"/*-any.pkg.tar.*; do
		pkg=$(basename $pkg)
		mv -f "${FTP_BASE}/${PKGPOOL}/${pkg}" "${FTP_BASE}/extra/os/any/${pkg}"
		for arch in i686 x86_64; do
			ln -sf "../any/${pkg}" "${FTP_BASE}/extra/os/${arch}/${pkg}"
		done
	done

	releasePackage testing pkg-any-a any
	../db-update >/dev/null 2>&1 && (fail 'Adding an existing package to another repository should fail'; return 1)

	for arch in i686 x86_64; do
		( [ -r "${FTP_BASE}/testing/os/${arch}/testing${DBEXT%.tar.*}" ] \
			&& bsdtar -xf "${FTP_BASE}/testing/os/${arch}/testing${DBEXT%.tar.*}" -O | grep -q pkg-any-a) \
			&& fail "pkg-any-a should not be in testing/os/${arch}/testing${DBEXT%.tar.*}"
	done
}

. "${curdir}/../lib/shunit2"