On Tue, Oct 26, 2021 at 11:40 AM Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> wrote: > [...] > So "fixing" that is easy, just have the prereq test that thing in > particular, and why does one thing have a /lib/ prefix, but not the > other? > > But presumably this points to a bigger problem. I.e. we just did a "git > maintenance start" a few lines earlier. > > If I could start something via systemd then presumably it's either up, > or our "start" is buggy and we didn't actually start something, or are > using the wrong (non-portable?) invocation to check the running status > of the thing we just started? The bit you're missing is that the test script only mocks up starting and stopping the systemd unit: write_script print-args <<-\EOF && printf "%s\n" "$*" >>args EOF GIT_TEST_MAINT_SCHEDULER="systemctl:./print-args" \ git maintenance start --scheduler=systemd-timer && So, it's only running the `print-args` script, not actually invoking `systemctl`. On the other hand, the "analyze" check really is invoking a real systemd command. (Why `systemd-analyze` needs to open /dev/tty0 explicitly rather than just emitting to stdout or stderr is a different question...) > Also aside from that shouldn't this be: > > test_when_finished "systemd-something stop-it some-service" && > systemd-something start-it some-service && > [...] > > Or are runaway services handled somehow by systemd magic (tied to the > PID of the test run?). Answered above: we're just mocking starting/stopping the unit, not actually launching any background services.