#!/bin/sh

set -ex

MIRROR=http://deb.debian.org
BFPKG=base-files_13.5_amd64.deb
LIBCPKG=libc6_2.39-6_amd64.deb
DASHPKG=dash_0.5.12-9.1_amd64.deb

testcase() {
	SUITE=$1
	shift
	mmdebstrap --variant=essential "$SUITE" /dev/null "$MIRROR" --customize-hook="upload $DASHPKG /d.deb" --customize-hook="upload $LIBCPKG /c.deb" --customize-hook="upload $BFPKG /b.deb" "$@"
}

# upgrade from unstable
testcase sid --chrooted-customize-hook='dpkg -i /d.deb'

# upgrade from bookworm
testcase bookworm --chrooted-customize-hook='dpkg -i /b.deb /c.deb' --chrooted-customize-hook='dpkg -i /d.deb'

# upgrade from bookworm with mksh as /bin/sh fails
testcase bookworm --include=mksh --chrooted-customize-hook='dpkg-divert --no-rename --remove /bin/sh && dpkg-divert --rename --divert /bin/sh.orig --add /bin/sh && ln -s lksh /bin/sh' --chrooted-customize-hook='dpkg -i /b.deb /c.deb' --chrooted-customize-hook='! dpkg --unpack /d.deb'

# upgrade from bookworm with mksh as /bin/sh and /usr/bin/sh works
testcase bookworm --include=mksh --chrooted-customize-hook='dpkg-divert --no-rename --remove /bin/sh && dpkg-divert --rename --divert /bin/sh.orig --add /bin/sh && ln -s lksh /bin/sh && dpkg-divert --no-rename --divert /usr/bin/sh.orig.usr-is-merged --add /usr/bin/sh' --chrooted-customize-hook='dpkg -i /b.deb /c.deb' --chrooted-customize-hook='dpkg --unpack /d.deb' --chrooted-customize-hook='test -L /bin/sh && test "$(readlink /bin/sh)" = lksh'
