"""Integration test utils.""" import re from subprocess import PIPE, STDOUT, Popen, TimeoutExpired def run_command( cmd: list[str], expected_returncode: int = 0, description: str = "Test failed" ) -> tuple[str, str]: """Execute a CLI command.""" proc = Popen(cmd, stderr=STDOUT, stdout=PIPE) try: stdout, stderr = proc.communicate(timeout=60) except TimeoutExpired: proc.kill() stdout, stderr = proc.communicate() # remove the extra characters printed by Typer to stdout/stderr. stdout = stdout.decode("ascii", "ignore") # type: ignore[assignment] stdout = re.sub(r"[\s\n]+", " ", str(stdout)) # type: ignore[assignment] assert proc.returncode == expected_returncode, ( f"return_code:{proc.returncode}\ndescription:{description}\nstdout:{stdout!r}" ) # noqa:E501 return str(stdout), str(stderr)