import subprocess from conftest import LIBEXEC, env_with_fake_commands, fake_command JOURNALCTL_HELPER = LIBEXEC / "left4me-journalctl" def test_journalctl_helper_passes_shell_syntax_check_and_rejects_bad_args(tmp_path): subprocess.run(["sh", "-n", str(JOURNALCTL_HELPER)], check=True) marker = fake_command(tmp_path, "journalctl") for args in [ ["../evil", "--lines", "25", "--no-follow"], ["alpha", "--bad", "25", "--no-follow"], ["alpha", "--lines", "not-number", "--no-follow"], ["alpha", "--lines", "25", "--bad-follow"], ["bad/name", "--lines", "25", "--no-follow"], ]: result = subprocess.run( ["sh", str(JOURNALCTL_HELPER), *args], env=env_with_fake_commands(tmp_path), check=False, ) assert result.returncode != 0 assert not marker.exists() script = JOURNALCTL_HELPER.read_text() assert 'unit="left4me-server@${name}.service"' in script assert 'exec "$journalctl" -u "$unit" -n "$lines" -o cat "$follow_arg"' in script assert 'exec "$journalctl" -u "$unit" -n "$lines" -o cat' in script