#!/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 , depends:i386 " "$@" 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 , depends:i386 " -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 , depends:i386 " -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: Unsatisfiable dependency group satisfy:command-line:i386=1 -> depends:i386" 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