#!/bin/sh

set -e

# Test that pkgos-debcrate detects version requirement mismatches: a
# requirement for a newer major than Debian (needs a version bump of the
# Debian package) and a requirement for an older major than Debian
# (needs a parallel librust-<name>-<X.Y>-dev package), while still
# listing both dependencies in debian/control.

ME=$(basename $0)
WORK=$(mktemp -d)
trap 'rm -rf "${WORK}"' EXIT

TESTDIR=$(cd "$(dirname "$0")" && pwd)
. "${TESTDIR}/fixtures.sh"

cd "${WORK}"

SERDE_REQ=2 NIX_REQ=0.28 fixture_cargo_toml ${WORK}/Cargo.toml
fixture_pack_crate ${WORK} ${WORK}/Cargo.toml
mock_git ${WORK} ${WORK}/fixture/serde_test-0.1.0 v0.1.0

cat >${WORK}/policy.txt <<EOF
librust-serde-dev=1.0.200
librust-serde-json-dev=1.0.140
librust-tokio-dev=1.53.1
librust-tempfile-dev=3.20.0
librust-cc-dev=1.2.0
librust-nix-dev=0.30.1
EOF

mock_apt ${WORK} ${WORK}/policy.txt
debcrate_env ${WORK}

"${SCRIPT}" serde_test >${WORK}/out.log 2>&1 || {
	cat ${WORK}/out.log
	echo "${ME}: pkgos-debcrate failed"
	exit 1
}

CTRL=${WORK}/rust-serde-test/debian/control

check () {
	if ! grep -q "$2" "$1" ; then
		echo "${ME}: $1 doesn't contain: $2"
		exit 1
	fi
}

check ${WORK}/out.log 'needs serde version 2, Debian has 1.0.200 (needs a Debian version bump)'
check ${WORK}/out.log 'needs nix 0.28, Debian has 0.30.1 (package an older major as librust-nix-0.28-dev)'
check ${CTRL} 'librust-serde-dev'
check ${CTRL} 'librust-nix-0.28-dev'

exit 0
