Index: codeop.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/codeop.py,v
retrieving revision 1.5
diff -c -5 -r1.5 codeop.py
*** codeop.py 17 Aug 2001 22:11:27 -0000 1.5
--- codeop.py 15 May 2003 01:43:42 -0000
***************
*** 62,78 ****
for fname in __future__.all_feature_names]
__all__ = ["compile_command", "Compile", "CommandCompiler"]
def _maybe_compile(compiler, source, filename, symbol):
! # Check for source consisting of only blank lines and comments
! for line in source.split("\n"):
! line = line.strip()
! if line and line[0] != '#':
! break # Leave it alone
else:
! source = "pass" # Replace it with a 'pass' statement
err = err1 = err2 = None
code = code1 = code2 = None
try:
--- 62,83 ----
for fname in __future__.all_feature_names]
__all__ = ["compile_command", "Compile", "CommandCompiler"]
def _maybe_compile(compiler, source, filename, symbol):
! if symbol == 'single':
! # Check for source consisting of only blank lines and comments
! for line in source.split("\n"):
! line = line.strip()
! if line and line[0] != '#':
! break # Leave it alone
! else:
! source = "pass" # Replace it with a 'pass' statement
! elif symbol == 'eval':
! pass
else:
! raise ValueError,"symbol arg must be either single or eval"
err = err1 = err2 = None
code = code1 = code2 = None
try:
Index: test/test_codeop.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_codeop.py,v
retrieving revision 1.3
diff -c -5 -r1.3 test_codeop.py
*** test/test_codeop.py 20 Sep 2001 21:33:42 -0000 1.3
--- test/test_codeop.py 15 May 2003 01:43:42 -0000
***************
*** 1,21 ****
"""
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, "", symbol)
! self.assertEquals( compile_command(str, "", 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)
--- 1,23 ----
"""
Test cases for codeop.py
Nick Mathewson
"""
import unittest
! from test_support import run_unittest, is_jython
from codeop import compile_command
class CodeopTests(unittest.TestCase):
def assertValid(self, str, symbol='single'):
'''succeed iff str is a valid piece of code'''
! if is_jython:
! self.assert_( compile_command(str, "", symbol))
! else:
! expected = compile(str, "", symbol)
! self.assertEquals( compile_command(str, "", 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)
***************
*** 29,78 ****
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", "", '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")
--- 31,138 ----
except OverflowError:
self.assert_(not is_syntax)
def test_valid(self):
av = self.assertValid
+
+ # special case
+ if not is_jython:
+ self.assertEquals(compile_command(""),
+ compile("pass", "", 'single'))
+ self.assertEquals(compile_command("\n"),
+ compile("pass", "", 'single'))
+ else:
+ av("")
+ av("\n")
+
+ av("a = 1")
av("a = 1\n")
+
av("def x():\n pass\n")
+ av("if 1:\n pass\n")
+
+ av("def x():\n\n pass\n")
+ av("def x():\n pass\n \n")
+ av("def x():\n pass\n \n")
+
av("pass\n")
av("3**3\n")
+
av("if 9==3:\n pass\nelse:\n pass\n")
+ av("if 1:\n pass\n if 1:\n pass\n else:\n pass\n")
+
av("#a\n#b\na = 3\n")
av("#a\n\n \na=3\n")
av("a=3\n\n")
! av("a = 9+ \\\n3")
av("3**3","eval")
av("(lambda z: \n z**3)","eval")
+
+ av("9+ \\\n3","eval")
+ av("9+ \\\n3\n","eval")
+
+ av("\n\na**3","eval")
+ av("\n \na**3","eval")
av("#a\n#b\na**3","eval")
def test_incomplete(self):
ai = self.assertIncomplete
+
ai("(a **")
ai("(a,b,")
ai("(a,b,(")
ai("(a,b,(")
+ ai("a = (")
+ ai("a = {")
+ ai("b + {")
+
+ ai("if 9==3:\n pass\nelse:")
ai("if 9==3:\n pass\nelse:\n")
ai("if 9==3:\n pass\nelse:\n pass")
! ai("if 1:")
! ai("if 1:\n")
! ai("if 1:\n pass\n if 1:\n pass\n else:")
! ai("if 1:\n pass\n if 1:\n pass\n else:\n")
! ai("if 1:\n pass\n if 1:\n pass\n else:\n pass")
!
! ai("def x():")
! ai("def x():\n")
! ai("def x():\n\n")
!
! ai("def x():\n pass")
! ai("def x():\n pass\n ")
! ai("def x():\n pass\n ")
!
ai("a = 9+ \\")
+ ai("a = 'a\\")
+ ai("a = '''xy")
+ ai("","eval")
+ ai("\n","eval")
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 b @")
+ ai("a ** @")
+
ai("a = ")
ai("a = 9 +")
+
+ ai("def x():\n\npass\n")
+
+ ai("a = 9+ \\\n")
+ ai("a = 'a\\ ")
+ ai("a = 'a\\\n")
ai("a = 1","eval")
ai("a = (","eval")
ai("]","eval")
ai("())","eval")