Browse Source

Integration test for dinitctl load failure due to missing dependency

Davin McCall 1 year ago
parent
commit
727e73f335

+ 2 - 0
src/igr-tests/dep-not-found/output.expected

@@ -0,0 +1,2 @@
+dinitctl: error loading service (or dependency of service).
+dinitctl: try 'dinitcheck <service-name>' or check log for more information.

+ 28 - 0
src/igr-tests/dep-not-found/run-test.sh

@@ -0,0 +1,28 @@
+#!/bin/sh
+#
+# Check that a service with a missing dependency causes the appropriate error.
+#
+
+set -eu
+
+cd "$(dirname "$0")"
+
+"$DINIT_EXEC" -d sd -u -p socket -q &
+DINITPID=$!
+
+# Give some time for startup
+sleep 0.2
+
+STATUS=PASS
+
+DINITCTLOUT="$("$DINITCTL_EXEC" -p socket start missing-dep-svc 2>&1 || true)"
+if [ "$DINITCTLOUT" != "$(cat output.expected)" ]; then
+    echo "$DINITCTLOUT" > output.actual
+    STATUS=FAIL
+fi
+
+"$DINITCTL_EXEC" --quiet -p socket shutdown
+wait $DINITPID
+
+if [ $STATUS = PASS ]; then exit 0; fi
+exit 1

+ 1 - 0
src/igr-tests/dep-not-found/sd/boot

@@ -0,0 +1 @@
+type = internal

+ 2 - 0
src/igr-tests/dep-not-found/sd/missing-dep-svc

@@ -0,0 +1,2 @@
+type = internal
+depends-on = does-not-exist

+ 1 - 1
src/igr-tests/igr-runner.cc

@@ -14,7 +14,7 @@ int main(int argc, char **argv)
 {
     const char * const test_dirs[] = { "basic", "environ", "ps-environ", "chain-to", "force-stop",
             "restart", "check-basic", "check-cycle", "check-lint", "reload1", "reload2", "no-command-error",
-            "add-rm-dep", "var-subst", "svc-start-fail" };
+            "add-rm-dep", "var-subst", "svc-start-fail", "dep-not-found" };
     constexpr int num_tests = sizeof(test_dirs) / sizeof(test_dirs[0]);
 
     int passed = 0;