156 lines
5 KiB
Bash
Executable file
156 lines
5 KiB
Bash
Executable file
#!/bin/sh
|
|
set -e
|
|
|
|
TESTDIR="$(readlink -f "$(dirname "$0")")"
|
|
. "$TESTDIR/framework"
|
|
|
|
setupenvironment
|
|
configarchitecture 'amd64'
|
|
|
|
for T in T1 T2; do
|
|
mkdir "aptarchive/${T}"
|
|
ln -s ../../incoming "aptarchive/${T}/pool"
|
|
done
|
|
|
|
buildsimplenativepackage 'awesome' 'amd64' '2' 'stable' 'Depends: libfoo (>= 2)'
|
|
buildsimplenativepackage 'libfoo' 'amd64' '2' 'stable'
|
|
setupaptarchive --no-update
|
|
mv aptarchive/dists aptarchive/T1
|
|
rm incoming/stable.main.pkglist incoming/stable.main.srclist
|
|
|
|
buildsimplenativepackage 'awesome' 'amd64' '3' 'stable' 'Depends: libfoo (>= 2)'
|
|
setupaptarchive --no-update
|
|
mv aptarchive/dists aptarchive/T2
|
|
rm incoming/stable.main.pkglist incoming/stable.main.srclist
|
|
|
|
buildsimplenativepackage 'libfoo' 'amd64' '42' 'stable'
|
|
buildsimplenativepackage 'awesome' 'amd64' '42' 'stable'
|
|
setupaptarchive --no-update
|
|
|
|
changetowebserver
|
|
sed -i 's/http:/[snapshot=enable] http:/' rootdir/etc/apt/sources.list.d/*
|
|
echo "Acquire::Snapshots::URI::Host::localhost \"http://localhost:${APTHTTPPORT}/@SNAPSHOTID@/\";" > rootdir/etc/apt/apt.conf.d/snapshot.conf
|
|
testsuccess aptget update --snapshot T1
|
|
testsuccess aptget update --snapshot T2 --no-list-cleanup
|
|
|
|
insertinstalledpackage 'awesome' 'amd64' '1' 'Depends: libfoo (>= 1)'
|
|
insertinstalledpackage 'libfoo' 'amd64' '1'
|
|
|
|
msgmsg 'Snapshotting policy'
|
|
testsuccessequal "libfoo:
|
|
Installed: 1
|
|
Candidate: 42
|
|
Version table:
|
|
42 500
|
|
500 http://localhost:${APTHTTPPORT} stable/main amd64 Packages
|
|
*** 1 100
|
|
100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
|
|
awesome:
|
|
Installed: 1
|
|
Candidate: 42
|
|
Version table:
|
|
42 500
|
|
500 http://localhost:${APTHTTPPORT} stable/main amd64 Packages
|
|
*** 1 100
|
|
100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" apt policy libfoo awesome
|
|
testsuccessequal "libfoo:
|
|
Installed: 1
|
|
Candidate: 2
|
|
Version table:
|
|
2 500
|
|
500 http://localhost:${APTHTTPPORT}/T1 stable/main amd64 Packages
|
|
*** 1 100
|
|
100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
|
|
awesome:
|
|
Installed: 1
|
|
Candidate: 2
|
|
Version table:
|
|
2 500
|
|
500 http://localhost:${APTHTTPPORT}/T1 stable/main amd64 Packages
|
|
*** 1 100
|
|
100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" apt policy libfoo awesome -S T1
|
|
testsuccessequal "libfoo:
|
|
Installed: 1
|
|
Candidate: 1
|
|
Version table:
|
|
*** 1 100
|
|
100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
|
|
awesome:
|
|
Installed: 1
|
|
Candidate: 3
|
|
Version table:
|
|
3 500
|
|
500 http://localhost:${APTHTTPPORT}/T2 stable/main amd64 Packages
|
|
*** 1 100
|
|
100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" apt policy libfoo awesome -S T2
|
|
|
|
|
|
msgmsg 'Snapshotting show'
|
|
testsuccessequalgrep() {
|
|
local CMP="$1"
|
|
local GREP="$2"
|
|
shift 2
|
|
testsuccess "$@"
|
|
mv rootdir/tmp/testsuccess.output base.output
|
|
testsuccessequal "$CMP" grep "$GREP" base.output
|
|
}
|
|
testsuccessequalgrep 'Version: 42
|
|
Version: 1
|
|
Version: 42
|
|
Version: 1' '^Version: ' aptcache show libfoo awesome
|
|
testsuccessequalgrep 'Version: 2
|
|
Version: 1
|
|
Version: 2
|
|
Version: 1' '^Version: ' aptcache show libfoo awesome -S T1
|
|
testsuccessequalgrep 'Version: 1
|
|
Version: 3
|
|
Version: 1' '^Version: ' aptcache show libfoo awesome -S T2
|
|
|
|
|
|
msgmsg 'Snapshotting list'
|
|
testsuccessequal 'Listing...
|
|
awesome/stable 42 amd64 [upgradable from: 1]
|
|
libfoo/stable 42 amd64 [upgradable from: 1]' apt list --upgradeable
|
|
testsuccessequal 'Listing...
|
|
awesome/stable 2 amd64 [upgradable from: 1]
|
|
libfoo/stable 2 amd64 [upgradable from: 1]' apt list --upgradeable -S T1
|
|
testsuccessequal "Listing...
|
|
awesome/stable 3 amd64 [upgradable from: 1]
|
|
N: There is 1 additional version. Please use the '-a' switch to see it" apt list --upgradeable -S T2
|
|
|
|
|
|
msgmsg 'Snapshotting upgrade'
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
Calculating upgrade...
|
|
The following packages will be upgraded:
|
|
awesome libfoo
|
|
2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst awesome [1] (42 stable [amd64])
|
|
Inst libfoo [1] (42 stable [amd64])
|
|
Conf awesome (42 stable [amd64])
|
|
Conf libfoo (42 stable [amd64])' apt upgrade -s
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
Calculating upgrade...
|
|
The following packages will be upgraded:
|
|
awesome libfoo
|
|
2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst libfoo [1] (2 stable [amd64])
|
|
Inst awesome [1] (2 stable [amd64])
|
|
Conf libfoo (2 stable [amd64])
|
|
Conf awesome (2 stable [amd64])' apt upgrade -s -S T1
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
Calculating upgrade...
|
|
The following packages have been kept back:
|
|
awesome
|
|
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.' apt upgrade -s -S T2
|
|
|
|
msgmsg 'Snapshotting real installs'
|
|
testsuccessequalgrep 'Version: 1' '^Version: ' apt show libfoo/now
|
|
testsuccess apt install libfoo -S T1 -y
|
|
testsuccessequalgrep 'Version: 2' '^Version: ' apt show libfoo/now
|
|
testsuccessequalgrep 'Version: 1' '^Version: ' apt show awesome/now
|
|
testsuccess apt upgrade -S T2 -y
|
|
testsuccessequalgrep 'Version: 3' '^Version: ' apt show awesome/now
|