[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