Author: Ronan Lamy <[email protected]>
Branch:
Changeset: r88091:50aae6a02e7f
Date: 2016-11-02 18:20 +0000
http://bitbucket.org/pypy/pypy/changeset/50aae6a02e7f/
Log: Move all compile() tests from test_builtin.py to test_compile.py
(backport dac7bb0e17dd)
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
@@ -509,59 +509,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(buffer('1+2'), '?', 'eval')
- assert eval(co) == 3
- exc = raises(TypeError, compile, chr(0), '?', 'eval')
- assert str(exc.value) == "compile() expected string without null bytes"
- exc = raises(TypeError, compile, unichr(0), '?', 'eval')
- assert str(exc.value) == "compile() expected string without null bytes"
- exc = raises(TypeError, compile, memoryview('1+2'), '?', 'eval')
- assert str(exc.value) == "expected a readable buffer object"
- compile("from __future__ import with_statement", "<test>", "exec")
- raises(SyntaxError, compile, '-', '?', 'eval')
- raises(ValueError, 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 = u"# -*- coding: utf-8 -*-\npass\n"
- raises(SyntaxError, compile, code, "tmp", "exec")
-
- 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)
@@ -624,34 +571,10 @@
raises(TypeError, hasattr, x, 42)
raises(UnicodeError, hasattr, x, u'\u5678') # cannot encode attr name
- 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(TypeError, compile, '\x00', 'mymod', 'exec', 0)
- src = "#abc\x00def\n"
- raises(TypeError, compile, src, 'mymod', 'exec')
- raises(TypeError, compile, src, 'mymod', 'exec', 0)
+ def test_execfile_args(self):
execfile(self.nullbytes) # works
-
- def test_execfile_args(self):
raises(TypeError, execfile, self.nonexistent, {}, ())
- 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 __builtin__
import sys
diff --git a/pypy/module/__builtin__/test/test_compile.py
b/pypy/module/__builtin__/test/test_compile.py
new file mode 100644
--- /dev/null
+++ b/pypy/module/__builtin__/test/test_compile.py
@@ -0,0 +1,77 @@
+class AppTestCompile:
+ def test_simple(self):
+ co = compile('1+2', '?', 'eval')
+ assert eval(co) == 3
+ co = compile(buffer('1+2'), '?', 'eval')
+ assert eval(co) == 3
+ exc = raises(TypeError, compile, chr(0), '?', 'eval')
+ assert str(exc.value) == "compile() expected string without null bytes"
+ exc = raises(TypeError, compile, unichr(0), '?', 'eval')
+ assert str(exc.value) == "compile() expected string without null bytes"
+ exc = raises(TypeError, compile, memoryview('1+2'), '?', 'eval')
+ assert str(exc.value) == "expected a readable buffer object"
+ compile("from __future__ import with_statement", "<test>", "exec")
+ raises(SyntaxError, compile, '-', '?', 'eval')
+ raises(ValueError, 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 = u"# -*- coding: utf-8 -*-\npass\n"
+ raises(SyntaxError, compile, code, "tmp", "exec")
+
+ 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(TypeError, compile, '\x00', 'mymod', 'exec', 0)
+ src = "#abc\x00def\n"
+ raises(TypeError, compile, src, 'mymod', 'exec')
+ raises(TypeError, 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
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit