mirror of https://github.com/pwndbg/pwndbg.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
import os
|
|
import sys
|
|
|
|
import coverage
|
|
import pytest
|
|
|
|
use_pdb = os.environ.get("USE_PDB") == "1"
|
|
|
|
sys._pwndbg_unittest_run = True
|
|
|
|
CURRENT_DIR = os.path.dirname(os.path.realpath(__file__))
|
|
|
|
test = os.environ["PWNDBG_LAUNCH_TEST"]
|
|
|
|
test = os.path.join(CURRENT_DIR, test)
|
|
|
|
args = [test, "-vvv", "-s", "--showlocals", "--color=yes"]
|
|
|
|
if use_pdb:
|
|
args.append("--pdb")
|
|
|
|
print(f"Launching pytest with args: {args}")
|
|
|
|
return_code = pytest.main(args)
|
|
|
|
if return_code != 0:
|
|
print("-" * 80)
|
|
print("If you want to debug tests locally, run ./tests.sh with the --pdb flag")
|
|
print("-" * 80)
|
|
|
|
# We must call these functions manually to flush the code coverage data to disk since the sys.exit() call
|
|
# might've been replaced by os._exit() in gdbinit.py.
|
|
# https://github.com/nedbat/coveragepy/issues/310
|
|
if (cov := coverage.Coverage.current()) is not None:
|
|
cov.stop()
|
|
cov.save()
|
|
|
|
# `sys.exit` triggers a GDB detach, while `os._exit` does not.
|
|
# This allows the debugging session to remain at the same PC location,
|
|
# which is useful for attaching to qemu-system multiple times.
|
|
sys.stdout.flush()
|
|
sys.stderr.flush()
|
|
os._exit(return_code)
|