Author: Ronan Lamy <ronan.l...@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 _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit