Add tests to cover some of the fixed leaks.
authorKirill Isakov <is-kir@ya.ru>
Fri, 23 Jul 2021 12:41:51 +0000 (18:41 +0600)
committerKirill Isakov <is-kir@ya.ru>
Fri, 23 Jul 2021 12:42:04 +0000 (18:42 +0600)
test/commandline.test
test/testlib.sh.in

index 241cb25..4bd91f4 100755 (executable)
@@ -46,3 +46,19 @@ must_fail tinc foo -n foo get somethingreallyunknown
 must_fail tinc foo --net
 must_fail tinc foo --net get name
 must_fail tinc foo foo
+
+# Most of these should fail with ASAN. Some leaks are only detected by Valgrind.
+echo [STEP] Trigger previously known memory leaks
+
+tincd foo -c . -c . --help
+tincd foo -n net -n net --help
+tincd foo -n net -o FakeOpt=42 --help
+tincd foo --logfile=one --logfile=two --help
+tincd foo --pidfile=one --pidfile=two --help
+expect_code "$EXIT_FAILURE" tincd foo -n net -o Compression= --help
+expect_code "$EXIT_FAILURE" tincd foo -c fakedir -n 'n/e\t'
+
+tinc foo -c conf -c conf --help
+tinc foo -n net -n net --help
+tinc foo --pidfile=pid --pidfile=pid --help
+expect_code "$EXIT_FAILURE" tinc foo -c conf -n 'n/e\t'
index 224ab4f..ec8f400 100644 (file)
@@ -26,6 +26,8 @@ SPTPS_KEYPAIR=$(realdir "../src/sptps_keypair@EXEEXT@")
 
 # Exit status list
 # shellcheck disable=SC2034
+EXIT_FAILURE=1
+# shellcheck disable=SC2034
 EXIT_SKIP_TEST=77
 
 # The list of the environment variables that tinc injects into the scripts it calls.
@@ -98,6 +100,19 @@ must_fail() {
   fi
 }
 
+# Executes whatever is passed to it, checking that the resulting exit code is equal to the first argument.
+expect_code() {
+  expected=$1
+  shift
+
+  code=0
+  "$@" || code=$?
+
+  if [ $code != "$expected" ]; then
+    bail "wrong exit code $code, expected $expected"
+  fi
+}
+
 # Runs its arguments with timeout(1) or gtimeout(1) if either are installed.
 # Usage: try_limit_time 10 command --with --args
 if type timeout >/dev/null; then