[pypy-commit] pypy jit-leaner-frontend: use hypothesis and find a bug
fijal
pypy.commits at gmail.com
Fri Mar 4 09:51:54 EST 2016
Author: fijal
Branch: jit-leaner-frontend
Changeset: r82766:9030d27af66e
Date: 2016-03-04 16:51 +0200
http://bitbucket.org/pypy/pypy/changeset/9030d27af66e/
Log: use hypothesis and find a bug
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_util.py b/rpython/jit/metainterp/optimizeopt/test/test_util.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_util.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_util.py
@@ -520,7 +520,8 @@
guard.rd_snapshot = resume.TopSnapshot(None, [], [])
res.operations.insert(-1, guard)
- def assert_equal(self, optimized, expected, text_right=None):
+ @staticmethod
+ def assert_equal(optimized, expected, text_right=None):
from rpython.jit.metainterp.optimizeopt.util import equaloplists
assert len(optimized.inputargs) == len(expected.inputargs)
remap = {}
diff --git a/rpython/jit/metainterp/test/strategies.py b/rpython/jit/metainterp/test/strategies.py
--- a/rpython/jit/metainterp/test/strategies.py
+++ b/rpython/jit/metainterp/test/strategies.py
@@ -13,7 +13,7 @@
lambda cis: strategies.lists(strategies.sampled_from(cis)))
@strategies.composite
-def lists_of_operations(draw, inputboxes):
+def lists_of_operations(draw, inputboxes=intboxes):
def get(draw, l1, l2, index):
if index < len(l1):
return l1[index]
@@ -33,7 +33,7 @@
arg0 = get(draw, inputargs, ops, draw(s))
arg1 = get(draw, inputargs, ops, draw(s))
ops.append(ResOperation(rop.INT_ADD, [arg0, arg1], -1))
- return ops
+ return inputargs, ops
if __name__ == '__main__':
import pprint
diff --git a/rpython/jit/metainterp/test/test_opencoder.py b/rpython/jit/metainterp/test/test_opencoder.py
--- a/rpython/jit/metainterp/test/test_opencoder.py
+++ b/rpython/jit/metainterp/test/test_opencoder.py
@@ -4,6 +4,10 @@
from rpython.jit.metainterp.history import ConstInt
from rpython.jit.metainterp.optimizeopt.optimizer import Optimizer
from rpython.jit.metainterp import resume
+from rpython.jit.metainterp.test.strategies import lists_of_operations
+from rpython.jit.metainterp.optimizeopt.test.test_util import BaseTest
+from rpython.jit.metainterp.history import TreeLoop
+from hypothesis import given
class JitCode(object):
def __init__(self, index):
@@ -108,3 +112,18 @@
assert jc_index == 2
assert pc == 1
assert [snapshot_iter.next() for i in range(2)] == [i0, i1]
+
+ @given(lists_of_operations())
+ def test_random_snapshot(self, lst):
+ inputargs, ops = lst
+ t = Trace(inputargs)
+ for op in ops:
+ t.record_op(op.getopnum(), op.getarglist())
+ inpargs, l, iter = self.unpack(t)
+ loop1 = TreeLoop("loop1")
+ loop1.inputargs = inputargs
+ loop1.operations = ops
+ loop2 = TreeLoop("loop2")
+ loop2.inputargs = inpargs
+ loop2.operations = l
+ BaseTest.assert_equal(loop1, loop2)
\ No newline at end of file
More information about the pypy-commit
mailing list