299 lines
11 KiB
Bash
Executable file
299 lines
11 KiB
Bash
Executable file
#!/bin/sh
|
|
set -e
|
|
|
|
TESTDIR="$(readlink -f "$(dirname "$0")")"
|
|
. "$TESTDIR/framework"
|
|
setupenvironment
|
|
allowremovemanual
|
|
configarchitecture 'amd64' 'i386' 'armel'
|
|
|
|
insertpackage 'unstable' 'cool-foo' 'amd64,i386' '1.0' 'Depends: foo'
|
|
insertpackage 'unstable' 'cool-foo-x64' 'amd64' '1.0' 'Depends: foo:amd64'
|
|
insertpackage 'unstable' 'cool-foo-x32' 'amd64' '1.0' 'Depends: foo:i386'
|
|
insertpackage 'unstable' 'hates-foo' 'amd64,i386' '1.0' 'Conflicts: foo'
|
|
insertpackage 'unstable' 'hates-foo-x64' 'amd64' '1.0' 'Conflicts: foo:amd64'
|
|
insertpackage 'unstable' 'hates-foo-x32' 'amd64' '1.0' 'Conflicts: foo:i386'
|
|
insertpackage 'unstable' 'foo' 'amd64,i386,armel' '1.0' 'Multi-Arch: foreign'
|
|
|
|
insertpackage 'unstable' 'cool-bar' 'amd64,i386' '1.0' 'Depends: bar-provider'
|
|
insertpackage 'unstable' 'cool-bar-x64' 'amd64' '1.0' 'Depends: bar-provider:amd64'
|
|
insertpackage 'unstable' 'cool-bar-x32' 'amd64' '1.0' 'Depends: bar-provider:i386'
|
|
insertpackage 'unstable' 'hates-bar' 'amd64,i386' '1.0' 'Conflicts: bar-provider'
|
|
insertpackage 'unstable' 'hates-bar-x64' 'amd64' '1.0' 'Conflicts: bar-provider:amd64'
|
|
insertpackage 'unstable' 'hates-bar-x32' 'amd64' '1.0' 'Conflicts: bar-provider:i386'
|
|
insertpackage 'unstable' 'bar' 'amd64,i386,armel' '1.0' 'Provides: bar-provider
|
|
Multi-Arch: foreign'
|
|
|
|
setupaptarchive
|
|
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
The following additional packages will be installed:
|
|
foo
|
|
The following NEW packages will be installed:
|
|
cool-foo:i386 foo
|
|
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst foo (1.0 unstable [amd64])
|
|
Inst cool-foo:i386 (1.0 unstable [i386])
|
|
Conf foo (1.0 unstable [amd64])
|
|
Conf cool-foo:i386 (1.0 unstable [i386])' aptget install cool-foo:i386 -s
|
|
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
The following NEW packages will be installed:
|
|
cool-foo foo:i386
|
|
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst foo:i386 (1.0 unstable [i386])
|
|
Inst cool-foo (1.0 unstable [amd64])
|
|
Conf foo:i386 (1.0 unstable [i386])
|
|
Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo:amd64 foo:i386 -s
|
|
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
The following NEW packages will be installed:
|
|
cool-foo foo:armel
|
|
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst foo:armel (1.0 unstable [armel])
|
|
Inst cool-foo (1.0 unstable [amd64])
|
|
Conf foo:armel (1.0 unstable [armel])
|
|
Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo:amd64 foo:armel -s
|
|
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
The following additional packages will be installed:
|
|
bar
|
|
The following NEW packages will be installed:
|
|
bar cool-bar:i386
|
|
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst bar (1.0 unstable [amd64])
|
|
Inst cool-bar:i386 (1.0 unstable [i386])
|
|
Conf bar (1.0 unstable [amd64])
|
|
Conf cool-bar:i386 (1.0 unstable [i386])' aptget install cool-bar:i386 -s
|
|
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
The following NEW packages will be installed:
|
|
bar:i386 cool-bar
|
|
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst bar:i386 (1.0 unstable [i386])
|
|
Inst cool-bar (1.0 unstable [amd64])
|
|
Conf bar:i386 (1.0 unstable [i386])
|
|
Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 bar:i386 -s
|
|
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
The following NEW packages will be installed:
|
|
bar:armel cool-bar
|
|
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst bar:armel (1.0 unstable [armel])
|
|
Inst cool-bar (1.0 unstable [amd64])
|
|
Conf bar:armel (1.0 unstable [armel])
|
|
Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 bar:armel -s
|
|
|
|
testsuccessequal "Reading package lists...
|
|
Building dependency tree...
|
|
Note, selecting 'bar:i386' instead of 'bar-provider:i386'
|
|
The following NEW packages will be installed:
|
|
bar:i386 cool-bar
|
|
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst bar:i386 (1.0 unstable [i386])
|
|
Inst cool-bar (1.0 unstable [amd64])
|
|
Conf bar:i386 (1.0 unstable [i386])
|
|
Conf cool-bar (1.0 unstable [amd64])" aptget install cool-bar bar-provider:i386 -s
|
|
|
|
satisfiable_in_singlearch() {
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
The following additional packages will be installed:
|
|
foo
|
|
The following NEW packages will be installed:
|
|
cool-foo foo
|
|
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst foo (1.0 unstable [amd64])
|
|
Inst cool-foo (1.0 unstable [amd64])
|
|
Conf foo (1.0 unstable [amd64])
|
|
Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo:amd64 -s
|
|
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
The following NEW packages will be installed:
|
|
cool-foo foo
|
|
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst foo (1.0 unstable [amd64])
|
|
Inst cool-foo (1.0 unstable [amd64])
|
|
Conf foo (1.0 unstable [amd64])
|
|
Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo:amd64 foo:amd64 -s
|
|
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
The following additional packages will be installed:
|
|
bar
|
|
The following NEW packages will be installed:
|
|
bar cool-bar
|
|
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst bar (1.0 unstable [amd64])
|
|
Inst cool-bar (1.0 unstable [amd64])
|
|
Conf bar (1.0 unstable [amd64])
|
|
Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 -s
|
|
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
The following NEW packages will be installed:
|
|
bar cool-bar
|
|
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst bar (1.0 unstable [amd64])
|
|
Inst cool-bar (1.0 unstable [amd64])
|
|
Conf bar (1.0 unstable [amd64])
|
|
Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 bar:amd64 -s
|
|
|
|
testsuccessequal "Reading package lists...
|
|
Building dependency tree...
|
|
Note, selecting 'bar' instead of 'bar-provider'
|
|
The following NEW packages will be installed:
|
|
bar cool-bar
|
|
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst bar (1.0 unstable [amd64])
|
|
Inst cool-bar (1.0 unstable [amd64])
|
|
Conf bar (1.0 unstable [amd64])
|
|
Conf cool-bar (1.0 unstable [amd64])" aptget install cool-bar bar-provider -s
|
|
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
The following additional packages will be installed:
|
|
foo
|
|
The following NEW packages will be installed:
|
|
cool-foo-x64 foo
|
|
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst foo (1.0 unstable [amd64])
|
|
Inst cool-foo-x64 (1.0 unstable [amd64])
|
|
Conf foo (1.0 unstable [amd64])
|
|
Conf cool-foo-x64 (1.0 unstable [amd64])' aptget install cool-foo-x64 -s
|
|
}
|
|
|
|
hatersgonnahate() {
|
|
BADPREFIX='Reading package lists...
|
|
Building dependency tree...
|
|
Some packages could not be installed. This may mean that you have
|
|
requested an impossible situation or if you are using the unstable
|
|
distribution that some required packages have not yet been created
|
|
or been moved out of Incoming.
|
|
The following information may help to resolve the situation:
|
|
'
|
|
testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions:
|
|
1. hates-foo:amd64=1.0 is selected for install
|
|
2. hates-foo:amd64 is not selected for install because:
|
|
1. ${1%:*}:$4=1.0 is selected for install
|
|
2. hates-foo:amd64 Conflicts foo
|
|
[selected ${1%:*}:$4=1.0]" aptget install $1 hates-foo -s --solver 3.0
|
|
testfailureequal "$BADPREFIX
|
|
The following packages have unmet dependencies:
|
|
hates-foo : Conflicts: foo
|
|
Conflicts: foo:i386
|
|
Conflicts: foo:armel
|
|
E: Unable to correct problems, you have held broken packages." aptget install $1 hates-foo -s --solver internal
|
|
testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions:
|
|
1. foo:$4=1.0 is selected for install
|
|
2. foo:$4=1.0 is not selected for install because:
|
|
1. $2:amd64=1.0 is selected for install
|
|
2. $2:amd64 Conflicts foo:$4" aptget install $1 $2 -s --solver 3.0
|
|
testfailureequal "$BADPREFIX
|
|
The following packages have unmet dependencies:
|
|
$2 : Conflicts: foo:$4
|
|
E: Unable to correct problems, you have held broken packages." aptget install $1 $2 -s --solver internal
|
|
testsuccessequal "Reading package lists...
|
|
Building dependency tree...
|
|
The following NEW packages will be installed:
|
|
$1 $3
|
|
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst $1 (1.0 unstable [$4])
|
|
Inst $3 (1.0 unstable [amd64])
|
|
Conf $1 (1.0 unstable [$4])
|
|
Conf $3 (1.0 unstable [amd64])" aptget install $1 $3 -s
|
|
}
|
|
hatersgonnahate 'foo' 'hates-foo-x64' 'hates-foo-x32' 'amd64'
|
|
hatersgonnahate 'foo:i386' 'hates-foo-x32' 'hates-foo-x64' 'i386'
|
|
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
The following additional packages will be installed:
|
|
foo:i386
|
|
The following NEW packages will be installed:
|
|
cool-foo-x32 foo:i386
|
|
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst foo:i386 (1.0 unstable [i386])
|
|
Inst cool-foo-x32 (1.0 unstable [amd64])
|
|
Conf foo:i386 (1.0 unstable [i386])
|
|
Conf cool-foo-x32 (1.0 unstable [amd64])' aptget install cool-foo-x32 -s
|
|
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
The following additional packages will be installed:
|
|
bar:i386
|
|
The following NEW packages will be installed:
|
|
bar:i386 cool-bar-x32
|
|
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst bar:i386 (1.0 unstable [i386])
|
|
Inst cool-bar-x32 (1.0 unstable [amd64])
|
|
Conf bar:i386 (1.0 unstable [i386])
|
|
Conf cool-bar-x32 (1.0 unstable [amd64])' aptget install cool-bar-x32 -s
|
|
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
The following additional packages will be installed:
|
|
bar
|
|
The following NEW packages will be installed:
|
|
bar cool-bar-x64
|
|
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst bar (1.0 unstable [amd64])
|
|
Inst cool-bar-x64 (1.0 unstable [amd64])
|
|
Conf bar (1.0 unstable [amd64])
|
|
Conf cool-bar-x64 (1.0 unstable [amd64])' aptget install cool-bar-x64 -s
|
|
|
|
|
|
satisfiable_in_singlearch
|
|
|
|
msgmsg 'switch to single architecture'
|
|
configarchitecture 'amd64'
|
|
|
|
satisfiable_in_singlearch
|
|
|
|
msgmsg 'switch to multi-arch with barbarian architecture'
|
|
|
|
insertinstalledpackage 'foo' 'armhf' '1.0' 'Multi-Arch: foreign'
|
|
insertinstalledpackage 'bar' 'armhf' '1.0' 'Provides: bar-provider
|
|
Multi-Arch: foreign'
|
|
insertinstalledpackage 'bar-needer' 'armhf' '1.0' 'Depends: bar-provider'
|
|
|
|
testsuccess aptget check
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
The following additional packages will be installed:
|
|
foo
|
|
The following packages will be REMOVED:
|
|
foo:armhf
|
|
The following NEW packages will be installed:
|
|
cool-foo foo
|
|
0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
|
|
Remv foo:armhf [1.0]
|
|
Inst foo (1.0 unstable [amd64])
|
|
Inst cool-foo (1.0 unstable [amd64])
|
|
Conf foo (1.0 unstable [amd64])
|
|
Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo -s
|
|
testsuccessequal 'Reading package lists...
|
|
Building dependency tree...
|
|
The following additional packages will be installed:
|
|
bar
|
|
The following packages will be REMOVED:
|
|
bar:armhf
|
|
The following NEW packages will be installed:
|
|
bar cool-bar
|
|
0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
|
|
Remv bar:armhf [1.0] [bar-needer:armhf ]
|
|
Inst bar (1.0 unstable [amd64])
|
|
Inst cool-bar (1.0 unstable [amd64])
|
|
Conf bar (1.0 unstable [amd64])
|
|
Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar -s
|
|
|
|
# a barbarian doesn't satisfy another either
|
|
insertinstalledpackage 'bar-needer2' 's390x' '1.0' 'Depends: bar-provider'
|
|
testfailure aptget check
|