Add support for meson build system
[tinc] / test / variables.test
index f8656c9..fffbd8c 100755 (executable)
 #!/bin/sh
 
-. "${0%/*}/testlib.sh"
+# shellcheck disable=SC1090
+. "$TESTLIB_PATH"
 
-# Initialize one node
+echo [STEP] Initialize one node
 
-$tinc $c1 init foo
-test "`$tinc $c1 get Name`" = "foo"
+tinc foo init foo
+test "$(tinc foo get Name)" = "foo"
 
-# Test case sensitivity
+echo [STEP] Test case sensitivity
 
-$tinc $c1 set Mode switch
-test "`$tinc $c1 get Mode`" = "switch"
-test "`$tinc $c1 get mode`" = "switch"
-$tinc $c1 set mode router
-test "`$tinc $c1 get Mode`" = "router"
-test "`$tinc $c1 get mode`" = "router"
-$tinc $c1 set Mode Switch
-test "`$tinc $c1 get Mode`" = "Switch"
+tinc foo set Mode switch
+test "$(tinc foo get Mode)" = "switch"
+test "$(tinc foo get mode)" = "switch"
 
-# Test deletion
+tinc foo set mode router
+test "$(tinc foo get Mode)" = "router"
+test "$(tinc foo get mode)" = "router"
 
-$tinc $c1 del Mode hub && exit 1 || true
-$tinc $c1 del Mode switch
-test -z "`$tinc $c1 get Mode`"
+tinc foo set Mode Switch
+test "$(tinc foo get Mode)" = "Switch"
 
-# There can only be one Mode variable
+echo [STEP] Test deletion
 
-$tinc $c1 add Mode switch
-$tinc $c1 add Mode hub
-test "`$tinc $c1 get Mode`" = "hub"
+expect_code "$EXIT_FAILURE" tinc foo del Mode hub
+tinc foo del Mode switch
+test -z "$(tinc foo get Mode)"
 
-# Test addition/deletion of multivalued variables
+echo [STEP] There can only be one Mode variable
 
-$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
-2
-3"
-$tinc $c1 del Subnet 2
-test "`$tinc $c1 get Subnet`" = "1
-3"
-$tinc $c1 del Subnet
-test -z "`$tinc $c1 get Subnet`"
+tinc foo add Mode switch
+tinc foo add Mode hub
+test "$(tinc foo get Mode)" = "hub"
 
-# We should not be able to get/set server variables using node.variable syntax
+echo [STEP] Test addition/deletion of multivalued variables
 
-test -z "`$tinc $c1 get foo.Name`"
-$tinc $c1 set foo.Name bar && exit 1 || true
+tinc foo add Subnet 1.1.1.1
+tinc foo add Subnet 2.2.2.2
+tinc foo add Subnet 2.2.2.2
+tinc foo add Subnet 3.3.3.3
+test "$(tinc foo get Subnet | rm_cr)" = "1.1.1.1
+2.2.2.2
+3.3.3.3"
 
-# Test getting/setting host variables for other nodes
+tinc foo del Subnet 2.2.2.2
+test "$(tinc foo get Subnet | rm_cr)" = "1.1.1.1
+3.3.3.3"
 
-touch $d1/hosts/bar
+tinc foo del Subnet
+test -z "$(tinc foo get Subnet)"
 
-$tinc $c1 add bar.PMTU 1
-$tinc $c1 add bar.PMTU 2
-test "`$tinc $c1 get bar.PMTU`" = "2"
+echo [STEP] We should not be able to get/set server variables using node.variable syntax
 
-$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
-2
-3"
-$tinc $c1 del bar.Subnet 2
-test "`$tinc $c1 get bar.Subnet`" = "1
-3"
-$tinc $c1 del bar.Subnet
-test -z "`$tinc $c1 get bar.Subnet`"
+test -z "$(tinc foo get foo.Name)"
+expect_code "$EXIT_FAILURE" tinc foo set foo.Name bar
 
-# We should not be able to get/set for nodes with invalid names
+echo [STEP] Test getting/setting host variables for other nodes
 
-touch $d1/hosts/qu-ux
+touch "$DIR_FOO/hosts/bar"
 
-$tinc $c1 set qu-ux.Subnet 1 && exit 1 || true
+tinc foo add bar.PMTU 1
+tinc foo add bar.PMTU 2
+test "$(tinc foo get bar.PMTU)" = "2"
 
-# We should not be able to set obsolete variables unless forced
+tinc foo add bar.Subnet 1.1.1.1
+tinc foo add bar.Subnet 2.2.2.2
+tinc foo add bar.Subnet 2.2.2.2
+tinc foo add bar.Subnet 3.3.3.3
+test "$(tinc foo get bar.Subnet | rm_cr)" = "1.1.1.1
+2.2.2.2
+3.3.3.3"
 
-$tinc $c1 set PrivateKey 12345 && exit 1 || true
-$tinc $c1 --force set PrivateKey 12345
-test "`$tinc $c1 get PrivateKey`" = "12345"
-$tinc $c1 del PrivateKey
-test -z "`$tinc $c1 get PrivateKey`"
+tinc foo del bar.Subnet 2.2.2.2
+test "$(tinc foo get bar.Subnet | rm_cr)" = "1.1.1.1
+3.3.3.3"
+
+tinc foo del bar.Subnet
+test -z "$(tinc foo get bar.Subnet)"
+
+echo [STEP] We should not be able to get/set for nodes with invalid names
+
+touch "$DIR_FOO/hosts/qu-ux"
+expect_code "$EXIT_FAILURE" tinc foo set qu-ux.Subnet 1.1.1.1
+
+echo [STEP] We should not be able to set obsolete variables unless forced
+
+expect_code "$EXIT_FAILURE" tinc foo set PrivateKey 12345
+tinc foo --force set PrivateKey 12345
+test "$(tinc foo get PrivateKey)" = "12345"
+
+tinc foo del PrivateKey
+test -z "$(tinc foo get PrivateKey)"
+
+echo [STEP] We should not be able to set/add malformed Subnets
+
+expect_code "$EXIT_FAILURE" tinc foo add Subnet 1.1.1
+expect_code "$EXIT_FAILURE" tinc foo add Subnet 1:2:3:4:5:
+expect_code "$EXIT_FAILURE" tinc foo add Subnet 1:2:3:4:5:::6
+expect_code "$EXIT_FAILURE" tinc foo add Subnet 1:2:3:4:5:6:7:8:9
+expect_code "$EXIT_FAILURE" tinc foo add Subnet 256.256.256.256
+expect_code "$EXIT_FAILURE" tinc foo add Subnet 1:2:3:4:5:6:7:8.123
+expect_code "$EXIT_FAILURE" tinc foo add Subnet 1:2:3:4:5:6:7:1.2.3.4
+expect_code "$EXIT_FAILURE" tinc foo add Subnet a:b:c:d:e:f:g:h
+expect_code "$EXIT_FAILURE" tinc foo add Subnet 1.1.1.1/0
+expect_code "$EXIT_FAILURE" tinc foo add Subnet 1.1.1.1/-1
+expect_code "$EXIT_FAILURE" tinc foo add Subnet 1.1.1.1/33
+expect_code "$EXIT_FAILURE" tinc foo add Subnet 1::/0
+expect_code "$EXIT_FAILURE" tinc foo add Subnet 1::/-1
+expect_code "$EXIT_FAILURE" tinc foo add Subnet 1::/129
+expect_code "$EXIT_FAILURE" tinc foo add Subnet ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+test -z "$(tinc foo get Subnet)"