mirror of
https://github.com/systemd/systemd.git
synced 2025-03-21 02:50:18 +03:00
test: Implement TEST_SHELL for mkosi based test runner
TEST_SHELL can be used to get a shell in the integration test environment without actually immediately starting the test. (cherry picked from commit dd1c01b20fb8eef6a4d41ac7f0d3d83399e27593)
This commit is contained in:
parent
039af94fb5
commit
ad43f87ae8
@ -62,20 +62,30 @@ def main():
|
||||
exit(77)
|
||||
|
||||
keep_journal = os.getenv("TEST_SAVE_JOURNAL", "fail")
|
||||
shell = bool(int(os.getenv("TEST_SHELL", "0")))
|
||||
|
||||
if shell and not sys.stderr.isatty():
|
||||
print(f"--interactive must be passed to meson test to use TEST_SHELL=1", file=sys.stderr)
|
||||
exit(1)
|
||||
|
||||
name = args.name + (f"-{i}" if (i := os.getenv("MESON_TEST_ITERATION")) else "")
|
||||
|
||||
dropin = textwrap.dedent(
|
||||
"""\
|
||||
[Unit]
|
||||
SuccessAction=exit
|
||||
SuccessActionExitStatus=123
|
||||
|
||||
[Service]
|
||||
StandardOutput=journal+console
|
||||
"""
|
||||
)
|
||||
|
||||
if not shell:
|
||||
dropin += textwrap.dedent(
|
||||
f"""
|
||||
[Unit]
|
||||
SuccessAction=exit
|
||||
SuccessActionExitStatus=123
|
||||
"""
|
||||
)
|
||||
|
||||
if os.getenv("TEST_MATCH_SUBTEST"):
|
||||
dropin += textwrap.dedent(
|
||||
f"""
|
||||
@ -92,6 +102,7 @@ def main():
|
||||
"""
|
||||
)
|
||||
|
||||
journal_file = None
|
||||
if not sys.stderr.isatty():
|
||||
dropin += textwrap.dedent(
|
||||
"""
|
||||
@ -102,14 +113,13 @@ def main():
|
||||
|
||||
journal_file = (args.meson_build_dir / (f"test/journal/{name}.journal")).absolute()
|
||||
journal_file.unlink(missing_ok=True)
|
||||
else:
|
||||
elif not shell:
|
||||
dropin += textwrap.dedent(
|
||||
"""
|
||||
[Unit]
|
||||
Wants=multi-user.target
|
||||
"""
|
||||
)
|
||||
journal_file = None
|
||||
|
||||
cmd = [
|
||||
args.mkosi,
|
||||
@ -140,7 +150,7 @@ def main():
|
||||
' '.join([
|
||||
'systemd.hostname=H',
|
||||
f"SYSTEMD_UNIT_PATH=/usr/lib/systemd/tests/testdata/{args.name}.units:/usr/lib/systemd/tests/testdata/units:",
|
||||
f"systemd.unit={args.unit}",
|
||||
*([f"systemd.unit={args.unit}"] if not shell else []),
|
||||
'systemd.mask=systemd-networkd-wait-online.service',
|
||||
*(
|
||||
[
|
||||
@ -163,8 +173,8 @@ def main():
|
||||
if journal_file and (keep_journal == "0" or (result.returncode in (args.exit_code, 77) and keep_journal == "fail")):
|
||||
journal_file.unlink(missing_ok=True)
|
||||
|
||||
if result.returncode in (args.exit_code, 77):
|
||||
exit(0 if result.returncode == args.exit_code else 77)
|
||||
if shell or result.returncode in (args.exit_code, 77):
|
||||
exit(0 if shell or result.returncode == args.exit_code else 77)
|
||||
|
||||
if journal_file:
|
||||
ops = []
|
||||
|
Loading…
x
Reference in New Issue
Block a user