1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
import os
import py
from rpython.jit.tl.test import jitcrashers
path = os.path.join(os.path.dirname(__file__), "..", "targetpypyjit-c")
JIT_EXECUTABLE = py.path.local(path)
del path
CRASH_FILE = os.path.abspath(jitcrashers.__file__.rstrip("c"))
if not JIT_EXECUTABLE.check():
py.test.skip("no JIT executable")
def setup_module(mod):
mod._old_cwd = os.getcwd()
os.chdir(str(JIT_EXECUTABLE.dirpath()))
def teardown_module(mod):
os.chdir(mod._old_cwd)
def check_crasher(func_name):
try:
JIT_EXECUTABLE.sysexec(CRASH_FILE, func_name)
except py.process.cmdexec.Error as e:
print "stderr"
print "------"
print e.err
print "stdout"
print "------"
print e.out
raise
def test_jit_crashers():
# Iterate in over sorted test functions, so it's always consistent and
# reproducible.
for func_name in sorted(jitcrashers.__dict__):
if func_name.startswith("jit_"):
yield check_crasher, func_name
|