diff options
Diffstat (limited to '')
-rwxr-xr-x | test/integration/test-phased-updates | 300 | ||||
-rwxr-xr-x | test/integration/test-phased-updates-upgrade | 357 |
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 |