summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Hylton <jeremy@alum.mit.edu>2001-01-25 17:03:37 (GMT)
committerJeremy Hylton <jeremy@alum.mit.edu>2001-01-25 17:03:37 (GMT)
commit92e9f29aecff6e28b59843cd5446b7984dc928f7 (patch)
tree7175acf4e47963b1542c0bfb998b8d85a273d434
parenta6ebc4841db8324d89266436f4b4ac28a1f2141d (diff)
downloadcpython-92e9f29aecff6e28b59843cd5446b7984dc928f7.zip
cpython-92e9f29aecff6e28b59843cd5446b7984dc928f7.tar.gz
cpython-92e9f29aecff6e28b59843cd5446b7984dc928f7.tar.bz2
add extra tests to verify that co_varnames is being set up properly
also normalize checks for syntax errors and delete commented out definition of verify.
-rw-r--r--Lib/test/output/test_grammar6
-rw-r--r--Lib/test/test_grammar.py41
2 files changed, 23 insertions, 24 deletions
diff --git a/Lib/test/output/test_grammar b/Lib/test/output/test_grammar
index 8ca7c33..bc9c9d4 100644
--- a/Lib/test/output/test_grammar
+++ b/Lib/test/output/test_grammar
@@ -24,6 +24,8 @@ extended print_stmt
1 2 3
1 1 1
hello world
+SyntaxError expected for "print ,"
+SyntaxError expected for "print >> x,"
del_stmt
pass_stmt
flow_stmt
@@ -56,6 +58,6 @@ classdef
[(1, 'Apple'), (1, 'Banana'), (1, 'Coconut'), (2, 'Apple'), (2, 'Banana'), (2, 'Coconut'), (3, 'Apple'), (3, 'Banana'), (3, 'Coconut'), (4, 'Apple'), (4, 'Banana'), (4, 'Coconut'), (5, 'Apple'), (5, 'Banana'), (5, 'Coconut')]
[(1, 'Banana'), (1, 'Coconut'), (2, 'Banana'), (2, 'Coconut'), (3, 'Banana'), (3, 'Coconut'), (4, 'Banana'), (4, 'Coconut'), (5, 'Banana'), (5, 'Coconut')]
[0, 0, 0]
-good: got a SyntaxError as expected
-good: got a SyntaxError as expected
+SyntaxError expected for "[i, s for i in nums for s in strs]"
+SyntaxError expected for "[x if y]"
[('Boeing', 'Airliner'), ('Boeing', 'Engine'), ('Ford', 'Engine'), ('Macdonalds', 'Cheeseburger')]
diff --git a/Lib/test/test_grammar.py b/Lib/test/test_grammar.py
index 3e7318a..a8d26dc 100644
--- a/Lib/test/test_grammar.py
+++ b/Lib/test/test_grammar.py
@@ -3,6 +3,14 @@
from test_support import *
+def check_syntax(statement):
+ try:
+ compile(statement, '<string>', 'exec')
+ except SyntaxError:
+ print 'SyntaxError expected for "%s"' % statement
+ else:
+ print 'Missing SyntaxError: "%s"' % statement
+
print '1. Parser'
print '1.1 Tokens'
@@ -83,9 +91,6 @@ x = 3.1e4
print '1.1.3 String literals'
-##def verify(s):
-## if not s: raise TestFailed, 'see traceback'
-
x = ''; y = ""; verify(len(x) == 0 and x == y)
x = '\''; y = "'"; verify(len(x) == 1 and x == y and ord(x) == 39)
x = '"'; y = "\""; verify(len(x) == 1 and x == y and ord(x) == 34)
@@ -154,12 +159,20 @@ f1(*(), **{})
def f2(one_argument): pass
def f3(two, arguments): pass
def f4(two, (compound, (argument, list))): pass
+def f5((compound, first), two): pass
+verify(f2.func_code.co_varnames == ('one_argument',))
+verify(f3.func_code.co_varnames == ('two', 'arguments'))
+verify(f4.func_code.co_varnames == ('two', '.2', 'compound', 'argument',
+ 'list'))
+verify(f5.func_code.co_varnames == ('.0', 'two', 'compound', 'first'))
def a1(one_arg,): pass
def a2(two, args,): pass
def v0(*rest): pass
def v1(a, *rest): pass
def v2(a, b, *rest): pass
-def v3(a, (b, c), *rest): pass
+def v3(a, (b, c), *rest): return a, b, c, rest
+verify(v3.func_code.co_varnames == ('a', '.2', 'rest', 'b', 'c'))
+verify(v3(1, (2, 3), 4) == (1, 2, 3, (4,)))
def d01(a=1): pass
d01()
d01(1)
@@ -302,13 +315,6 @@ def tellme(file=None):
driver()
# syntax errors
-def check_syntax(statement):
- try:
- compile(statement, '<string>', 'exec')
- except SyntaxError:
- pass
- else:
- print 'Missing SyntaxError: "%s"' % statement
check_syntax('print ,')
check_syntax('print >> x,')
@@ -618,17 +624,8 @@ def test_in_func(l):
print test_in_func(nums)
-try:
- eval("[i, s for i in nums for s in strs]")
- print "FAIL: should have raised a SyntaxError!"
-except SyntaxError:
- print "good: got a SyntaxError as expected"
-
-try:
- eval("[x if y]")
- print "FAIL: should have raised a SyntaxError!"
-except SyntaxError:
- print "good: got a SyntaxError as expected"
+check_syntax("[i, s for i in nums for s in strs]")
+check_syntax("[x if y]")
suppliers = [
(1, "Boeing"),