yield
except subprocess.CalledProcessError as e:
# MkosiException is silenced in main() so it doesn't print a stacktrace.
- raise MkosiException(e)
+ raise MkosiException() from e
def virt_name(args: MkosiArgs) -> str:
def run_shell(args: MkosiArgs) -> None:
- with suppress_stacktrace():
- run(run_shell_cmdline(args), stdout=sys.stdout, stderr=sys.stderr)
+ run(run_shell_cmdline(args), stdout=sys.stdout, stderr=sys.stderr)
def find_qemu_binary() -> str:
def run_qemu(args: MkosiArgs) -> None:
with run_qemu_cmdline(args) as cmdline:
- with suppress_stacktrace():
- run(cmdline, stdout=sys.stdout, stderr=sys.stderr)
+ run(cmdline, stdout=sys.stdout, stderr=sys.stderr)
def interface_exists(dev: str) -> bool:
return run_ssh(args, commands, check, stdout, stderr, timeout)
else:
cmdline = ["systemd-run", "--quiet", "--wait", "--pipe", "-M", virt_name(args), "/usr/bin/env", *commands]
- with suppress_stacktrace():
- return run(cmdline, check=check, stdout=stdout, stderr=stderr, text=True, timeout=timeout)
+ return run(cmdline, check=check, stdout=stdout, stderr=stderr, text=True, timeout=timeout)
def run_ssh_cmdline(args: MkosiArgs, commands: Optional[Sequence[str]] = None) -> Sequence[str]:
stderr: _FILE = sys.stderr,
timeout: Optional[int] = None,
) -> CompletedProcess:
- with suppress_stacktrace():
- return run(run_ssh_cmdline(args, commands), check=check, stdout=stdout, stderr=stderr, text=True, timeout=timeout)
+ return run(run_ssh_cmdline(args, commands), check=check, stdout=stdout, stderr=stderr, text=True, timeout=timeout)
def run_serve(args: MkosiArgs) -> None:
print_output_size(args)
- if args.verb in (Verb.shell, Verb.boot):
- run_shell(args)
+ with suppress_stacktrace():
+ if args.verb in (Verb.shell, Verb.boot):
+ run_shell(args)
- if args.verb == Verb.qemu:
- run_qemu(args)
+ if args.verb == Verb.qemu:
+ run_qemu(args)
- if args.verb == Verb.ssh:
- run_ssh(args)
+ if args.verb == Verb.ssh:
+ run_ssh(args)
if args.verb == Verb.serve:
run_serve(args)
# SPDX-License-Identifier: LGPL-2.1+
import os
-from subprocess import TimeoutExpired
+from subprocess import CalledProcessError, TimeoutExpired
import pytest
-from mkosi.backend import MkosiException
from mkosi.machine import Machine, MkosiMachineTest
pytestmark = [
def test_wrong_command(self) -> None:
# Check = True from mkosi.backend.run(), therefore we see if an exception is raised
- with pytest.raises(MkosiException):
+ with pytest.raises(CalledProcessError):
self.machine.run(["NonExisting", "Command"])
- with pytest.raises(MkosiException):
+ with pytest.raises(CalledProcessError):
self.machine.run(["ls", "NullDirectory"])
# Check = False to see if stderr and returncode have the expected values