2 # SPDX-License-Identifier: LGPL-2.1-or-later
3 # shellcheck disable=SC2235
7 # shellcheck source=test/units/generator-utils.sh
8 .
"$(dirname "$0")/generator-utils.sh"
10 GENERATOR_BIN
="/usr/lib/systemd/system-generators/systemd-run-generator"
11 OUT_DIR
="$(mktemp -d /tmp/run-generator.XXX)"
14 rm -frv "${OUT_DIR:?}"
19 test -x "${GENERATOR_BIN:?}"
21 check_kernel_cmdline_target
() {
22 local out_dir
="${1:?}/normal"
24 cat "$out_dir/kernel-command-line.target"
25 grep -qE "^Requires=kernel-command-line.service$" "$out_dir/kernel-command-line.target"
26 grep -qE "^After=kernel-command-line.service$" "$out_dir/kernel-command-line.target"
28 link_eq
"$out_dir/default.target" "kernel-command-line.target"
31 : "run-generator: empty cmdline"
32 SYSTEMD_PROC_CMDLINE
="" run_and_list
"$GENERATOR_BIN" "$OUT_DIR"
33 [[ "$(find "$OUT_DIR" ! -type d | wc -l)" -eq 0 ]]
35 : "run-generator: single command"
36 CMDLINE
="systemd.run='echo hello world'"
37 SYSTEMD_PROC_CMDLINE
="$CMDLINE" run_and_list
"$GENERATOR_BIN" "$OUT_DIR"
38 check_kernel_cmdline_target
"$OUT_DIR"
39 UNIT
="$OUT_DIR/normal/kernel-command-line.service"
41 systemd-analyze verify
--man=no
--recursive-errors=no
"$UNIT"
42 grep -qE "^SuccessAction=exit$" "$UNIT"
43 grep -qE "^FailureAction=exit$" "$UNIT"
44 grep -qE "^ExecStart=echo hello world$" "$UNIT"
46 : "run-generator: multiple commands + success/failure actions"
48 # These should be ignored
50 "systemd.run_success_action"
51 "systemd.run_failure_action"
53 # Set actions which we will overwrite later
54 "systemd.run_success_action="
55 "systemd.run_failure_action="
57 "systemd.run=/bin/false"
59 "systemd.run=/bin/true"
60 "systemd.run='echo this is a long string'"
62 "systemd.run_success_action=reboot"
63 "systemd.run_failure_action=poweroff-force"
66 SYSTEMD_PROC_CMDLINE
="$CMDLINE" run_and_list
"$GENERATOR_BIN" "$OUT_DIR"
67 check_kernel_cmdline_target
"$OUT_DIR"
68 UNIT
="$OUT_DIR/normal/kernel-command-line.service"
70 systemd-analyze verify
--man=no
--recursive-errors=no
"$UNIT"
71 grep -qE "^SuccessAction=reboot$" "$UNIT"
72 grep -qE "^FailureAction=poweroff-force$" "$UNIT"
73 grep -qE "^ExecStart=/bin/false$" "$UNIT"
74 grep -qE "^ExecStart=$" "$UNIT"
75 grep -qE "^ExecStart=/bin/true$" "$UNIT"
76 grep -qE "^ExecStart=echo this is a long string$" "$UNIT"