Open coofercat opened 1 year ago
Starting with Systemd version 250 system-analyze verify
has a new option --recursive-errors
to control the return code. Additionally it looks like system-analyze verify
always returns an error "when syntax warnings arise during verification of the specified units or any of their dependencies.".
See: https://github.com/systemd/systemd/commit/3cc3dc7736727973df852c4bdf7d312c2e752e5e
On a system with some systemd issues, the outcome of
host.service('myservice').is_valid
is alwaysFalse
, even if my service is actually good.On further investigation the original pull request to add this https://github.com/pytest-dev/pytest-testinfra/pull/265 added a check to make sure STDOUT and STDERR were emtpy, as the call to
systemd-analyze verify %s
always returns 0. However, in come cases, STDERR can contain unrelated information which trips up the comparison.As an example, I have a deliberate typo in my service unit. The output of
systemd-analyze verify myservice.service
is as follows (all on STDERR):If I correct the typo, then the last line of this output goes away, but the others remain (actually, on my system the others seem to change every time I run the verify, but I always get at least a couple of lines out of it).
I'm not sure what's up with my system that it should do this (or why systemd would behave this way) but I'm wondering what the best solution to the testinfra problem is. I'm thinking a sort of "grep" of the output for
myservice.service
would suffice? Something like:Or in place in the function in
testinfra/modules/service.py
(also taking the opportunity to add some output to explain the reason for the failure):Happy to hear other suggestions or ideas etc :-)