[pypy-commit] pypy py3.5: Move all compile() tests from test_builtin.py to test_compile.py
rlamy
pypy.commits at gmail.com
Wed Nov 2 14:21:20 EDT 2016
Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: py3.5
Changeset: r88090:dac7bb0e17dd
Date: 2016-11-02 18:05 +0000
http://bitbucket.org/pypy/pypy/changeset/dac7bb0e17dd/
Log: Move all compile() tests from test_builtin.py to test_compile.py
diff --git a/pypy/module/__builtin__/test/test_builtin.py b/pypy/module/__builtin__/test/test_builtin.py
--- a/pypy/module/__builtin__/test/test_builtin.py
+++ b/pypy/module/__builtin__/test/test_builtin.py
@@ -497,73 +497,6 @@
assert eval("i", None, None) == 4
assert eval('a', None, dict(a=42)) == 42
- def test_compile(self):
- co = compile('1+2', '?', 'eval')
- assert eval(co) == 3
- co = compile(memoryview(b'1+2'), '?', 'eval')
- assert eval(co) == 3
- exc = raises(ValueError, compile, chr(0), '?', 'eval')
- assert str(exc.value) == "source code string cannot contain null bytes"
- compile("from __future__ import with_statement", "<test>", "exec")
- raises(SyntaxError, compile, '-', '?', 'eval')
- raises(SyntaxError, compile, '"\\xt"', '?', 'eval')
- raises(ValueError, compile, '1+2', '?', 'maybenot')
- raises(ValueError, compile, "\n", "<string>", "exec", 0xff)
- raises(TypeError, compile, '1+2', 12, 34)
-
- def test_compile_error_message(self):
- import re
- compile('# -*- coding: iso-8859-15 -*-\n', 'dummy', 'exec')
- compile(b'\xef\xbb\xbf\n', 'dummy', 'exec')
- compile(b'\xef\xbb\xbf# -*- coding: utf-8 -*-\n', 'dummy', 'exec')
- exc = raises(SyntaxError, compile,
- b'# -*- coding: fake -*-\n', 'dummy', 'exec')
- assert 'fake' in str(exc.value)
- exc = raises(SyntaxError, compile,
- b'\xef\xbb\xbf# -*- coding: iso-8859-15 -*-\n', 'dummy', 'exec')
- assert 'iso-8859-15' in str(exc.value)
- assert 'BOM' in str(exc.value)
- exc = raises(SyntaxError, compile,
- b'\xef\xbb\xbf# -*- coding: fake -*-\n', 'dummy', 'exec')
- assert 'fake' in str(exc.value)
- assert 'BOM' in str(exc.value)
-
- def test_unicode_compile(self):
- try:
- compile(u'-', '?', 'eval')
- except SyntaxError as e:
- assert e.lineno == 1
-
- def test_unicode_encoding_compile(self):
- code = "# -*- coding: utf-8 -*-\npass\n"
- compile(code, "tmp", "exec")
-
- def test_bytes_compile(self):
- code = b"# -*- coding: utf-8 -*-\npass\n"
- compile(code, "tmp", "exec")
- c = compile(b"# coding: latin1\nfoo = 'caf\xe9'\n", "<string>", "exec")
- ns = {}
- exec(c, ns)
- assert ns['foo'] == 'café'
- assert eval(b"# coding: latin1\n'caf\xe9'\n") == 'café'
-
- def test_memoryview_compile(self):
- m = memoryview(b'2 + 1')
- co = compile(m, 'baz', 'eval')
- assert eval(co) == 3
- assert eval(m) == 3
- ns = {}
- exec(memoryview(b'r = 2 + 1'), ns)
- assert ns['r'] == 3
-
- def test_recompile_ast(self):
- import _ast
- # raise exception when node type doesn't match with compile mode
- co1 = compile('print(1)', '<string>', 'exec', _ast.PyCF_ONLY_AST)
- raises(TypeError, compile, co1, '<ast>', 'eval')
- co2 = compile('1+1', '<string>', 'eval', _ast.PyCF_ONLY_AST)
- compile(co2, '<ast>', 'eval')
-
def test_isinstance(self):
assert isinstance(5, int)
assert isinstance(5, object)
@@ -637,30 +570,6 @@
assert hasattr(x, 'foo') is False
raises(KeyError, "hasattr(x, 'bar')")
- def test_compile_leading_newlines(self):
- src = """
-def fn(): pass
-"""
- co = compile(src, 'mymod', 'exec')
- firstlineno = co.co_firstlineno
- assert firstlineno == 2
-
- def test_compile_null_bytes(self):
- raises(ValueError, compile, '\x00', 'mymod', 'exec', 0)
- src = "#abc\x00def\n"
- raises(ValueError, compile, src, 'mymod', 'exec')
- raises(ValueError, compile, src, 'mymod', 'exec', 0)
-
- def test_compile_null_bytes_flag(self):
- try:
- from _ast import PyCF_ACCEPT_NULL_BYTES
- except ImportError:
- skip('PyPy only (requires _ast.PyCF_ACCEPT_NULL_BYTES)')
- raises(SyntaxError, compile, '\x00', 'mymod', 'exec',
- PyCF_ACCEPT_NULL_BYTES)
- src = "#abc\x00def\n"
- compile(src, 'mymod', 'exec', PyCF_ACCEPT_NULL_BYTES) # works
-
def test_print_function(self):
import builtins
import sys
diff --git a/pypy/module/__builtin__/test/test_compile.py b/pypy/module/__builtin__/test/test_compile.py
--- a/pypy/module/__builtin__/test/test_compile.py
+++ b/pypy/module/__builtin__/test/test_compile.py
@@ -1,6 +1,98 @@
+# coding: utf-8
class AppTestCompile:
- def test_compile(self):
+ def test_simple(self):
+ co = compile('1+2', '?', 'eval')
+ assert eval(co) == 3
+ co = compile(memoryview(b'1+2'), '?', 'eval')
+ assert eval(co) == 3
+ exc = raises(ValueError, compile, chr(0), '?', 'eval')
+ assert str(exc.value) == "source code string cannot contain null bytes"
+ compile("from __future__ import with_statement", "<test>", "exec")
+ raises(SyntaxError, compile, '-', '?', 'eval')
+ raises(SyntaxError, compile, '"\\xt"', '?', 'eval')
+ raises(ValueError, compile, '1+2', '?', 'maybenot')
+ raises(ValueError, compile, "\n", "<string>", "exec", 0xff)
+ raises(TypeError, compile, '1+2', 12, 34)
+
+ def test_error_message(self):
+ import re
+ compile('# -*- coding: iso-8859-15 -*-\n', 'dummy', 'exec')
+ compile(b'\xef\xbb\xbf\n', 'dummy', 'exec')
+ compile(b'\xef\xbb\xbf# -*- coding: utf-8 -*-\n', 'dummy', 'exec')
+ exc = raises(SyntaxError, compile,
+ b'# -*- coding: fake -*-\n', 'dummy', 'exec')
+ assert 'fake' in str(exc.value)
+ exc = raises(SyntaxError, compile,
+ b'\xef\xbb\xbf# -*- coding: iso-8859-15 -*-\n', 'dummy', 'exec')
+ assert 'iso-8859-15' in str(exc.value)
+ assert 'BOM' in str(exc.value)
+ exc = raises(SyntaxError, compile,
+ b'\xef\xbb\xbf# -*- coding: fake -*-\n', 'dummy', 'exec')
+ assert 'fake' in str(exc.value)
+ assert 'BOM' in str(exc.value)
+
+ def test_unicode(self):
+ try:
+ compile(u'-', '?', 'eval')
+ except SyntaxError as e:
+ assert e.lineno == 1
+
+ def test_unicode_encoding(self):
+ code = "# -*- coding: utf-8 -*-\npass\n"
+ compile(code, "tmp", "exec")
+
+ def test_bytes(self):
+ code = b"# -*- coding: utf-8 -*-\npass\n"
+ compile(code, "tmp", "exec")
+ c = compile(b"# coding: latin1\nfoo = 'caf\xe9'\n", "<string>", "exec")
+ ns = {}
+ exec(c, ns)
+ assert ns['foo'] == 'café'
+ assert eval(b"# coding: latin1\n'caf\xe9'\n") == 'café'
+
+ def test_memoryview(self):
+ m = memoryview(b'2 + 1')
+ co = compile(m, 'baz', 'eval')
+ assert eval(co) == 3
+ assert eval(m) == 3
+ ns = {}
+ exec(memoryview(b'r = 2 + 1'), ns)
+ assert ns['r'] == 3
+
+ def test_recompile_ast(self):
+ import _ast
+ # raise exception when node type doesn't match with compile mode
+ co1 = compile('print(1)', '<string>', 'exec', _ast.PyCF_ONLY_AST)
+ raises(TypeError, compile, co1, '<ast>', 'eval')
+ co2 = compile('1+1', '<string>', 'eval', _ast.PyCF_ONLY_AST)
+ compile(co2, '<ast>', 'eval')
+
+ def test_leading_newlines(self):
+ src = """
+def fn(): pass
+"""
+ co = compile(src, 'mymod', 'exec')
+ firstlineno = co.co_firstlineno
+ assert firstlineno == 2
+
+ def test_null_bytes(self):
+ raises(ValueError, compile, '\x00', 'mymod', 'exec', 0)
+ src = "#abc\x00def\n"
+ raises(ValueError, compile, src, 'mymod', 'exec')
+ raises(ValueError, compile, src, 'mymod', 'exec', 0)
+
+ def test_null_bytes_flag(self):
+ try:
+ from _ast import PyCF_ACCEPT_NULL_BYTES
+ except ImportError:
+ skip('PyPy only (requires _ast.PyCF_ACCEPT_NULL_BYTES)')
+ raises(SyntaxError, compile, '\x00', 'mymod', 'exec',
+ PyCF_ACCEPT_NULL_BYTES)
+ src = "#abc\x00def\n"
+ compile(src, 'mymod', 'exec', PyCF_ACCEPT_NULL_BYTES) # works
+
+ def test_compile_regression(self):
"""Clone of the part of the original test that was failing."""
import ast
More information about the pypy-commit
mailing list