[pypy-svn] r10360 - in pypy/dist/pypy/translator: . genc/test test
pedronis at codespeak.net
pedronis at codespeak.net
Wed Apr 6 13:58:04 CEST 2005
Author: pedronis
Date: Wed Apr 6 13:58:04 2005
New Revision: 10360
Modified:
pypy/dist/pypy/translator/genc/test/test_ctrans.py
pypy/dist/pypy/translator/geninterplevel.py
pypy/dist/pypy/translator/test/snippet.py
pypy/dist/pypy/translator/test/test_geninterp.py
Log:
testing for translation of exception catching.
fix a related detail in geninterplevel.py
Modified: pypy/dist/pypy/translator/genc/test/test_ctrans.py
==============================================================================
--- pypy/dist/pypy/translator/genc/test/test_ctrans.py (original)
+++ pypy/dist/pypy/translator/genc/test/test_ctrans.py Wed Apr 6 13:58:04 2005
@@ -216,6 +216,10 @@
assert fn(117, 114) == (-6, True)
assert fn(117, 124) == (-3, True)
+ def test_do_try_raise_choose(self):
+ fn = self.build_cfunc(snippet.do_try_raise_choose)
+ result = fn()
+ assert result == [-1,0,1,2]
class TestAnnotatedTestCase:
@@ -331,6 +335,10 @@
assert fn(5) == 0
assert abs(fn(7) + 0.8584) < 1E-5
+ def test_do_try_raise_choose(self):
+ fn = self.getcompiled(snippet.do_try_raise_choose)
+ result = fn()
+ assert result == [-1,0,1,2]
class TestTypedTestCase(TestAnnotatedTestCase):
Modified: pypy/dist/pypy/translator/geninterplevel.py
==============================================================================
--- pypy/dist/pypy/translator/geninterplevel.py (original)
+++ pypy/dist/pypy/translator/geninterplevel.py Wed Apr 6 13:58:04 2005
@@ -590,7 +590,7 @@
if issubclass(cls, Exception):
# if cls.__module__ == 'exceptions':
# don't rely on this, py.magic redefines AssertionError
- if getattr(__builtin__,cls.__name__) is cls:
+ if getattr(__builtin__,cls.__name__,None) is cls:
# exception are defined on the space
return 'space.w_%s' % cls.__name__
Modified: pypy/dist/pypy/translator/test/snippet.py
==============================================================================
--- pypy/dist/pypy/translator/test/snippet.py (original)
+++ pypy/dist/pypy/translator/test/snippet.py Wed Apr 6 13:58:04 2005
@@ -299,6 +299,39 @@
return callable_prebuilt_constant()
+class E1(Exception):
+ pass
+
+class E2(Exception):
+ pass
+
+def raise_choose(n):
+ if n == 1:
+ raise E1
+ elif n == 2:
+ raise E2
+ elif n == -1:
+ raise Exception
+ return 0
+
+def try_raise_choose(n):
+ try:
+ raise_choose(n)
+ except E1:
+ return 1
+ except E2:
+ return 2
+ except Exception:
+ return -1
+ return 0
+
+def do_try_raise_choose():
+ r = []
+ for n in [-1,0,1,2]:
+ r.append(try_raise_choose(n))
+ return r
+
+
# INHERITANCE / CLASS TESTS
class C(object): pass
@@ -1062,4 +1095,4 @@
return "confused"
return istk.top(), sstk.top()
-
+
Modified: pypy/dist/pypy/translator/test/test_geninterp.py
==============================================================================
--- pypy/dist/pypy/translator/test/test_geninterp.py (original)
+++ pypy/dist/pypy/translator/test/test_geninterp.py Wed Apr 6 13:58:04 2005
@@ -245,3 +245,8 @@
result = fn(l)
assert l == [3, 'c', 8, 11, 'h', 9]
assert result == ([3, 'c'], [9], [11, 'h'])
+
+ def test_do_try_raise_choose(self):
+ fn = self.build_interpfunc(snippet.do_try_raise_choose)
+ result = fn()
+ assert result == [-1,0,1,2]
More information about the pypy-svn
mailing list