#!/bin/sh
set -e

TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
configarchitecture 'i386'

insertpackage 'unstable' 'bar' 'i386' '1' 'Depends: foo'
insertpackage 'unstable' 'foo' 'i386' '1' 'Multi-Arch: foreign
Depends: libfoo1'
insertpackage 'unstable' 'libfoo1' 'i386' '1' 'Multi-Arch: same'
insertpackage 'experimental' 'foo' 'i386' '2' 'Multi-Arch: foreign
Depends: libfoo1 (>= 2)'
insertpackage 'experimental' 'libfoo1' 'i386' '2' 'Multi-Arch: same'

# note: the system has amd64 not configured!
insertinstalledpackage 'foo' 'amd64' '1' 'Multi-Arch: foreign
Depends: libfoo1'

setupaptarchive

testfailureequal "Reading package lists...
Building dependency tree...
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
 foo:amd64 : Depends: libfoo1:amd64 but it is not installable
E: Unmet dependencies. Try using -f." aptget check -s

insertinstalledpackage 'libfoo1' 'amd64' '1' 'Multi-Arch: same'

testsuccessequal 'Reading package lists...
Building dependency tree...' aptget check -s

testsuccessequal 'Reading package lists...
Building dependency tree...
The following additional packages will be installed:
  libfoo1
The following packages will be REMOVED:
  foo:amd64
The following NEW packages will be installed:
  foo libfoo1
0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
Remv foo:amd64 [1]
Inst libfoo1 (1 unstable [i386])
Inst foo (1 unstable [i386])
Conf libfoo1 (1 unstable [i386])
Conf foo (1 unstable [i386])' aptget install foo -s

testsuccessequal "Reading package lists...
Building dependency tree...
Selected version '2' (experimental [i386]) for 'foo'
Selected version '2' (experimental [i386]) for 'libfoo1' because of 'foo'
The following additional packages will be installed:
  libfoo1
The following packages will be REMOVED:
  foo:amd64 libfoo1:amd64
The following NEW packages will be installed:
  foo libfoo1
0 upgraded, 2 newly installed, 2 to remove and 0 not upgraded.
Remv foo:amd64 [1]
Remv libfoo1:amd64 [1]
Inst libfoo1 (2 experimental [i386])
Inst foo (2 experimental [i386])
Conf libfoo1 (2 experimental [i386])
Conf foo (2 experimental [i386])" aptget install foo/experimental -s

testsuccessequal 'Reading package lists...
Building dependency tree...
The following additional packages will be installed:
  foo libfoo1
The following packages will be REMOVED:
  foo:amd64
The following NEW packages will be installed:
  bar foo libfoo1
0 upgraded, 3 newly installed, 1 to remove and 0 not upgraded.
Remv foo:amd64 [1]
Inst libfoo1 (1 unstable [i386])
Inst foo (1 unstable [i386])
Inst bar (1 unstable [i386])
Conf libfoo1 (1 unstable [i386])
Conf foo (1 unstable [i386])
Conf bar (1 unstable [i386])' aptget install bar -s

configarchitecture 'i386' 'amd64'

testsuccessequal 'Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
  bar
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Inst bar (1 unstable [i386])
Conf bar (1 unstable [i386])' aptget install bar -s