121 lines
5.3 KiB
Bash
Executable file
121 lines
5.3 KiB
Bash
Executable file
#!/bin/sh
|
|
set -e
|
|
|
|
TESTDIR="$(readlink -f "$(dirname "$0")")"
|
|
. "$TESTDIR/framework"
|
|
|
|
setupenvironment
|
|
allowremovemanual
|
|
configarchitecture 'i386' 'amd64'
|
|
|
|
insertpackage 'stable' 'depends' 'i386' '1'
|
|
insertpackage 'stable' 'depends' 'amd64' '1'
|
|
insertinstalledpackage 'conflicts' 'i386' '1' 'Multi-Arch: same'
|
|
insertinstalledpackage 'conflicts' 'amd64' '1' 'Multi-Arch: same'
|
|
setupaptarchive
|
|
|
|
testrun() {
|
|
local TYPE="$1"
|
|
local HEADER="$2"
|
|
shift 2
|
|
msgmsg "$TYPE: Normal"
|
|
testsuccessequal "$HEADER
|
|
The following packages will be REMOVED:
|
|
conflicts
|
|
The following NEW packages will be installed:
|
|
depends
|
|
0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
|
|
Remv conflicts [1]
|
|
Inst depends (1 stable [i386])
|
|
Conf depends (1 stable [i386])" aptget satisfy --simulate "depends (>= 1)" "Conflicts: conflicts:i386 (>= 1) [i386], conflicts:amd64 (>= 1) [amd64]" "$@"
|
|
|
|
testsuccessequal "$HEADER
|
|
The following packages will be REMOVED:
|
|
conflicts:amd64
|
|
The following NEW packages will be installed:
|
|
depends:amd64
|
|
0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
|
|
Remv conflicts:amd64 [1]
|
|
Inst depends:amd64 (1 stable [amd64])
|
|
Conf depends:amd64 (1 stable [amd64])" aptget satisfy --simulate "depends (>= 1)" "Conflicts: conflicts:i386 (>= 1) [i386], conflicts:amd64 (>= 1) [amd64]" --host-architecture amd64 "$@"
|
|
|
|
msgmsg "$TYPE: Build profile"
|
|
|
|
testsuccessequal "$HEADER
|
|
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget satisfy --simulate "depends:amd64 <a>, depends:i386 <i>" "$@"
|
|
|
|
testsuccessequal "$HEADER
|
|
The following NEW packages will be installed:
|
|
depends:amd64
|
|
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst depends:amd64 (1 stable [amd64])
|
|
Conf depends:amd64 (1 stable [amd64])" aptget satisfy --simulate "depends:amd64 <a>, depends:i386 <i>" -P a "$@"
|
|
|
|
testsuccessequal "$HEADER
|
|
The following NEW packages will be installed:
|
|
depends
|
|
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
|
|
Inst depends (1 stable [i386])
|
|
Conf depends (1 stable [i386])" aptget satisfy --simulate "depends:amd64 <a>, depends:i386 <i>" -P i "$@"
|
|
|
|
msgmsg "$TYPE: Broken syntax"
|
|
testfailureequal "E: Problem parsing dependency: apt (>= 2" aptget satisfy 'foo' 'apt (>= 2' -s "$@"
|
|
testfailureequal "E: Problem parsing dependency: Conflicts: apt (>= 2" aptget satisfy 'foo' 'Conflicts: apt (>= 2' -s "$@"
|
|
|
|
msgmsg "$TYPE: Legacy operators"
|
|
testfailureequal "E: Invalid operator '<' at offset 5, did you mean '<<' or '<='? - in: foo (< 1)" aptget satisfy 'foo (< 1)' -s "$@"
|
|
testfailureequal "E: Invalid operator '>' at offset 5, did you mean '>>' or '>='? - in: foo (> 1)" aptget satisfy 'foo (> 1)' -s "$@"
|
|
|
|
msgmsg "$TYPE: Unsupported dependency type"
|
|
testfailureequal "E: Problem parsing dependency: Recommends: foo" aptget satisfy 'Recommends: foo' -s "$@"
|
|
|
|
msgmsg "$TYPE: Empty dependency"
|
|
testfailureequal "E: Problem parsing dependency: " aptget satisfy '' -s "$@"
|
|
}
|
|
|
|
testrun 'Internal' 'Reading package lists...
|
|
Building dependency tree...'
|
|
|
|
testrun 'External' 'Reading package lists...
|
|
Building dependency tree...
|
|
Execute external solver...' --solver apt
|
|
|
|
testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions:
|
|
1. satisfy:command-line:i386=1 is selected for install
|
|
2. satisfy:command-line:i386 Depends depends (>= 2)
|
|
but none of the choices are installable:
|
|
[no choices]" aptget satisfy --simulate "depends (>= 2)" "Conflicts: conflicts:i386 (>= 1) [i386], conflicts:amd64 (>= 1) [amd64]" --solver 3.0
|
|
|
|
testfailureequal "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:
|
|
|
|
The following packages have unmet dependencies:
|
|
satisfy:command-line : Depends: depends (>= 2) but it is not going to be installed
|
|
E: Unable to correct problems, you have held broken packages." aptget satisfy --simulate "depends (>= 2)" "Conflicts: conflicts:i386 (>= 1) [i386], conflicts:amd64 (>= 1) [amd64]" --solver internal
|
|
|
|
if [ "$APT_SOLVER" != "3.0" ]; then
|
|
# FIXME: solver3 doesn't produce nice errors in the external solver scenario
|
|
testfailureequal "Reading package lists...
|
|
Building dependency tree...
|
|
Execute external solver...
|
|
The solver encountered an error of type: ERR_UNSOLVABLE
|
|
The following information might help you to understand what is wrong:
|
|
The following packages have unmet dependencies:
|
|
satisfy:command-line : Depends: depends (>= 2) but it is not going to be installed
|
|
|
|
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:
|
|
|
|
The following packages have unmet dependencies:
|
|
satisfy:command-line : Depends: depends (>= 2) but it is not going to be installed
|
|
Conflicts: conflicts:i386 (>= 1)
|
|
E: External solver failed with: The following packages have unmet dependencies:" aptget satisfy --simulate "depends (>= 2)" "Conflicts: conflicts:i386 (>= 1) [i386], conflicts:amd64 (>= 1) [amd64]" --solver apt
|
|
fi
|