1
0
Fork 0
apt/test/integration/test-apt-get-upgrade
Daniel Baumann 6810ba718b
Adding upstream version 3.0.2.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-20 21:10:43 +02:00

220 lines
8.3 KiB
Bash
Executable file

#!/bin/sh
set -e
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
allowremovemanual
configarchitecture "i386"
# simple case
insertpackage 'stable,installed' 'upgrade-simple' 'all' '1.0'
insertpackage 'unstable' 'upgrade-simple' 'all' '2.0'
# upgrade with a new dependency
insertpackage 'stable,installed' 'upgrade-with-new-dep' 'all' '1.0'
insertpackage 'unstable' 'upgrade-with-new-dep' 'all' '2.0' 'Depends: new-dep'
insertpackage 'stable' 'new-dep' 'all' '1.0'
# upgrade with conflict and a new pkg with higher priority than conflict
insertpackage 'stable,installed' 'upgrade-with-conflict' 'all' '1.0'
insertpackage 'unstable' 'upgrade-with-conflict' 'all' '2.0' 'Conflicts: conflicting-dep' 'standard'
insertpackage 'stable,installed' 'conflicting-dep' 'all' '1.0'
# upgrade with conflict and a new pkg with higher priority than conflict
insertpackage 'stable,installed' 'init' 'all' '1'
insertpackage 'unstable' 'init' 'all' '2' 'Pre-Depends: systemd | sysvinit'
insertpackage 'unstable' 'systemd' 'all' '2' 'Conflicts: conflicting-dep'
insertpackage 'unstable' 'sysvinit' 'all' '2'
setupaptarchive
# Test if normal upgrade works as expected
UPGRADE='Reading package lists...
Building dependency tree...
Calculating upgrade...
The following packages have been kept back:
init upgrade-with-conflict upgrade-with-new-dep
The following packages will be upgraded:
upgrade-simple
1 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Inst upgrade-simple [1.0] (2.0 unstable [all])
Conf upgrade-simple (2.0 unstable [all])'
testsuccessequal "$UPGRADE" aptget upgrade -s
testsuccessequal "$UPGRADE" apt upgrade -s --without-new-pkgs
# Test if apt-get upgrade --with-new-pkgs works
UPGRADENEW='Reading package lists...
Building dependency tree...
Calculating upgrade...
The following NEW packages will be installed:
new-dep
The following packages have been kept back:
init upgrade-with-conflict
The following packages will be upgraded:
upgrade-simple upgrade-with-new-dep
2 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
Inst new-dep (1.0 stable [all])
Inst upgrade-simple [1.0] (2.0 unstable [all])
Inst upgrade-with-new-dep [1.0] (2.0 unstable [all])
Conf new-dep (1.0 stable [all])
Conf upgrade-simple (2.0 unstable [all])
Conf upgrade-with-new-dep (2.0 unstable [all])'
if [ "$APT_SOLVER" = "3.0" ]; then
# FIXME: It would be better if we would keep back the upgrade rather than switch to sysvinit,
# but it's not clear that is reliably possible.
UPGRADENEW="Reading package lists...
Building dependency tree...
Calculating upgrade...
The following NEW packages will be installed:
new-dep sysvinit
The following packages have been kept back:
upgrade-with-conflict
The following packages will be upgraded:
init upgrade-simple upgrade-with-new-dep
3 upgraded, 2 newly installed, 0 to remove and 1 not upgraded.
Inst sysvinit (2 unstable [all])
Conf sysvinit (2 unstable [all])
Inst init [1] (2 unstable [all])
Inst new-dep (1.0 stable [all])
Inst upgrade-simple [1.0] (2.0 unstable [all])
Inst upgrade-with-new-dep [1.0] (2.0 unstable [all])
Conf init (2 unstable [all])
Conf new-dep (1.0 stable [all])
Conf upgrade-simple (2.0 unstable [all])
Conf upgrade-with-new-dep (2.0 unstable [all])"
fi
testsuccessequal "$UPGRADENEW" aptget upgrade -s --with-new-pkgs
testsuccessequal "$UPGRADENEW" apt upgrade -s
# Test if apt-get dist-upgrade works
testsuccessequal 'Reading package lists...
Building dependency tree...
Calculating upgrade...
The following packages will be REMOVED:
conflicting-dep
The following NEW packages will be installed:
new-dep systemd
The following packages will be upgraded:
init upgrade-simple upgrade-with-conflict upgrade-with-new-dep
4 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
Remv conflicting-dep [1.0]
Inst systemd (2 unstable [all])
Conf systemd (2 unstable [all])
Inst init [1] (2 unstable [all])
Inst upgrade-with-conflict [1.0] (2.0 unstable [all])
Inst new-dep (1.0 stable [all])
Inst upgrade-simple [1.0] (2.0 unstable [all])
Inst upgrade-with-new-dep [1.0] (2.0 unstable [all])
Conf init (2 unstable [all])
Conf upgrade-with-conflict (2.0 unstable [all])
Conf new-dep (1.0 stable [all])
Conf upgrade-simple (2.0 unstable [all])
Conf upgrade-with-new-dep (2.0 unstable [all])' aptget -s dist-upgrade
msgmsg 'make systemd a non-choice in the or-group and try again'
echo 'Package: systemd
Pin: release unstable
Pin-Priority: -1' > rootdir/etc/apt/preferences.d/nosystemd.pref
testsuccessequal "$UPGRADE" aptget upgrade -s
testsuccessequal "$UPGRADE" apt upgrade -s --without-new-pkgs
UPGRADENEW='Reading package lists...
Building dependency tree...
Calculating upgrade...
The following NEW packages will be installed:
new-dep sysvinit
The following packages have been kept back:
upgrade-with-conflict
The following packages will be upgraded:
init upgrade-simple upgrade-with-new-dep
3 upgraded, 2 newly installed, 0 to remove and 1 not upgraded.
Inst sysvinit (2 unstable [all])
Conf sysvinit (2 unstable [all])
Inst init [1] (2 unstable [all])
Inst new-dep (1.0 stable [all])
Inst upgrade-simple [1.0] (2.0 unstable [all])
Inst upgrade-with-new-dep [1.0] (2.0 unstable [all])
Conf init (2 unstable [all])
Conf new-dep (1.0 stable [all])
Conf upgrade-simple (2.0 unstable [all])
Conf upgrade-with-new-dep (2.0 unstable [all])'
testsuccessequal "$UPGRADENEW" aptget upgrade -s --with-new-pkgs
testsuccessequal "$UPGRADENEW" apt upgrade -s
testsuccessequal 'Reading package lists...
Building dependency tree...
Calculating upgrade...
The following packages will be REMOVED:
conflicting-dep
The following NEW packages will be installed:
new-dep sysvinit
The following packages will be upgraded:
init upgrade-simple upgrade-with-conflict upgrade-with-new-dep
4 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
Remv conflicting-dep [1.0]
Inst sysvinit (2 unstable [all])
Conf sysvinit (2 unstable [all])
Inst init [1] (2 unstable [all])
Inst upgrade-with-conflict [1.0] (2.0 unstable [all])
Inst new-dep (1.0 stable [all])
Inst upgrade-simple [1.0] (2.0 unstable [all])
Inst upgrade-with-new-dep [1.0] (2.0 unstable [all])
Conf init (2 unstable [all])
Conf upgrade-with-conflict (2.0 unstable [all])
Conf new-dep (1.0 stable [all])
Conf upgrade-simple (2.0 unstable [all])
Conf upgrade-with-new-dep (2.0 unstable [all])' aptget -s dist-upgrade
# --no-strict-pinning pulls in systemd due to the dependency
testsuccessequal 'Reading package lists...
Building dependency tree...
Calculating upgrade...
The following packages will be REMOVED:
conflicting-dep
The following NEW packages will be installed:
new-dep systemd
The following packages will be upgraded:
init upgrade-simple upgrade-with-conflict upgrade-with-new-dep
4 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
Remv conflicting-dep [1.0]
Inst systemd (2 unstable [all])
Conf systemd (2 unstable [all])
Inst init [1] (2 unstable [all])
Inst upgrade-with-conflict [1.0] (2.0 unstable [all])
Inst new-dep (1.0 stable [all])
Inst upgrade-simple [1.0] (2.0 unstable [all])
Inst upgrade-with-new-dep [1.0] (2.0 unstable [all])
Conf init (2 unstable [all])
Conf upgrade-with-conflict (2.0 unstable [all])
Conf new-dep (1.0 stable [all])
Conf upgrade-simple (2.0 unstable [all])
Conf upgrade-with-new-dep (2.0 unstable [all])' aptget -s dist-upgrade --no-strict-pinning --solver 3.0
# --no-strict-pinning does not cause a package to be upgraded on its own, though.
echo 'Package: upgrade-simple
Pin: release unstable
Pin-Priority: -1' > rootdir/etc/apt/preferences.d/no-strict-pinning.pref
testsuccessequal 'Reading package lists...
Building dependency tree...
Calculating upgrade...
The following packages will be REMOVED:
conflicting-dep
The following NEW packages will be installed:
new-dep systemd
The following packages will be upgraded:
init upgrade-with-conflict upgrade-with-new-dep
3 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
Remv conflicting-dep [1.0]
Inst systemd (2 unstable [all])
Conf systemd (2 unstable [all])
Inst init [1] (2 unstable [all])
Inst upgrade-with-conflict [1.0] (2.0 unstable [all])
Inst new-dep (1.0 stable [all])
Inst upgrade-with-new-dep [1.0] (2.0 unstable [all])
Conf init (2 unstable [all])
Conf upgrade-with-conflict (2.0 unstable [all])
Conf new-dep (1.0 stable [all])
Conf upgrade-with-new-dep (2.0 unstable [all])' aptget -s dist-upgrade --no-strict-pinning --solver 3.0