#!/bin/sh set -e TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment 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])' 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