mirror of https://github.com/pwndbg/pwndbg.git
Add smoke test (#1113)
parent
099c766342
commit
2d483fcb12
@ -0,0 +1,55 @@
|
||||
import gdb
|
||||
import pytest
|
||||
|
||||
import tests
|
||||
from pwndbg.commands import command_names
|
||||
from pwndbg.commands import commands
|
||||
from pwndbg.commands.shell import shellcmd_names
|
||||
|
||||
BINARY = tests.binaries.get("heap_bins.out")
|
||||
|
||||
# TODO: See if we can reduce the number of commands we need to skip
|
||||
blacklisted_commands = set(
|
||||
[
|
||||
"disasm",
|
||||
"unhex",
|
||||
"bugreport",
|
||||
"try_free",
|
||||
"errno",
|
||||
"nextproginstr",
|
||||
]
|
||||
)
|
||||
|
||||
# Don't run any shell commands
|
||||
blacklisted_commands.update(shellcmd_names)
|
||||
|
||||
# TODO: Figure out why these are being thrown and then remove this
|
||||
whitelisted_exceptions = [
|
||||
"Cannot access memory at address",
|
||||
"Cannot insert breakpoint",
|
||||
"Warning:",
|
||||
"The program is not being run",
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="flaky test")
|
||||
def test_commands(start_binary):
|
||||
for name in command_names:
|
||||
print("Running command", name)
|
||||
try:
|
||||
start_binary(BINARY)
|
||||
|
||||
if name in blacklisted_commands:
|
||||
continue
|
||||
|
||||
gdb.execute(name)
|
||||
except gdb.error as e:
|
||||
ignore = False
|
||||
for ex in whitelisted_exceptions:
|
||||
if ex in str(e):
|
||||
ignore = True
|
||||
print("Ignoring exception in command", name)
|
||||
break
|
||||
|
||||
if not ignore:
|
||||
raise e
|
||||
Loading…
Reference in new issue