Author: Armin Rigo <ar...@tunes.org>
Branch: py3.5
Changeset: r88808:2647ec2b2b73
Date: 2016-12-02 09:48 +0100
http://bitbucket.org/pypy/pypy/changeset/2647ec2b2b73/

Log:    Some failing tests for the compiler

diff --git a/pypy/interpreter/test/test_compiler.py 
b/pypy/interpreter/test/test_compiler.py
--- a/pypy/interpreter/test/test_compiler.py
+++ b/pypy/interpreter/test/test_compiler.py
@@ -374,6 +374,44 @@
             ex.normalize_exception(space)
             assert ex.match(space, space.w_SyntaxError)
 
+    def test_no_warning_run(self):
+        space = self.space
+        w_mod = space.appexec((), '():\n import warnings\n return warnings\n') 
#sys.getmodule('warnings')
+        w_filterwarnings = space.getattr(w_mod, space.wrap('filterwarnings'))
+        filter_arg = Arguments(space, [ space.wrap('error') ], ["module"],
+                               [space.wrap("<tmp>")])
+        for code in ['''
+class C:
+    global __class__
+    __class__ = 42
+def testing():
+    return __class__
+''', '''
+def testing():
+    __class__ = 0
+    def f():
+        nonlocal __class__
+        __class__ = 42
+    f()
+    return __class__
+''', '''
+class Y:
+    class X:
+        nonlocal __class__
+        __class__ = 42
+def testing():
+    return 42   # 'Y.__class__' is *not* set to 42, at least on CPython 3.5.2
+'''
+        ]:
+            space.call_args(w_filterwarnings, filter_arg)
+            pycode = self.compiler.compile(code, '<tmp>', 'exec', 0)
+            space.call_method(w_mod, 'resetwarnings')
+            w_d = space.newdict()
+            pycode.exec_code(space, w_d, w_d)
+            w_res = space.call_function(
+                space.getitem(w_d, space.wrap('testing')))
+            assert space.unwrap(w_res) == 42
+
     def test_firstlineno(self):
         snippet = str(py.code.Source(r'''
             def f(): "line 2"
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to