annotate Lib/test/test_code.py @ 58765:2ba7677bfa95 legacy-trunk

testCopysign was defined twice in test_math; combine the definitions
author Mark Dickinson <dickinsm@gmail.com>
date Sat, 06 Feb 2010 23:11:25 +0000
parents a171048daf76
children 22f589a8e3ab
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
35742
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
1 """This module includes tests of the code object representation.
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
2
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
3 >>> def f(x):
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
4 ... def g(y):
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
5 ... return x + y
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
6 ... return g
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
7 ...
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
8
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
9 >>> dump(f.func_code)
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
10 name: f
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
11 argcount: 1
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
12 names: ()
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
13 varnames: ('x', 'g')
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
14 cellvars: ('x',)
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
15 freevars: ()
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
16 nlocals: 2
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
17 flags: 3
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
18 consts: ('None', '<code object g>')
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
19
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
20 >>> dump(f(4).func_code)
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
21 name: g
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
22 argcount: 1
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
23 names: ()
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
24 varnames: ('y',)
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
25 cellvars: ()
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
26 freevars: ('x',)
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
27 nlocals: 1
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
28 flags: 19
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
29 consts: ('None',)
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
30
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
31 >>> def h(x, y):
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
32 ... a = x + y
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
33 ... b = x - y
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
34 ... c = a * b
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
35 ... return c
36121
686306a67e9b Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 35742
diff changeset
36 ...
35742
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
37 >>> dump(h.func_code)
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
38 name: h
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
39 argcount: 2
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
40 names: ()
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
41 varnames: ('x', 'y', 'a', 'b', 'c')
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
42 cellvars: ()
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
43 freevars: ()
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
44 nlocals: 5
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
45 flags: 67
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
46 consts: ('None',)
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
47
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
48 >>> def attrs(obj):
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
49 ... print obj.attr1
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
50 ... print obj.attr2
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
51 ... print obj.attr3
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
52
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
53 >>> dump(attrs.func_code)
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
54 name: attrs
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
55 argcount: 1
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
56 names: ('attr1', 'attr2', 'attr3')
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
57 varnames: ('obj',)
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
58 cellvars: ()
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
59 freevars: ()
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
60 nlocals: 1
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
61 flags: 67
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
62 consts: ('None',)
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
63
39364
8ef3f8cf90e1 Bug #1333982: string/number constants were inappropriately stored
Neal Norwitz <nnorwitz@gmail.com>
parents: 36121
diff changeset
64 >>> def optimize_away():
8ef3f8cf90e1 Bug #1333982: string/number constants were inappropriately stored
Neal Norwitz <nnorwitz@gmail.com>
parents: 36121
diff changeset
65 ... 'doc string'
8ef3f8cf90e1 Bug #1333982: string/number constants were inappropriately stored
Neal Norwitz <nnorwitz@gmail.com>
parents: 36121
diff changeset
66 ... 'not a docstring'
8ef3f8cf90e1 Bug #1333982: string/number constants were inappropriately stored
Neal Norwitz <nnorwitz@gmail.com>
parents: 36121
diff changeset
67 ... 53
8ef3f8cf90e1 Bug #1333982: string/number constants were inappropriately stored
Neal Norwitz <nnorwitz@gmail.com>
parents: 36121
diff changeset
68 ... 53L
8ef3f8cf90e1 Bug #1333982: string/number constants were inappropriately stored
Neal Norwitz <nnorwitz@gmail.com>
parents: 36121
diff changeset
69
8ef3f8cf90e1 Bug #1333982: string/number constants were inappropriately stored
Neal Norwitz <nnorwitz@gmail.com>
parents: 36121
diff changeset
70 >>> dump(optimize_away.func_code)
8ef3f8cf90e1 Bug #1333982: string/number constants were inappropriately stored
Neal Norwitz <nnorwitz@gmail.com>
parents: 36121
diff changeset
71 name: optimize_away
8ef3f8cf90e1 Bug #1333982: string/number constants were inappropriately stored
Neal Norwitz <nnorwitz@gmail.com>
parents: 36121
diff changeset
72 argcount: 0
8ef3f8cf90e1 Bug #1333982: string/number constants were inappropriately stored
Neal Norwitz <nnorwitz@gmail.com>
parents: 36121
diff changeset
73 names: ()
8ef3f8cf90e1 Bug #1333982: string/number constants were inappropriately stored
Neal Norwitz <nnorwitz@gmail.com>
parents: 36121
diff changeset
74 varnames: ()
8ef3f8cf90e1 Bug #1333982: string/number constants were inappropriately stored
Neal Norwitz <nnorwitz@gmail.com>
parents: 36121
diff changeset
75 cellvars: ()
8ef3f8cf90e1 Bug #1333982: string/number constants were inappropriately stored
Neal Norwitz <nnorwitz@gmail.com>
parents: 36121
diff changeset
76 freevars: ()
8ef3f8cf90e1 Bug #1333982: string/number constants were inappropriately stored
Neal Norwitz <nnorwitz@gmail.com>
parents: 36121
diff changeset
77 nlocals: 0
8ef3f8cf90e1 Bug #1333982: string/number constants were inappropriately stored
Neal Norwitz <nnorwitz@gmail.com>
parents: 36121
diff changeset
78 flags: 67
8ef3f8cf90e1 Bug #1333982: string/number constants were inappropriately stored
Neal Norwitz <nnorwitz@gmail.com>
parents: 36121
diff changeset
79 consts: ("'doc string'", 'None')
8ef3f8cf90e1 Bug #1333982: string/number constants were inappropriately stored
Neal Norwitz <nnorwitz@gmail.com>
parents: 36121
diff changeset
80
35742
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
81 """
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
82
53930
a171048daf76 PyCode_NewEmpty:
Jeffrey Yasskin <jyasskin@gmail.com>
parents: 46242
diff changeset
83 import unittest
a171048daf76 PyCode_NewEmpty:
Jeffrey Yasskin <jyasskin@gmail.com>
parents: 46242
diff changeset
84 import _testcapi
a171048daf76 PyCode_NewEmpty:
Jeffrey Yasskin <jyasskin@gmail.com>
parents: 46242
diff changeset
85
35742
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
86 def consts(t):
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
87 """Yield a doctest-safe sequence of object reprs."""
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
88 for elt in t:
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
89 r = repr(elt)
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
90 if r.startswith("<code object"):
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
91 yield "<code object %s>" % elt.co_name
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
92 else:
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
93 yield r
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
94
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
95 def dump(co):
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
96 """Print out a text representation of a code object."""
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
97 for attr in ["name", "argcount", "names", "varnames", "cellvars",
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
98 "freevars", "nlocals", "flags"]:
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
99 print "%s: %s" % (attr, getattr(co, "co_" + attr))
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
100 print "consts:", tuple(consts(co.co_consts))
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
101
53930
a171048daf76 PyCode_NewEmpty:
Jeffrey Yasskin <jyasskin@gmail.com>
parents: 46242
diff changeset
102
a171048daf76 PyCode_NewEmpty:
Jeffrey Yasskin <jyasskin@gmail.com>
parents: 46242
diff changeset
103 class CodeTest(unittest.TestCase):
a171048daf76 PyCode_NewEmpty:
Jeffrey Yasskin <jyasskin@gmail.com>
parents: 46242
diff changeset
104
a171048daf76 PyCode_NewEmpty:
Jeffrey Yasskin <jyasskin@gmail.com>
parents: 46242
diff changeset
105 def test_newempty(self):
a171048daf76 PyCode_NewEmpty:
Jeffrey Yasskin <jyasskin@gmail.com>
parents: 46242
diff changeset
106 co = _testcapi.code_newempty("filename", "funcname", 15)
a171048daf76 PyCode_NewEmpty:
Jeffrey Yasskin <jyasskin@gmail.com>
parents: 46242
diff changeset
107 self.assertEquals(co.co_filename, "filename")
a171048daf76 PyCode_NewEmpty:
Jeffrey Yasskin <jyasskin@gmail.com>
parents: 46242
diff changeset
108 self.assertEquals(co.co_name, "funcname")
a171048daf76 PyCode_NewEmpty:
Jeffrey Yasskin <jyasskin@gmail.com>
parents: 46242
diff changeset
109 self.assertEquals(co.co_firstlineno, 15)
a171048daf76 PyCode_NewEmpty:
Jeffrey Yasskin <jyasskin@gmail.com>
parents: 46242
diff changeset
110
a171048daf76 PyCode_NewEmpty:
Jeffrey Yasskin <jyasskin@gmail.com>
parents: 46242
diff changeset
111
35742
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
112 def test_main(verbose=None):
53930
a171048daf76 PyCode_NewEmpty:
Jeffrey Yasskin <jyasskin@gmail.com>
parents: 46242
diff changeset
113 from test.test_support import run_doctest, run_unittest
35742
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
114 from test import test_code
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
115 run_doctest(test_code, verbose)
53930
a171048daf76 PyCode_NewEmpty:
Jeffrey Yasskin <jyasskin@gmail.com>
parents: 46242
diff changeset
116 run_unittest(CodeTest)
46242
4c5065ddb9bd Add ``if __name__ == '__main__'`` to some test files where it didn't take a lot
Brett Cannon <bcannon@gmail.com>
parents: 39364
diff changeset
117
4c5065ddb9bd Add ``if __name__ == '__main__'`` to some test files where it didn't take a lot
Brett Cannon <bcannon@gmail.com>
parents: 39364
diff changeset
118
4c5065ddb9bd Add ``if __name__ == '__main__'`` to some test files where it didn't take a lot
Brett Cannon <bcannon@gmail.com>
parents: 39364
diff changeset
119 if __name__ == '__main__':
4c5065ddb9bd Add ``if __name__ == '__main__'`` to some test files where it didn't take a lot
Brett Cannon <bcannon@gmail.com>
parents: 39364
diff changeset
120 test_main()