mirror of
https://github.com/python/cpython.git
synced 2025-08-31 14:07:50 +00:00
Patch #442866: Tests for codeop.py.
This commit is contained in:
parent
27c430e54e
commit
3bd071e3f7
2 changed files with 100 additions and 0 deletions
90
Lib/test/test_codeop.py
Normal file
90
Lib/test/test_codeop.py
Normal file
|
@ -0,0 +1,90 @@
|
|||
"""
|
||||
Test cases for codeop.py
|
||||
Nick Mathewson
|
||||
"""
|
||||
import unittest
|
||||
from test_support import run_unittest
|
||||
|
||||
from codeop import compile_command
|
||||
|
||||
class CodeopTests(unittest.TestCase):
|
||||
|
||||
def assertValid(self, str, symbol='single'):
|
||||
'''succeed iff str is a valid piece of code'''
|
||||
expected = compile(str, "<input>", symbol)
|
||||
self.assertEquals( compile_command(str, "<input>", symbol), expected)
|
||||
|
||||
|
||||
def assertIncomplete(self, str, symbol='single'):
|
||||
'''succeed iff str is the start of a valid piece of code'''
|
||||
self.assertEquals( compile_command(str, symbol=symbol), None)
|
||||
|
||||
def assertInvalid(self, str, symbol='single', is_syntax=1):
|
||||
'''succeed iff str is the start of an invalid piece of code'''
|
||||
try:
|
||||
compile_command(str,symbol=symbol)
|
||||
self.fail("No exception thrown for invalid code")
|
||||
except SyntaxError:
|
||||
self.assert_(is_syntax)
|
||||
except OverflowError:
|
||||
self.assert_(not is_syntax)
|
||||
|
||||
def test_valid(self):
|
||||
av = self.assertValid
|
||||
av("a = 1\n")
|
||||
av("def x():\n pass\n")
|
||||
av("pass\n")
|
||||
av("3**3\n")
|
||||
av("if 9==3:\n pass\nelse:\n pass\n")
|
||||
av("#a\n#b\na = 3\n")
|
||||
av("#a\n\n \na=3\n")
|
||||
av("a=3\n\n")
|
||||
|
||||
# special case
|
||||
self.assertEquals(compile_command(""),
|
||||
compile("pass", "<input>", 'single'))
|
||||
|
||||
av("3**3","eval")
|
||||
av("(lambda z: \n z**3)","eval")
|
||||
av("#a\n#b\na**3","eval")
|
||||
|
||||
def test_incomplete(self):
|
||||
ai = self.assertIncomplete
|
||||
ai("(a **")
|
||||
ai("def x():\n")
|
||||
ai("(a,b,")
|
||||
ai("(a,b,(")
|
||||
ai("(a,b,(")
|
||||
ai("if 9==3:\n pass\nelse:\n")
|
||||
ai("if 9==3:\n pass\nelse:\n pass")
|
||||
ai("a = (")
|
||||
ai("a = 9+ \\")
|
||||
|
||||
ai("(","eval")
|
||||
ai("(\n\n\n","eval")
|
||||
ai("(9+","eval")
|
||||
ai("9+ \\","eval")
|
||||
ai("lambda z: \\","eval")
|
||||
|
||||
def test_invalid(self):
|
||||
ai = self.assertInvalid
|
||||
ai("a b")
|
||||
ai("a = ")
|
||||
ai("a = 9 +")
|
||||
|
||||
ai("a = 1","eval")
|
||||
ai("a = (","eval")
|
||||
ai("]","eval")
|
||||
ai("())","eval")
|
||||
ai("[}","eval")
|
||||
ai("9+","eval")
|
||||
ai("lambda z:","eval")
|
||||
ai("a b","eval")
|
||||
|
||||
def test_filename(self):
|
||||
self.assertEquals(compile_command("a = 1\n", "abc").co_filename,
|
||||
compile("a = 1\n", "abc", 'single').co_filename)
|
||||
self.assertNotEquals(compile_command("a = 1\n", "abc").co_filename,
|
||||
compile("a = 1\n", "def", 'single').co_filename)
|
||||
|
||||
run_unittest(CodeopTests)
|
Loading…
Add table
Add a link
Reference in a new issue