[Python-checkins] python/dist/src/Lib/test test_codeop.py,1.3,1.3.12.1

pedronis@users.sourceforge.net pedronis@users.sourceforge.net
Fri, 16 May 2003 19:35:39 -0700


Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1:/tmp/cvs-serv2320

Modified Files:
      Tag: release22-maint
	test_codeop.py 
Log Message:
beefed up version: jython support, covers now fixed differences between CPython/Jython.


Index: test_codeop.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_codeop.py,v
retrieving revision 1.3
retrieving revision 1.3.12.1
diff -C2 -d -r1.3 -r1.3.12.1
*** test_codeop.py	20 Sep 2001 21:33:42 -0000	1.3
--- test_codeop.py	17 May 2003 02:35:37 -0000	1.3.12.1
***************
*** 4,18 ****
  """
  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'):
--- 4,44 ----
  """
  import unittest
! from test_support import run_unittest, is_jython
  
  from codeop import compile_command
  
+ if is_jython:
+     import sys
+     import cStringIO
+ 
+     def unify_callables(d):
+         for n,v in d.items():
+             if callable(v):
+                 d[n] = callable
+         return d
+ 
  class CodeopTests(unittest.TestCase):
  
      def assertValid(self, str, symbol='single'):
          '''succeed iff str is a valid piece of code'''
!         if is_jython:
!             code = compile_command(str, "<input>", symbol)
!             self.assert_(code)
!             if symbol == "single":
!                 d,r = {},{}
!                 sys.stdout = cStringIO.StringIO()
!                 try:
!                     exec code in d
!                     exec compile(str,"<input>","single") in r
!                 finally:
!                     sys.stdout = sys.__stdout__
!             elif symbol == 'eval':
!                 ctx = {'a': 2}
!                 d = { 'value': eval(code,ctx) }
!                 r = { 'value': eval(str,ctx) }
!             self.assertEquals(unify_callables(r),unify_callables(d))
!         else:
!             expected = compile(str, "<input>", symbol)
!             self.assertEquals( compile_command(str, "<input>", symbol), expected)
  
      def assertIncomplete(self, str, symbol='single'):
***************
*** 32,64 ****
      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")
--- 58,144 ----
      def test_valid(self):
          av = self.assertValid
+ 
+         # special case
+         if not is_jython:
+             self.assertEquals(compile_command(""),
+                             compile("pass", "<input>", 'single'))
+             self.assertEquals(compile_command("\n"),
+                             compile("pass", "<input>", 'single'))          
+         else:
+             av("")
+             av("\n")
+         
+         av("a = 1")
+         av("\na = 1")
          av("a = 1\n")
+         av("a = 1\n\n")
+         av("\n\na = 1\n\n")
+ 
          av("def x():\n  pass\n")
+         av("if 1:\n pass\n")
+ 
+         av("\n\nif 1: pass\n")
+         av("\n\nif 1: pass\n\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("\n\ndef x():\n  pass")
! 
          ai("a = 9+ \\")
+         ai("a = 'a\\")
+         ai("a = '''xy")
  
+         ai("","eval")
+         ai("\n","eval")
          ai("(","eval")
          ai("(\n\n\n","eval")
***************
*** 70,75 ****
--- 150,168 ----
          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("\n\n if 1: pass\n\npass")
+ 
+         ai("a = 9+ \\\n")
+         ai("a = 'a\\ ")
+         ai("a = 'a\\\n")
  
          ai("a = 1","eval")