Add integration test for basic dinitcheck functionality
authorDavin McCall <davmac@davmac.org>
Thu, 21 Nov 2019 12:09:43 +0000 (12:09 +0000)
committerDavin McCall <davmac@davmac.org>
Thu, 21 Nov 2019 13:06:20 +0000 (13:06 +0000)
.gitignore
src/Makefile
src/igr-tests/Makefile
src/igr-tests/check-basic/expected.txt [new file with mode: 0644]
src/igr-tests/check-basic/run-test.sh [new file with mode: 0755]
src/igr-tests/check-basic/sd/boot [new file with mode: 0644]
src/igr-tests/igr-runner.cc

index ccf983efe5fb9d7ff85950cba927e8bc2672f729..24a87a4bbfe9d7b0d530acbf4e36c9b5435b3f6e 100644 (file)
@@ -3,6 +3,7 @@
 /src/**/*.d
 /src/dinit
 /src/dinitctl
+/src/dinitcheck
 /src/shutdown
 /src/mconfig-gen
 /src/includes/mconfig.h
@@ -23,6 +24,7 @@
 /src/igr-tests/ps-environ/env-record
 /src/igr-tests/chain-to/recorded-output
 /src/igr-tests/restart/basic-ran
+/src/igr-tests/check-basic/output.txt
 
 # Generated man pages:
 /doc/manpages/*.5
index 8d963183c7a7efb282ac53deec3e5a3e6e5ce98b..6bc6b2fc7d998963dc5b0bf7b8ce91e63054c95f 100644 (file)
@@ -53,7 +53,7 @@ $(objects): %.o: %.cc
 check:
        $(MAKE) -C tests check
 
-check-igr: dinit dinitctl
+check-igr: dinit dinitctl dinitcheck
        $(MAKE) -C igr-tests check-igr
 
 run-cppcheck:
index ad73728fe42dcd3e8f58ac107682a10d4ca58f66..b148fb1085b4a71f101adf35753942ddc43b8796 100644 (file)
@@ -9,3 +9,4 @@ igr-runner: igr-runner.cc
 clean:
        rm -f igr-runner basic/basic-ran environ/env-record ps-environ/env-record chain-to/recorded-output
        rm -f restart/basic-ran
+       rm -f check-basic/output.txt
diff --git a/src/igr-tests/check-basic/expected.txt b/src/igr-tests/check-basic/expected.txt
new file mode 100644 (file)
index 0000000..a25578f
--- /dev/null
@@ -0,0 +1,5 @@
+Checking service: boot...
+Service 'boot': Unknown setting: 'not-valid'.
+Service 'boot': run-as: Specified user id contains invalid numeric characters or is outside allowed range.
+Checking service: test1...
+Unable to load service 'test1': Service description not found.
diff --git a/src/igr-tests/check-basic/run-test.sh b/src/igr-tests/check-basic/run-test.sh
new file mode 100755 (executable)
index 0000000..d75048c
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+../../dinitcheck -d sd > output.txt 2>&1
+
+STATUS=FAIL
+if cmp -s expected.txt output.txt; then
+   STATUS=PASS
+fi
+
+if [ $STATUS = PASS ]; then exit 0; fi
+exit 1
diff --git a/src/igr-tests/check-basic/sd/boot b/src/igr-tests/check-basic/sd/boot
new file mode 100644 (file)
index 0000000..2bbb5c9
--- /dev/null
@@ -0,0 +1,3 @@
+depends-on=test1
+not-valid=some value
+run-as=9notanumber
index 784355708dfa6df5bcc2100dba0f84731e30a039..3d53e9b292bfba6513075e9f2a86ca5b48ae4e4a 100644 (file)
@@ -12,7 +12,8 @@ extern char **environ;
 
 int main(int argc, char **argv)
 {
-    const char * const test_dirs[] = { "basic", "environ", "ps-environ", "chain-to", "force-stop", "restart" };
+    const char * const test_dirs[] = { "basic", "environ", "ps-environ", "chain-to", "force-stop", "restart",
+            "check-basic" };
     constexpr int num_tests = sizeof(test_dirs) / sizeof(test_dirs[0]);
 
     int passed = 0;