#!/bin/sh -e

rm -rf tests/
mkdir tests

cat >tests/testcase.1 <<EOF
auto eth0
iface eth0 inet static
  address 1.2.3.4
  netmask 255.255.255.0
EOF
cat >tests/up.1 <<EOF
====stdout====
====stderr====
Configuring interface eth0=eth0 (inet)
run-parts /etc/network/if-pre-up.d
ifconfig eth0 1.2.3.4 netmask 255.255.255.0  	 up

run-parts /etc/network/if-up.d
EOF

cat >tests/testcase.2 <<EOF
auto eth0 eth1 eth2
auto eth3 eth4 eth5
iface eth0 inet static
  address 1.2.3.4
  netmask 255.255.255.0
iface eth1 inet static
  address 1.3.4.5
  netmask 255.255.255.0
iface eth2 inet static
  address 1.4.5.6
  netmask 255.255.255.0
iface eth3 inet static
  address 1.5.6.7
  netmask 255.255.255.0
iface eth4 inet static
  address 1.7.8.9
  netmask 255.255.255.0
iface eth5 inet static
  address 1.8.9.10
  netmask 255.255.255.0
EOF
cat >tests/up.2 <<EOF
====stdout====
====stderr====
Configuring interface eth0=eth0 (inet)
run-parts /etc/network/if-pre-up.d
ifconfig eth0 1.2.3.4 netmask 255.255.255.0  	 up

run-parts /etc/network/if-up.d
Configuring interface eth1=eth1 (inet)
run-parts /etc/network/if-pre-up.d
ifconfig eth1 1.3.4.5 netmask 255.255.255.0  	 up

run-parts /etc/network/if-up.d
Configuring interface eth2=eth2 (inet)
run-parts /etc/network/if-pre-up.d
ifconfig eth2 1.4.5.6 netmask 255.255.255.0  	 up

run-parts /etc/network/if-up.d
Configuring interface eth3=eth3 (inet)
run-parts /etc/network/if-pre-up.d
ifconfig eth3 1.5.6.7 netmask 255.255.255.0  	 up

run-parts /etc/network/if-up.d
Configuring interface eth4=eth4 (inet)
run-parts /etc/network/if-pre-up.d
ifconfig eth4 1.7.8.9 netmask 255.255.255.0  	 up

run-parts /etc/network/if-up.d
Configuring interface eth5=eth5 (inet)
run-parts /etc/network/if-pre-up.d
ifconfig eth5 1.8.9.10 netmask 255.255.255.0  	 up

run-parts /etc/network/if-up.d
EOF

result=true
for test in 1 2; do
	./ifup -nv --force -a -i tests/testcase.$test \
		>tests/up-res-out.$test 2>tests/up-res-err.$test || 
		true
	(echo "====stdout===="; cat tests/up-res-out.$test
	 echo "====stderr===="; cat tests/up-res-err.$test) > tests/up-res.$test

	echo "Testcase $test:"
	
	if diff -ub tests/up.$test tests/up-res.$test; then
		echo "(okay)"
	else
		echo "(failed)"
		result=false
	fi
	echo "=========="
done

if $result; then
	echo "(okay overall)"
	exit 0
else
	echo "(failed overall)"
	exit 1
fi
