summaryrefslogtreecommitdiffstats
path: root/test/integration/test-phased-updates
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:00:48 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:00:48 +0000
commit851b6a097165af4d51c0db01b5e05256e5006896 (patch)
tree5f7c388ec894a7806c49a99f3bdb605d0b299a7c /test/integration/test-phased-updates
parentInitial commit. (diff)
downloadapt-851b6a097165af4d51c0db01b5e05256e5006896.tar.xz
apt-851b6a097165af4d51c0db01b5e05256e5006896.zip
Adding upstream version 2.6.1.upstream/2.6.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rwxr-xr-xtest/integration/test-phased-updates300
-rwxr-xr-xtest/integration/test-phased-updates-upgrade357
2 files changed, 657 insertions, 0 deletions
diff --git a/test/integration/test-phased-updates b/test/integration/test-phased-updates
new file mode 100755
index 0000000..7377f91
--- /dev/null
+++ b/test/integration/test-phased-updates
@@ -0,0 +1,300 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+echo 'Debug::Phasing "1";' > rootdir/etc/apt/apt.conf.d/debug-phasing
+echo 'APT::Get::Phase-Policy "1";' > rootdir/etc/apt/apt.conf.d/debug-phasing
+configarchitecture 'i386' 'armel'
+
+
+insertinstalledpackage 'phased1' 'all' '1'
+insertinstalledpackage 'phased2' 'all' '1'
+
+insertpackage 'unstable' 'phased1' 'all' '10' 'Phased-Update-Percentage: 10'
+insertpackage 'unstable' 'phased2' 'all' '10' 'Phased-Update-Percentage: 10'
+insertpackage 'unstable' 'phased3' 'all' '10' 'Phased-Update-Percentage: 10'
+
+insertpackage 'unstable' 'phased1' 'all' '100' 'Phased-Update-Percentage: 100'
+insertpackage 'unstable' 'phased2' 'all' '100' 'Phased-Update-Percentage: 100'
+insertpackage 'unstable' 'phased3' 'all' '100' 'Phased-Update-Percentage: 100'
+
+insertpackage 'unstable' 'phased1' 'all' '50' 'Phased-Update-Percentage: 50'
+insertpackage 'unstable' 'phased2' 'all' '50' 'Phased-Update-Percentage: 50'
+insertpackage 'unstable' 'phased3' 'all' '50' 'Phased-Update-Percentage: 50'
+
+insertinstalledpackage 'phased-and-pinned' 'all' '1'
+insertpackage 'unstable' 'phased-and-pinned' 'all' '10' 'Phased-Update-Percentage: 0'
+insertpackage 'unstable' 'phased-and-pinned-new' 'all' '10' 'Phased-Update-Percentage: 0'
+
+cat > rootdir/etc/apt/preferences.d/phased-and-pinned << EOF
+Package: phased-and-pinned phased-and-pinned-new
+Pin: release *
+Pin-Priority: -12
+EOF
+
+setupaptarchive
+
+msgmsg "Basic test"
+testsuccessequal "phased1:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 1 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased2:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 1 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 1 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased3:
+ Installed: (none)
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 1 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages" aptcache policy phased1 phased2 phased3
+
+testsuccessequal "phased-and-pinned:
+ Installed: 1
+ Candidate: (none)
+ Version table:
+ 10 -12 (phased 0%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 -12
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" aptcache policy phased-and-pinned
+
+testsuccessequal "phased-and-pinned-new:
+ Installed: (none)
+ Candidate: (none)
+ Version table:
+ 10 -12 (phased 0%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages" aptcache policy phased-and-pinned-new
+
+
+msgmsg "Test for always-include-phased-updates"
+for always in Update-Manager::Always-Include-Phased-Updates APT::Get::Always-Include-Phased-Updates; do
+testsuccessequal "phased1:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 500 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased2:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 500 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased3:
+ Installed: (none)
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 500 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages" aptcache policy phased1 phased2 phased3 -o $always=true
+done
+
+msgmsg "Test for never-include-phased-updates"
+for never in Update-Manager::Never-Include-Phased-Updates APT::Get::Never-Include-Phased-Updates; do
+testsuccessequal "phased1:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 1 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 1 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased2:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 1 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 1 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased3:
+ Installed: (none)
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 1 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 1 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages" aptcache policy phased1 phased2 phased3 -o $never=true
+done
+
+msgmsg "Test that being in a chroot equals always-include-phased-updates"
+testsuccessequal "phased1:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 500 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased2:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 500 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" aptcache policy phased1 phased2 -o Dir::Bin::ischroot=/bin/true
+
+msgmsg "Test that empty machine-id equals always-include-phased-updates"
+testsuccessequal "phased1:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 500 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased2:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 500 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" aptcache policy phased1 phased2 -o Dir::Etc::machine-id=/dev/null -o APT::Machine-Id=""
+
+msgmsg "Test that never-include-phased-updates trumps empty machine-id"
+testsuccessequal "phased1:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 1 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 1 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased2:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 1 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 1 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" aptcache policy phased1 phased2 -o Dir::Etc::machine-id=/dev/null -o APT::Machine-Id="" -o APT::Get::Never-Include-Phased-Updates=1
+
+
+msgmsg "Test that SOURCE_DATE_EPOCH set equals always-include-phased-updates"
+export SOURCE_DATE_EPOCH=0
+testsuccessequal "phased1:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 500 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased2:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 500 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" aptcache policy phased1 phased2
+unset SOURCE_DATE_EPOCH
+
+msgmsg "Test that different machine-id produces different outcome"
+testsuccessequal "phased1:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 1 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased2:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 1 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" aptcache policy phased1 phased2 -o apt::machine-id="00000000000000000000000000000000"
diff --git a/test/integration/test-phased-updates-upgrade b/test/integration/test-phased-updates-upgrade
new file mode 100755
index 0000000..fec8bec
--- /dev/null
+++ b/test/integration/test-phased-updates-upgrade
@@ -0,0 +1,357 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+echo 'Debug::Phasing "1";' > rootdir/etc/apt/apt.conf.d/debug-phasing
+configarchitecture 'i386' 'armel'
+
+
+
+# Test case phased: The package is installed and has a phased update available
+insertinstalledpackage 'phased' 'all' '1'
+insertpackage 'unstable-updates' 'phased' 'all' '3' 'Phased-Update-Percentage: 0'
+
+# Test case phased-security: A phased package is in security and will be installed
+insertinstalledpackage 'phased-security' 'all' '1'
+insertpackage 'unstable-security' 'phased-security' 'all' '2'
+insertpackage 'unstable-updates' 'phased-security' 'all' '3' 'Phased-Update-Percentage: 0'
+
+# Test case phased-dep: A released update depends on the phased dependency phased-dep
+insertinstalledpackage 'phased-dep' 'all' '1'
+insertinstalledpackage 'depends-phased-dep' 'all' '1'
+insertpackage 'unstable-updates' 'phased-dep' 'all' '3' 'Phased-Update-Percentage: 0'
+insertpackage 'unstable-updates' 'depends-phased-dep' 'all' '3' 'Depends: phased-dep (= 3)'
+
+# Test case phased-new: A release update depends on a new package that's phasing
+insertinstalledpackage 'depends-phased-new' 'all' '1'
+insertpackage 'unstable-updates' 'phased-new' 'all' '3' 'Phased-Update-Percentage: 0'
+insertpackage 'unstable-updates' 'depends-phased-new' 'all' '3' 'Depends: phased-new (= 3)'
+
+# Test case phased-dep: A released update depends on the phased dependency phased-dep
+insertinstalledpackage 'ready-dep' 'all' '1'
+insertinstalledpackage 'phased-depends-ready-dep' 'all' '1' 'Depends: ready-dep (= 1)
+Protected: yes'
+insertpackage 'unstable-updates' 'ready-dep' 'all' '3'
+insertpackage 'unstable-updates' 'phased-depends-ready-dep' 'all' '3' 'Depends: ready-dep (= 3)
+Protected: yes
+Phased-Update-Percentage: 0'
+
+setupaptarchive
+
+msgmsg "Testing with default (upgrade-based) implementation"
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following packages have been kept back:
+ depends-phased-dep phased phased-dep phased-depends-ready-dep ready-dep
+The following packages will be upgraded:
+ depends-phased-new phased-security
+2 upgraded, 1 newly installed, 0 to remove and 5 not upgraded.
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased-security [1] (3 unstable-updates [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])" aptget dist-upgrade -s -q
+
+for always in APT::Get::Always-Include-Phased-Updates Update-Manager::Always-Include-Phased-Updates; do
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following packages will be upgraded:
+ depends-phased-dep depends-phased-new phased phased-dep
+ phased-depends-ready-dep phased-security ready-dep
+7 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst phased-dep [1] (3 unstable-updates [all])
+Inst depends-phased-dep [1] (3 unstable-updates [all])
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased [1] (3 unstable-updates [all])
+Inst phased-depends-ready-dep [1] (3 unstable-updates [all]) []
+Inst ready-dep [1] (3 unstable-updates [all])
+Inst phased-security [1] (3 unstable-updates [all])
+Conf phased-dep (3 unstable-updates [all])
+Conf depends-phased-dep (3 unstable-updates [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased (3 unstable-updates [all])
+Conf phased-depends-ready-dep (3 unstable-updates [all])
+Conf ready-dep (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])" aptget dist-upgrade -s -q -o $always=1
+done
+
+SOURCE_DATE_EPOCH=1 testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following packages will be upgraded:
+ depends-phased-dep depends-phased-new phased phased-dep
+ phased-depends-ready-dep phased-security ready-dep
+7 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst phased-dep [1] (3 unstable-updates [all])
+Inst depends-phased-dep [1] (3 unstable-updates [all])
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased [1] (3 unstable-updates [all])
+Inst phased-depends-ready-dep [1] (3 unstable-updates [all]) []
+Inst ready-dep [1] (3 unstable-updates [all])
+Inst phased-security [1] (3 unstable-updates [all])
+Conf phased-dep (3 unstable-updates [all])
+Conf depends-phased-dep (3 unstable-updates [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased (3 unstable-updates [all])
+Conf phased-depends-ready-dep (3 unstable-updates [all])
+Conf ready-dep (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])" aptget dist-upgrade -s -q -o with-source-date-epoch=1
+
+for never in APT::Get::Never-Include-Phased-Updates Update-Manager::Never-Include-Phased-Updates; do
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following packages have been kept back:
+ depends-phased-dep phased phased-dep phased-depends-ready-dep ready-dep
+The following packages will be upgraded:
+ depends-phased-new phased-security
+2 upgraded, 1 newly installed, 0 to remove and 5 not upgraded.
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased-security [1] (3 unstable-updates [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])" aptget dist-upgrade -s -q -o $never=1
+done
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following packages have been kept back:
+ depends-phased-dep phased phased-dep phased-depends-ready-dep ready-dep
+The following packages will be upgraded:
+ depends-phased-new phased-security
+2 upgraded, 1 newly installed, 0 to remove and 5 not upgraded.
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased-security [1] (3 unstable-updates [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])" aptget upgrade -s -q --with-new-pkgs
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ depends-phased-dep depends-phased-new phased phased-dep
+ phased-depends-ready-dep ready-dep
+The following packages will be upgraded:
+ phased-security
+1 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.
+Inst phased-security [1] (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])" aptget upgrade -s -q
+
+for upgrade in "dist-upgrade" "upgrade --with-new-pkgs"; do
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following packages have been kept back:
+ phased phased-depends-ready-dep ready-dep
+The following packages will be upgraded:
+ depends-phased-dep depends-phased-new phased-dep phased-security
+4 upgraded, 1 newly installed, 0 to remove and 3 not upgraded.
+Inst phased-dep [1] (3 unstable-updates [all])
+Inst depends-phased-dep [1] (3 unstable-updates [all])
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased-security [1] (3 unstable-updates [all])
+Conf phased-dep (3 unstable-updates [all])
+Conf depends-phased-dep (3 unstable-updates [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])" aptget $upgrade -s -q depends-phased-dep
+done
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ depends-phased-new phased phased-depends-ready-dep ready-dep
+The following packages will be upgraded:
+ depends-phased-dep phased-dep phased-security
+3 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.
+Inst phased-dep [1] (3 unstable-updates [all])
+Inst depends-phased-dep [1] (3 unstable-updates [all])
+Inst phased-security [1] (3 unstable-updates [all])
+Conf phased-dep (3 unstable-updates [all])
+Conf depends-phased-dep (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])" aptget upgrade -s -q depends-phased-dep
+
+# install does not respect phasing
+testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ phased-dep
+The following packages will be upgraded:
+ depends-phased-dep phased phased-dep phased-security
+4 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
+Inst phased-dep [1] (3 unstable-updates [all])
+Inst depends-phased-dep [1] (3 unstable-updates [all])
+Inst phased [1] (3 unstable-updates [all])
+Inst phased-security [1] (3 unstable-updates [all])
+Conf phased-dep (3 unstable-updates [all])
+Conf depends-phased-dep (3 unstable-updates [all])
+Conf phased (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])" aptget install -s -q phased depends-phased-dep phased-security
+
+
+msgmsg "Testing with policy based implementation"
+echo 'APT::Get::Phase-Policy "1";' > rootdir/etc/apt/apt.conf.d/phase-by-policy
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following packages have been kept back:
+ depends-phased-dep ready-dep
+The following packages will be upgraded:
+ depends-phased-new phased-security
+2 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased-security [1] (2 unstable-security [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased-security (2 unstable-security [all])" aptget dist-upgrade -s -q
+
+for always in APT::Get::Always-Include-Phased-Updates Update-Manager::Always-Include-Phased-Updates; do
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following packages will be upgraded:
+ depends-phased-dep depends-phased-new phased phased-dep
+ phased-depends-ready-dep phased-security ready-dep
+7 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst phased-dep [1] (3 unstable-updates [all])
+Inst depends-phased-dep [1] (3 unstable-updates [all])
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased [1] (3 unstable-updates [all])
+Inst phased-depends-ready-dep [1] (3 unstable-updates [all]) []
+Inst ready-dep [1] (3 unstable-updates [all])
+Inst phased-security [1] (3 unstable-updates [all])
+Conf phased-dep (3 unstable-updates [all])
+Conf depends-phased-dep (3 unstable-updates [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased (3 unstable-updates [all])
+Conf phased-depends-ready-dep (3 unstable-updates [all])
+Conf ready-dep (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])" aptget dist-upgrade -s -q -o $always=1
+done
+
+# In the policy implementation, we can update security
+for never in APT::Get::Never-Include-Phased-Updates Update-Manager::Never-Include-Phased-Updates; do
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following packages have been kept back:
+ depends-phased-dep ready-dep
+The following packages will be upgraded:
+ depends-phased-new phased-security
+2 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased-security [1] (2 unstable-security [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased-security (2 unstable-security [all])" aptget dist-upgrade -s -q -o $never=1
+done
+
+SOURCE_DATE_EPOCH=1 testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following packages will be upgraded:
+ depends-phased-dep depends-phased-new phased phased-dep
+ phased-depends-ready-dep phased-security ready-dep
+7 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst phased-dep [1] (3 unstable-updates [all])
+Inst depends-phased-dep [1] (3 unstable-updates [all])
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased [1] (3 unstable-updates [all])
+Inst phased-depends-ready-dep [1] (3 unstable-updates [all]) []
+Inst ready-dep [1] (3 unstable-updates [all])
+Inst phased-security [1] (3 unstable-updates [all])
+Conf phased-dep (3 unstable-updates [all])
+Conf depends-phased-dep (3 unstable-updates [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased (3 unstable-updates [all])
+Conf phased-depends-ready-dep (3 unstable-updates [all])
+Conf ready-dep (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])" aptget dist-upgrade -s -q -o with-source-date-epoch=1
+
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following packages have been kept back:
+ depends-phased-dep ready-dep
+The following packages will be upgraded:
+ depends-phased-new phased-security
+2 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased-security [1] (2 unstable-security [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased-security (2 unstable-security [all])" aptget upgrade -s -q --with-new-pkgs
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ depends-phased-dep depends-phased-new ready-dep
+The following packages will be upgraded:
+ phased-security
+1 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
+Inst phased-security [1] (2 unstable-security [all])
+Conf phased-security (2 unstable-security [all])" aptget upgrade -s -q
+
+# FIXME: We actually would like this to work I think?
+for upgrade in "dist-upgrade" "upgrade --with-new-pkgs" "upgrade" "install"; do
+ testfailure aptget $upgrade -s -q depends-phased-dep
+ testsuccess grep "depends-phased-dep : Depends: phased-dep (= 3) but 1 is to be installed" rootdir/tmp/testfailure.output
+done
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+phased is already the newest version (1).
+The following packages will be upgraded:
+ phased-security
+1 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
+Inst phased-security [1] (2 unstable-security [all])
+Conf phased-security (2 unstable-security [all])" aptget install -s -q phased phased-security