Move integration tests into a subdirectory
[tinc] / test / integration / commandline.test
1 #!/bin/sh
2
3 # shellcheck disable=SC1090
4 . "$TESTLIB_PATH"
5
6 echo [STEP] Initialize one node
7
8 tinc foo <<EOF
9 init foo
10 set DeviceType dummy
11 set Port 0
12 EOF
13
14 create_script foo tinc-up '
15   tinc foo stop &
16 '
17
18 echo [STEP] Test tincd command line options that should work
19
20 tincd foo -D
21 tincd foo --no-detach
22 tincd foo -D -d
23 tincd foo -D -d2
24 tincd foo -D -d 2
25 tincd foo -D -n foo
26 tincd foo -D -nfoo
27 tincd foo -D --net=foo
28 tincd foo -D --net foo
29
30 echo [STEP] Test tincd command line options that should not work
31
32 expect_code "$EXIT_FAILURE" tincd foo foo
33 expect_code "$EXIT_FAILURE" tincd foo --pidfile
34 expect_code "$EXIT_FAILURE" tincd foo --foo
35
36 echo [STEP] Test tinc command line options that should work
37
38 tinc foo get name
39 tinc foo -n foo get name
40 tinc foo -nfoo get name
41 tinc foo --net=foo get name
42 tinc foo --net foo get name
43
44 echo [STEP] Test tinc command line options that should not work
45
46 expect_code "$EXIT_FAILURE" tinc foo -n foo get somethingreallyunknown
47 expect_code "$EXIT_FAILURE" tinc foo --net
48 expect_code "$EXIT_FAILURE" tinc foo --net get name
49 expect_code "$EXIT_FAILURE" tinc foo foo
50
51 # Most of these should fail with ASAN. Some leaks are only detected by Valgrind.
52 echo [STEP] Trigger previously known memory leaks
53
54 tincd foo -c . -c . --help
55 tincd foo -n net -n net --help
56 tincd foo -n net -o FakeOpt=42 --help
57 tincd foo --logfile=one --logfile=two --help
58 tincd foo --pidfile=one --pidfile=two --help
59 expect_code "$EXIT_FAILURE" tincd foo -n net -o Compression= --help
60 expect_code "$EXIT_FAILURE" tincd foo -c fakedir -n 'n/e\t'
61
62 tinc foo -c conf -c conf --help
63 tinc foo -n net -n net --help
64 tinc foo --pidfile=pid --pidfile=pid --help
65 expect_code "$EXIT_FAILURE" tinc foo -c conf -n 'n/e\t'