#!/bin/sh
set -e

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

insertinstalledpackage 'fuse' 'all' '2'
insertpackage 'unstable' 'fuse3' 'all' '3' 'Conflicts: fuse
Provides: fuse'

insertpackage 'unstable' 'foobar-d' 'all' '1' 'Depends: fuse'
insertpackage 'unstable' 'foobar-d2' 'all' '1' 'Depends: fuse
Conflicts: fuse3'
insertpackage 'unstable' 'foobar-d3' 'all' '1' 'Depends: fuse3'
insertpackage 'unstable' 'foobar-r' 'all' '1' 'Recommends: fuse'
insertpackage 'unstable' 'foobar-r2' 'all' '1' 'Recommends: fuse
Conflicts: fuse3'
insertpackage 'unstable' 'foobar-r3' 'all' '1' 'Recommends: fuse3'

setupaptarchive

installfoobars() {
	testsuccessequal 'Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
  foobar-d
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Inst foobar-d (1 unstable [all])
Conf foobar-d (1 unstable [all])' apt install -s foobar-d
	testsuccessequal 'Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
  foobar-d2
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Inst foobar-d2 (1 unstable [all])
Conf foobar-d2 (1 unstable [all])' apt install -s foobar-d2
	testsuccessequal "Reading package lists...
Building dependency tree...
The following additional packages will be installed:
  fuse3
The following packages will be REMOVED:
  fuse
The following NEW packages will be installed:
  foobar-d3 fuse3
0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
Remv fuse [2]$1
Inst fuse3 (3 unstable [all])
Inst foobar-d3 (1 unstable [all])
Conf fuse3 (3 unstable [all])
Conf foobar-d3 (1 unstable [all])" apt install -s foobar-d3

	testsuccessequal 'Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
  foobar-r
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Inst foobar-r (1 unstable [all])
Conf foobar-r (1 unstable [all])' apt install -s foobar-r
	testsuccessequal 'Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
  foobar-r2
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Inst foobar-r2 (1 unstable [all])
Conf foobar-r2 (1 unstable [all])' apt install -s foobar-r2
	if [ -z "$1" ]; then
		testsuccessequal "Reading package lists...
Building dependency tree...
The following additional packages will be installed:
  fuse3
The following packages will be REMOVED:
  fuse
The following NEW packages will be installed:
  foobar-r3 fuse3
0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
Remv fuse [2]$1
Inst foobar-r3 (1 unstable [all])
Inst fuse3 (3 unstable [all])
Conf foobar-r3 (1 unstable [all])
Conf fuse3 (3 unstable [all])" apt install -s foobar-r3
	else
		testsuccessequal "Reading package lists...
Building dependency tree...
The following additional packages will be installed:
  fuse3
The following packages will be REMOVED:
  fuse
The following NEW packages will be installed:
  foobar-r3 fuse3
0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
Remv fuse [2]$1
Inst fuse3 (3 unstable [all])
Inst foobar-r3 (1 unstable [all])
Conf fuse3 (3 unstable [all])
Conf foobar-r3 (1 unstable [all])" apt install -s foobar-r3
	fi
}
msgmsg 'fuse has no installed dependers'
installfoobars

for i in $(seq 0 10); do
	insertinstalledpackage "stuff$i" 'all' '1' 'Depends: fuse'
done
msgmsg 'fuse has many dependers installed'
installfoobars ' [stuff0:amd64 stuff1:amd64 stuff2:amd64 stuff3:amd64 stuff4:amd64 stuff5:amd64 stuff6:amd64 stuff7:amd64 stuff8:amd64 stuff9:amd64 stuff10:amd64 ]'
