Attempt to make the test suite work with Windows executables.
authorGuus Sliepen <guus@tinc-vpn.org>
Mon, 22 Oct 2018 18:31:37 +0000 (20:31 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Mon, 22 Oct 2018 18:31:37 +0000 (20:31 +0200)
The test suite still assumes a POSIX shell to run the tests, but now handles
the case when the executables themselves are (cross-)compiled for Windows,
with a .exe extension. Also, DOS line endings must be converted to UNIX
line endings in some cases.

Some tests now pass on Linux+Wine, but others do not, mainly due to Wine
not handling services very well.

.gitignore
test/Makefile.am
test/commandline.test
test/invite-offline.test
test/invite-tinc-up.test
test/scripts.test
test/testlib.sh [deleted file]
test/testlib.sh.in [new file with mode: 0644]
test/variables.test

index 1cf6023b81eda81878c149f7b15f28322ca28626..b3e93971ac723bce4972fb8050f9969c4215965b 100644 (file)
@@ -42,6 +42,7 @@
 /test/*.log
 /test/*.trs
 /test/splice
+/test/testlib.sh
 Makefile
 Makefile.in
 core*
index 32b2e300672f5d69dcaf380d9106d5c93a6b2e13..dae30dcf9c0ac693c05eb7953d5e896d78523e0e 100644 (file)
@@ -15,8 +15,6 @@ TESTS = \
 
 dist_check_SCRIPTS = $(TESTS)
 
-EXTRA_DIST = testlib.sh
-
 AM_CFLAGS = -iquote.
 
 check_PROGRAMS = \
index 44d651a5ebf852cec6ca7e51120bcfb27ad419a6..f785b221469404b0aa42f3e817457b88b331fdce 100755 (executable)
@@ -16,6 +16,10 @@ read pid rest <$d1/pid
 (sleep 0.1; kill \$pid) &
 EOF
 
+cat >$d1/tinc-up.cmd <<EOF
+start /min ../$tinc $c1 stop
+EOF
+
 # Test tincd command line options that should work
 
 $tincd $c1 $r1 -D
index 62bfcb4137d7cd67fc8398d2f49c17548417ce72..82f7cb98dd02c199d461cd1a399411685fbe0f15 100755 (executable)
@@ -15,7 +15,7 @@ EOF
 
 # Generate an invitation offline and let another node join the VPN
 
-invitation=`$tinc $c1 invite bar`
+invitation=`$tinc $c1 invite bar | sed 's/\r//'`
 
 $tinc $c1 start $r1
 
index 26efddf2e3b58a75d570d7915372c3337f947772..55123b801130967dca1c513154e37bcf03ce5cf1 100755 (executable)
@@ -25,9 +25,17 @@ echo Route = 1.2.3.4 1234:: >>\$INVITATION_FILE
 $tinc $c1 export >>\$INVITATION_FILE
 EOF
 
+cat >$d1/invitation-created.cmd <<EOF
+echo Name = %NODE% >%INVITATION_FILE%
+echo Ifconfig = 93.184.216.34/24 >>%INVITATION_FILE%
+echo Route = 2606:2800:220:1::/64 2606:2800:220:1:248:1893:25c8:1946 >>%INVITATION_FILE%
+echo Route = 1.2.3.4 1234:: >>%INVITATION_FILE%
+$tinc $c1 export >>%INVITATION_FILE%
+EOF
+
 chmod u+x $d1/invitation-created
 
-$tinc $c1 invite bar | $tinc $c2 --batch join
+$tinc $c1 invite bar | tail -1 | $tinc $c2 --batch join
 
 # Test equivalence of host config files
 
index 2580ced778decfa7bd6c0d1e0204cd552ba1bbe4..b2b37d217d9fe9031728fbd135e97bf62f2d2cc4 100755 (executable)
@@ -2,6 +2,8 @@
 
 . "${0%/*}/testlib.sh"
 
+echo Initializing node...
+
 # Initialize server node
 
 $tinc $c1 <<EOF
@@ -15,6 +17,8 @@ EOF
 
 # Set up scripts
 
+echo Setting up scripts...
+
 OUT=$d1/scripts.out
 rm -f $OUT 
 
@@ -24,24 +28,37 @@ cat >$d1/$script << EOF
 echo $script \$NETNAME,\$NAME,\$DEVICE,\$IFACE,\$NODE,\$REMOTEADDRESS,\$REMOTEPORT,\$SUBNET,\$WEIGHT,\$INVITATION_FILE,\$INVITATION_URL,\$DEBUG >>$OUT
 EOF
 chmod u+x $d1/$script
+
+cat >$d1/$script.cmd << EOF
+echo $script %NETNAME%,%NAME%,%DEVICE%,%IFACE%,%NODE%,%REMOTEADDRESS%,%REMOTEPORT%,%SUBNET%,%WEIGHT%,%INVITATION_FILE%,%INVITATION_URL%,%DEBUG% >>$OUT
+EOF
 done
 
 # Start server node
 
+echo Starting server node...
+
 $tinc -n netname $c1 start $r1
 
 echo foo-started >>$OUT
 
 # Invite client node
 
-url=`$tinc -n netname2 $c1 invite bar`
+echo Inviting client node...
+
+url=`$tinc -n netname2 $c1 invite bar | sed 's/\r//'`
 file=`cd $d1/invitations; ls | grep -v ed25519_key.priv`
 echo bar-invited >>$OUT
+
+echo Joining client node...
+
 $tinc -n netname3 $c2 join $url
 echo bar-joined >>$OUT
 
 # Start and stop client node
 
+echo Starting client node...
+
 $tinc $c2 << EOF
 set DeviceType dummy
 set Port 32760
@@ -109,4 +126,5 @@ subnet-down netname,foo,dummy,,foo,,,fec0::/64,,,,5
 tinc-down netname,foo,dummy,,,,,,,,,5
 EOF
 
+sed -i 's/\r//' $OUT
 cmp $OUT $OUT.expected
diff --git a/test/testlib.sh b/test/testlib.sh
deleted file mode 100644 (file)
index 75b60a7..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/sh
-
-# Paths to executables
-
-tincd=../src/tincd
-tinc=../src/tinc
-sptps_test=../src/sptps_test
-sptps_keypair=../src/sptps_keypair
-
-# Test directories
-
-scriptname=`basename $0`
-d1=$PWD/$scriptname.1
-d2=$PWD/$scriptname.2
-d3=$PWD/$scriptname.3
-
-# Default arguments for both tinc and tincd
-
-c1="--config=$d1 --pidfile=$d1/pid"
-c2="--config=$d2 --pidfile=$d2/pid"
-c3="--config=$d3 --pidfile=$d3/pid"
-
-# Arguments when running tincd
-
-r1="--logfile=$d1/log -d5"
-r2="--logfile=$d2/log -d5"
-r3="--logfile=$d3/log -d5"
-
-# Check for leftover tinc daemons
-
-[ -f $d1/pid ] && $tinc $c1 stop
-[ -f $d2/pid ] && $tinc $c2 stop
-[ -f $d3/pid ] && $tinc $c3 stop
-
-# Remove test directories
-
-rm -rf $d1 $d2 $d3
-
-# Exit on errors, log all commands being executed
-
-set -ex
diff --git a/test/testlib.sh.in b/test/testlib.sh.in
new file mode 100644 (file)
index 0000000..6a091cf
--- /dev/null
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+# Paths to executables
+
+tincd=../src/tincd@EXEEXT@
+tinc=../src/tinc@EXEEXT@
+sptps_test=../src/sptps_test@EXEEXT@
+sptps_keypair=../src/sptps_keypair@EXEEXT@
+
+# Test directories
+
+scriptname=`basename $0`
+
+n1=$scriptname.1
+n2=$scriptname.2
+n3=$scriptname.3
+
+d1=$PWD/$n1
+d2=$PWD/$n2
+d3=$PWD/$n3
+
+# Default arguments for both tinc and tincd
+
+c1="-n $n1 --config=$d1 --pidfile=$d1/pid"
+c2="-n $n2 --config=$d2 --pidfile=$d2/pid"
+c3="-n $n3 --config=$d3 --pidfile=$d3/pid"
+
+# Arguments when running tincd
+
+r1="--logfile=$d1/log -d5"
+r2="--logfile=$d2/log -d5"
+r3="--logfile=$d3/log -d5"
+
+# Check for leftover tinc daemons
+
+[ -f $d1/pid ] && $tinc $c1 stop
+[ -f $d2/pid ] && $tinc $c2 stop
+[ -f $d3/pid ] && $tinc $c3 stop
+
+# Remove test directories
+
+rm -rf $d1 $d2 $d3
+
+# Exit on errors, log all commands being executed
+
+set -ex
index f8656c9309fb98c953165d1b3a9e33b830fc0b7b..6ae0b7975aeb412a2174300d4ceac3f8a10e9acb 100755 (executable)
@@ -5,18 +5,18 @@
 # Initialize one node
 
 $tinc $c1 init foo
-test "`$tinc $c1 get Name`" = "foo"
+test "`$tinc $c1 get Name | sed 's/\r//'`" = "foo"
 
 # Test case sensitivity
 
 $tinc $c1 set Mode switch
-test "`$tinc $c1 get Mode`" = "switch"
-test "`$tinc $c1 get mode`" = "switch"
+test "`$tinc $c1 get Mode | sed 's/\r//'`" = "switch"
+test "`$tinc $c1 get mode | sed 's/\r//'`" = "switch"
 $tinc $c1 set mode router
-test "`$tinc $c1 get Mode`" = "router"
-test "`$tinc $c1 get mode`" = "router"
+test "`$tinc $c1 get Mode | sed 's/\r//'`" = "router"
+test "`$tinc $c1 get mode | sed 's/\r//'`" = "router"
 $tinc $c1 set Mode Switch
-test "`$tinc $c1 get Mode`" = "Switch"
+test "`$tinc $c1 get Mode | sed 's/\r//'`" = "Switch"
 
 # Test deletion
 
@@ -28,7 +28,7 @@ test -z "`$tinc $c1 get Mode`"
 
 $tinc $c1 add Mode switch
 $tinc $c1 add Mode hub
-test "`$tinc $c1 get Mode`" = "hub"
+test "`$tinc $c1 get Mode | sed 's/\r//'`" = "hub"
 
 # Test addition/deletion of multivalued variables
 
@@ -36,11 +36,11 @@ $tinc $c1 add Subnet 1
 $tinc $c1 add Subnet 2
 $tinc $c1 add Subnet 2
 $tinc $c1 add Subnet 3
-test "`$tinc $c1 get Subnet`" = "1
+test "`$tinc $c1 get Subnet | sed 's/\r//'`" = "1
 2
 3"
 $tinc $c1 del Subnet 2
-test "`$tinc $c1 get Subnet`" = "1
+test "`$tinc $c1 get Subnet | sed 's/\r//'`" = "1
 3"
 $tinc $c1 del Subnet
 test -z "`$tinc $c1 get Subnet`"
@@ -56,17 +56,17 @@ touch $d1/hosts/bar
 
 $tinc $c1 add bar.PMTU 1
 $tinc $c1 add bar.PMTU 2
-test "`$tinc $c1 get bar.PMTU`" = "2"
+test "`$tinc $c1 get bar.PMTU | sed 's/\r//'`" = "2"
 
 $tinc $c1 add bar.Subnet 1
 $tinc $c1 add bar.Subnet 2
 $tinc $c1 add bar.Subnet 2
 $tinc $c1 add bar.Subnet 3
-test "`$tinc $c1 get bar.Subnet`" = "1
+test "`$tinc $c1 get bar.Subnet | sed 's/\r//'`" = "1
 2
 3"
 $tinc $c1 del bar.Subnet 2
-test "`$tinc $c1 get bar.Subnet`" = "1
+test "`$tinc $c1 get bar.Subnet | sed 's/\r//'`" = "1
 3"
 $tinc $c1 del bar.Subnet
 test -z "`$tinc $c1 get bar.Subnet`"
@@ -81,6 +81,6 @@ $tinc $c1 set qu-ux.Subnet 1 && exit 1 || true
 
 $tinc $c1 set PrivateKey 12345 && exit 1 || true
 $tinc $c1 --force set PrivateKey 12345
-test "`$tinc $c1 get PrivateKey`" = "12345"
+test "`$tinc $c1 get PrivateKey | sed 's/\r//'`" = "12345"
 $tinc $c1 del PrivateKey
 test -z "`$tinc $c1 get PrivateKey`"