[pypy-commit] pypy kill-someobject: fix some more tests
fijal
noreply at buildbot.pypy.org
Mon Oct 8 16:27:38 CEST 2012
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: kill-someobject
Changeset: r57937:8506cd9a86fd
Date: 2012-10-08 16:27 +0200
http://bitbucket.org/pypy/pypy/changeset/8506cd9a86fd/
Log: fix some more tests
diff --git a/pypy/translator/c/test/test_backendoptimized.py b/pypy/translator/c/test/test_backendoptimized.py
--- a/pypy/translator/c/test/test_backendoptimized.py
+++ b/pypy/translator/c/test/test_backendoptimized.py
@@ -15,8 +15,8 @@
else:
return 456
fn = self.getcompiled(f, [bool])
- assert f(True) == 123
- assert f(False) == 456
+ assert fn(True) == 123
+ assert fn(False) == 456
def test__del__(self):
class B(object):
diff --git a/pypy/translator/c/test/test_typed.py b/pypy/translator/c/test/test_typed.py
--- a/pypy/translator/c/test/test_typed.py
+++ b/pypy/translator/c/test/test_typed.py
@@ -5,8 +5,7 @@
import py
-from py.test import raises
-
+from pypy.rlib.rstackovf import StackOverflow
from pypy.rlib.objectmodel import compute_hash, current_object_addr_as_int
from pypy.rlib.rarithmetic import r_uint, r_ulonglong, r_longlong, intmask, longlongmask
from pypy.rpython.lltypesystem import rffi, lltype
@@ -18,15 +17,25 @@
def getcompiled(self, func, argtypes):
return compile(func, argtypes, backendopt=False)
+ def get_wrapper(self, func):
+ def wrapper(*args):
+ try:
+ return func(*args)
+ except OverflowError:
+ return -1
+ except ZeroDivisionError:
+ return -2
+ return wrapper
+
def test_set_attr(self):
- set_attr = self.getcompiled(snippet.set_attr)
+ set_attr = self.getcompiled(snippet.set_attr, [])
assert set_attr() == 2
def test_inheritance2(self):
def wrap():
res = snippet.inheritance2()
return res == ((-12, -12.0), (3, 12.3))
- fn = self.getcompiled(wrap)
+ fn = self.getcompiled(wrap, [])
assert fn()
def test_factorial2(self):
@@ -42,7 +51,8 @@
assert simple_method(55) == 55
def test_sieve_of_eratosthenes(self):
- sieve_of_eratosthenes = self.getcompiled(snippet.sieve_of_eratosthenes)
+ sieve_of_eratosthenes = self.getcompiled(snippet.sieve_of_eratosthenes,
+ [])
assert sieve_of_eratosthenes() == 1028
def test_nested_whiles(self):
@@ -53,7 +63,7 @@
def wrap():
res = snippet.call_unpack_56()
return res == (2, 5, 6)
- fn = self.getcompiled(wrap)
+ fn = self.getcompiled(wrap, [])
assert fn()
def test_class_defaultattr(self):
@@ -63,7 +73,7 @@
k = K()
k.n += " world"
return k.n
- fn = self.getcompiled(class_defaultattr)
+ fn = self.getcompiled(class_defaultattr, [])
assert fn() == "hello world"
def test_tuple_repr(self):
@@ -210,12 +220,12 @@
def test_long_long(self):
def f(i):
return 4 * i
- fn = self.getcompiled(f, [r_ulonglong], view=False)
+ fn = self.getcompiled(f, [r_ulonglong])
assert fn(r_ulonglong(2147483647)) == 4 * 2147483647
def g(i):
return 4 * i
- gn = self.getcompiled(g, [r_longlong], view=False)
+ gn = self.getcompiled(g, [r_longlong])
assert gn(r_longlong(2147483647)) == 4 * 2147483647
def g(i):
@@ -460,39 +470,45 @@
assert res == f(i, ord(l[j]))
def test_int_overflow(self):
- fn = self.getcompiled(snippet.add_func, [int])
- raises(OverflowError, fn, sys.maxint)
+ fn = self.getcompiled(self.get_wrapper(snippet.add_func), [int])
+ assert fn(sys.maxint) == -1
def test_int_floordiv_ovf_zer(self):
- fn = self.getcompiled(snippet.div_func, [int])
- raises(OverflowError, fn, -1)
- raises(ZeroDivisionError, fn, 0)
+ fn = self.getcompiled(self.get_wrapper(snippet.div_func), [int])
+ assert fn(-1) == -1
+ assert fn(0) == -2
def test_int_mul_ovf(self):
- fn = self.getcompiled(snippet.mul_func, [int, int])
+ fn = self.getcompiled(self.get_wrapper(snippet.mul_func), [int, int])
for y in range(-5, 5):
for x in range(-5, 5):
assert fn(x, y) == snippet.mul_func(x, y)
n = sys.maxint / 4
assert fn(n, 3) == snippet.mul_func(n, 3)
assert fn(n, 4) == snippet.mul_func(n, 4)
- raises(OverflowError, fn, n, 5)
+ assert fn(n, 5) == -1
def test_int_mod_ovf_zer(self):
- fn = self.getcompiled(snippet.mod_func, [int])
- raises(OverflowError, fn, -1)
- raises(ZeroDivisionError, fn, 0)
+ fn = self.getcompiled(self.get_wrapper(snippet.mod_func), [int])
+ assert fn(-1) == -1
+ assert fn(0) == -2
def test_int_lshift_ovf(self):
- fn = self.getcompiled(snippet.lshift_func, [int])
- raises(OverflowError, fn, 1)
+ fn = self.getcompiled(self.get_wrapper(snippet.lshift_func), [int])
+ assert fn(1) == -1
def test_int_unary_ovf(self):
- fn = self.getcompiled(snippet.unary_func, [int])
+ def w(a, b):
+ if not b:
+ return snippet.unary_func(a)[0]
+ else:
+ return snippet.unary_func(a)[1]
+ fn = self.getcompiled(self.get_wrapper(w), [int, int])
for i in range(-3, 3):
- assert fn(i) == (-(i), abs(i - 1))
- raises(OverflowError, fn, -sys.maxint - 1)
- raises(OverflowError, fn, -sys.maxint)
+ assert fn(i, 0) == -(i)
+ assert fn(i, 1) == abs(i - 1)
+ assert fn(-sys.maxint - 1, 0) == -1
+ assert fn(-sys.maxint, 0) == -1
# floats
def test_float_operations(self):
@@ -574,17 +590,19 @@
#
def fn():
d2 = D()
- return (compute_hash(d2),
- current_object_addr_as_int(d2),
- compute_hash(c),
- compute_hash(d),
- compute_hash(("Hi", None, (7.5, 2, d))))
+ return str((compute_hash(d2),
+ current_object_addr_as_int(d2),
+ compute_hash(c),
+ compute_hash(d),
+ compute_hash(("Hi", None, (7.5, 2, d)))))
f = self.getcompiled(fn, [])
res = f()
# xxx the next line is too precise, checking the exact implementation
- assert res[0] == res[1]
+ res = [int(a) for a in res[1:-1].split(",")]
+ if res[0] != res[1]:
+ assert res[0] == -res[1] - 1
assert res[2] != compute_hash(c) # likely
assert res[3] == compute_hash(d)
assert res[4] == compute_hash(("Hi", None, (7.5, 2, d)))
@@ -619,22 +637,20 @@
r = range(10, 37, 4)
try:
return r[idx]
- except:
- raise
+ except IndexError:
+ return -1
f = self.getcompiled(fn, [int])
assert f(0) == fn(0)
assert f(-1) == fn(-1)
- raises(IndexError, f, 42)
+ assert f(42) == -1
def test_range_step(self):
def fn(step):
r = range(10, 37, step)
- # we always raise on step = 0
return r[-2]
f = self.getcompiled(fn, [int])
assert f(1) == fn(1)
assert f(3) == fn(3)
- raises(ValueError, f, 0)
def test_range_iter(self):
def fn(start, stop, step):
@@ -682,15 +698,18 @@
def test_recursion_detection(self):
def f(n):
- if n == 0:
- return 1
- else:
- return n * f(n - 1)
+ try:
+ if n == 0:
+ return 1
+ else:
+ return n * f(n - 1)
+ except StackOverflow:
+ return -42
fn = self.getcompiled(f, [int])
assert fn(7) == 5040
assert fn(7) == 5040 # detection must work several times, too
assert fn(7) == 5040
- py.test.raises(RuntimeError, fn, -1)
+ assert fn(-1) == -42
def test_infinite_recursion(self):
def f(x):
More information about the pypy-commit
mailing list