annotate Lib/test/test_funcattrs.py @ 54294:dba767bc3155 legacy-trunk

remove mention of old ctypes version
author Benjamin Peterson <benjamin@python.org>
date Sat, 23 May 2009 20:59:09 +0000
parents 74c0a78114ae
children d75ab16413da
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
1 from test import test_support
19948
eaf1203b85cf Rewrite function attributes to use the generic routines properly.
Guido van Rossum <guido@python.org>
parents: 19245
diff changeset
2 import types
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
3 import unittest
15893
553a315f58e9 Committing PEP 232, function attribute feature, approved by Guido.
Barry Warsaw <barry@python.org>
parents:
diff changeset
4
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
5 class FuncAttrsTest(unittest.TestCase):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
6 def setUp(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
7 class F:
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
8 def a(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
9 pass
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
10 def b():
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
11 return 3
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
12 self.f = F
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
13 self.fi = F()
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
14 self.b = b
15893
553a315f58e9 Committing PEP 232, function attribute feature, approved by Guido.
Barry Warsaw <barry@python.org>
parents:
diff changeset
15
45175
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
16 def cannot_set_attr(self,obj, name, value, exceptions):
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
17 # This method is not called as a test (name doesn't start with 'test'),
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
18 # but may be used by other tests.
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
19 try: setattr(obj, name, value)
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
20 except exceptions: pass
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
21 else: self.fail("shouldn't be able to set %s to %r" % (name, value))
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
22 try: delattr(obj, name)
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
23 except exceptions: pass
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
24 else: self.fail("shouldn't be able to del %s" % name)
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
25
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
26
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
27 class FunctionPropertiesTest(FuncAttrsTest):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
28 # Include the external setUp method that is common to all tests
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
29 def test_module(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
30 self.assertEqual(self.b.__module__, __name__)
16766
680c885dface Additional tests for current, PEP described semantics:
Barry Warsaw <barry@python.org>
parents: 16536
diff changeset
31
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
32 def test_dir_includes_correct_attrs(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
33 self.b.known_attr = 7
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
34 self.assert_('known_attr' in dir(self.b),
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
35 "set attributes not in dir listing of method")
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
36 # Test on underlying function object of method
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
37 self.f.a.im_func.known_attr = 7
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
38 self.assert_('known_attr' in dir(self.f.a),
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
39 "set attribute on unbound method implementation in class not in "
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
40 "dir")
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
41 self.assert_('known_attr' in dir(self.fi.a),
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
42 "set attribute on unbound method implementations, should show up"
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
43 " in next dir")
15893
553a315f58e9 Committing PEP 232, function attribute feature, approved by Guido.
Barry Warsaw <barry@python.org>
parents:
diff changeset
44
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
45 def test_duplicate_function_equality(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
46 # Body of `duplicate' is the exact same as self.b
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
47 def duplicate():
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
48 'my docstring'
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
49 return 3
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
50 self.assertNotEqual(self.b, duplicate)
15893
553a315f58e9 Committing PEP 232, function attribute feature, approved by Guido.
Barry Warsaw <barry@python.org>
parents:
diff changeset
51
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
52 def test_copying_func_code(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
53 def test(): pass
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
54 self.assertEqual(test(), None)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
55 test.func_code = self.b.func_code
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
56 self.assertEqual(test(), 3) # self.b always returns 3, arbitrarily
15893
553a315f58e9 Committing PEP 232, function attribute feature, approved by Guido.
Barry Warsaw <barry@python.org>
parents:
diff changeset
57
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
58 def test_func_globals(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
59 self.assertEqual(self.b.func_globals, globals())
45175
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
60 self.cannot_set_attr(self.b, 'func_globals', 2, TypeError)
16766
680c885dface Additional tests for current, PEP described semantics:
Barry Warsaw <barry@python.org>
parents: 16536
diff changeset
61
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
62 def test_func_name(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
63 self.assertEqual(self.b.__name__, 'b')
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
64 self.assertEqual(self.b.func_name, 'b')
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
65 self.b.__name__ = 'c'
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
66 self.assertEqual(self.b.__name__, 'c')
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
67 self.assertEqual(self.b.func_name, 'c')
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
68 self.b.func_name = 'd'
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
69 self.assertEqual(self.b.__name__, 'd')
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
70 self.assertEqual(self.b.func_name, 'd')
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
71 # __name__ and func_name must be a string
45175
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
72 self.cannot_set_attr(self.b, '__name__', 7, TypeError)
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
73 self.cannot_set_attr(self.b, 'func_name', 7, TypeError)
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
74 # __name__ must be available when in restricted mode. Exec will raise
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
75 # AttributeError if __name__ is not available on f.
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
76 s = """def f(): pass\nf.__name__"""
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
77 exec s in {'__builtins__': {}}
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
78 # Test on methods, too
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
79 self.assertEqual(self.f.a.__name__, 'a')
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
80 self.assertEqual(self.fi.a.__name__, 'a')
45175
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
81 self.cannot_set_attr(self.f.a, "__name__", 'a', AttributeError)
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
82 self.cannot_set_attr(self.fi.a, "__name__", 'a', AttributeError)
15897
c568ba9dc180 Add a test case suggested by Guido, where a method is created with the
Barry Warsaw <barry@python.org>
parents: 15893
diff changeset
83
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
84 def test_func_code(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
85 num_one, num_two = 7, 8
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
86 def a(): pass
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
87 def b(): return 12
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
88 def c(): return num_one
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
89 def d(): return num_two
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
90 def e(): return num_one, num_two
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
91 for func in [a, b, c, d, e]:
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
92 self.assertEqual(type(func.func_code), types.CodeType)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
93 self.assertEqual(c(), 7)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
94 self.assertEqual(d(), 8)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
95 d.func_code = c.func_code
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
96 self.assertEqual(c.func_code, d.func_code)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
97 self.assertEqual(c(), 7)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
98 # self.assertEqual(d(), 7)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
99 try: b.func_code = c.func_code
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
100 except ValueError: pass
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
101 else: self.fail(
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
102 "func_code with different numbers of free vars should not be "
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
103 "possible")
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
104 try: e.func_code = d.func_code
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
105 except ValueError: pass
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
106 else: self.fail(
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
107 "func_code with different numbers of free vars should not be "
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
108 "possible")
19245
3b98cf1692d4 Test the new semantics for setting and deleting a function's __dict__
Barry Warsaw <barry@python.org>
parents: 16766
diff changeset
109
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
110 def test_blank_func_defaults(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
111 self.assertEqual(self.b.func_defaults, None)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
112 del self.b.func_defaults
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
113 self.assertEqual(self.b.func_defaults, None)
16043
8bac0659393e Add some regression tests of coredump bugs in funcobject.c 2.31. Also
Barry Warsaw <barry@python.org>
parents: 15897
diff changeset
114
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
115 def test_func_default_args(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
116 def first_func(a, b):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
117 return a+b
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
118 def second_func(a=1, b=2):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
119 return a+b
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
120 self.assertEqual(first_func.func_defaults, None)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
121 self.assertEqual(second_func.func_defaults, (1, 2))
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
122 first_func.func_defaults = (1, 2)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
123 self.assertEqual(first_func.func_defaults, (1, 2))
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
124 self.assertEqual(first_func(), 3)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
125 self.assertEqual(first_func(3), 5)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
126 self.assertEqual(first_func(3, 5), 8)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
127 del second_func.func_defaults
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
128 self.assertEqual(second_func.func_defaults, None)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
129 try: second_func()
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
130 except TypeError: pass
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
131 else: self.fail(
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
132 "func_defaults does not update; deleting it does not remove "
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
133 "requirement")
16043
8bac0659393e Add some regression tests of coredump bugs in funcobject.c 2.31. Also
Barry Warsaw <barry@python.org>
parents: 15897
diff changeset
134
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
135 class ImplicitReferencesTest(FuncAttrsTest):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
136 def test_im_class(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
137 self.assertEqual(self.f.a.im_class, self.f)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
138 self.assertEqual(self.fi.a.im_class, self.f)
45175
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
139 self.cannot_set_attr(self.f.a, "im_class", self.f, TypeError)
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
140 self.cannot_set_attr(self.fi.a, "im_class", self.f, TypeError)
16328
abd383f1905c The one thing I love more then writing code is deleting code.
Moshe Zadka <moshez@math.huji.ac.il>
parents: 16043
diff changeset
141
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
142 def test_im_func(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
143 self.f.b = self.b
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
144 self.assertEqual(self.f.b.im_func, self.b)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
145 self.assertEqual(self.fi.b.im_func, self.b)
45175
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
146 self.cannot_set_attr(self.f.b, "im_func", self.b, TypeError)
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
147 self.cannot_set_attr(self.fi.b, "im_func", self.b, TypeError)
16328
abd383f1905c The one thing I love more then writing code is deleting code.
Moshe Zadka <moshez@math.huji.ac.il>
parents: 16043
diff changeset
148
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
149 def test_im_self(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
150 self.assertEqual(self.f.a.im_self, None)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
151 self.assertEqual(self.fi.a.im_self, self.fi)
45175
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
152 self.cannot_set_attr(self.f.a, "im_self", None, TypeError)
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
153 self.cannot_set_attr(self.fi.a, "im_self", self.fi, TypeError)
19948
eaf1203b85cf Rewrite function attributes to use the generic routines properly.
Guido van Rossum <guido@python.org>
parents: 19245
diff changeset
154
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
155 def test_im_func_non_method(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
156 # Behavior should be the same when a method is added via an attr
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
157 # assignment
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
158 self.f.id = types.MethodType(id, None, self.f)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
159 self.assertEqual(self.fi.id(), id(self.fi))
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
160 self.assertNotEqual(self.fi.id(), id(self.f))
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
161 # Test usage
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
162 try: self.f.id.unknown_attr
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
163 except AttributeError: pass
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
164 else: self.fail("using unknown attributes should raise AttributeError")
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
165 # Test assignment and deletion
45175
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
166 self.cannot_set_attr(self.f.id, 'unknown_attr', 2, AttributeError)
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
167 self.cannot_set_attr(self.fi.id, 'unknown_attr', 2, AttributeError)
19955
f36a2d40a1df - Some tests that check that assignments are not allowed expect this
Guido van Rossum <guido@python.org>
parents: 19948
diff changeset
168
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
169 def test_implicit_method_properties(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
170 self.f.a.im_func.known_attr = 7
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
171 self.assertEqual(self.f.a.known_attr, 7)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
172 self.assertEqual(self.fi.a.known_attr, 7)
44011
4cf9bb9cef91 Issue #1445: Fix a SystemError when accessing the ``cell_contents``
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 34598
diff changeset
173
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
174 class ArbitraryFunctionAttrTest(FuncAttrsTest):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
175 def test_set_attr(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
176 self.b.known_attr = 7
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
177 self.assertEqual(self.b.known_attr, 7)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
178 for func in [self.f.a, self.fi.a]:
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
179 try: func.known_attr = 7
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
180 except AttributeError: pass
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
181 else: self.fail("setting attributes on methods should raise error")
19948
eaf1203b85cf Rewrite function attributes to use the generic routines properly.
Guido van Rossum <guido@python.org>
parents: 19245
diff changeset
182
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
183 def test_delete_unknown_attr(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
184 try: del self.b.unknown_attr
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
185 except AttributeError: pass
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
186 else: self.fail("deleting unknown attribute should raise TypeError")
19948
eaf1203b85cf Rewrite function attributes to use the generic routines properly.
Guido van Rossum <guido@python.org>
parents: 19245
diff changeset
187
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
188 def test_setting_attrs_duplicates(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
189 try: self.f.a.klass = self.f
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
190 except AttributeError: pass
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
191 else: self.fail("setting arbitrary attribute in unbound function "
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
192 " should raise AttributeError")
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
193 self.f.a.im_func.klass = self.f
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
194 for method in [self.f.a, self.fi.a, self.fi.a.im_func]:
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
195 self.assertEqual(method.klass, self.f)
33116
3a4e73a5e434 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 33102
diff changeset
196
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
197 def test_unset_attr(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
198 for func in [self.b, self.f.a, self.fi.a]:
55049
74c0a78114ae Merged revisions 69846 via svnmerge from
Jesus Cea <jcea@jcea.es>
parents: 45175
diff changeset
199 try: func.non_existent_attr
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
200 except AttributeError: pass
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
201 else: self.fail("using unknown attributes should raise "
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
202 "AttributeError")
19948
eaf1203b85cf Rewrite function attributes to use the generic routines properly.
Guido van Rossum <guido@python.org>
parents: 19245
diff changeset
203
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
204 class FunctionDictsTest(FuncAttrsTest):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
205 def test_setting_dict_to_invalid(self):
45175
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
206 self.cannot_set_attr(self.b, '__dict__', None, TypeError)
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
207 self.cannot_set_attr(self.b, 'func_dict', None, TypeError)
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
208 from UserDict import UserDict
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
209 d = UserDict({'known_attr': 7})
45175
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
210 self.cannot_set_attr(self.f.a.im_func, '__dict__', d, TypeError)
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
211 self.cannot_set_attr(self.fi.a.im_func, '__dict__', d, TypeError)
19948
eaf1203b85cf Rewrite function attributes to use the generic routines properly.
Guido van Rossum <guido@python.org>
parents: 19245
diff changeset
212
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
213 def test_setting_dict_to_valid(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
214 d = {'known_attr': 7}
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
215 self.b.__dict__ = d
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
216 # Setting dict is only possible on the underlying function objects
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
217 self.f.a.im_func.__dict__ = d
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
218 # Test assignment
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
219 self.assertEqual(d, self.b.__dict__)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
220 self.assertEqual(d, self.b.func_dict)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
221 # ... and on all the different ways of referencing the method's func
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
222 self.assertEqual(d, self.f.a.im_func.__dict__)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
223 self.assertEqual(d, self.f.a.__dict__)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
224 self.assertEqual(d, self.fi.a.im_func.__dict__)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
225 self.assertEqual(d, self.fi.a.__dict__)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
226 # Test value
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
227 self.assertEqual(self.b.known_attr, 7)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
228 self.assertEqual(self.b.__dict__['known_attr'], 7)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
229 self.assertEqual(self.b.func_dict['known_attr'], 7)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
230 # ... and again, on all the different method's names
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
231 self.assertEqual(self.f.a.im_func.known_attr, 7)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
232 self.assertEqual(self.f.a.known_attr, 7)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
233 self.assertEqual(self.fi.a.im_func.known_attr, 7)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
234 self.assertEqual(self.fi.a.known_attr, 7)
19948
eaf1203b85cf Rewrite function attributes to use the generic routines properly.
Guido van Rossum <guido@python.org>
parents: 19245
diff changeset
235
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
236 def test_delete_func_dict(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
237 try: del self.b.__dict__
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
238 except TypeError: pass
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
239 else: self.fail("deleting function dictionary should raise TypeError")
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
240 try: del self.b.func_dict
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
241 except TypeError: pass
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
242 else: self.fail("deleting function dictionary should raise TypeError")
19955
f36a2d40a1df - Some tests that check that assignments are not allowed expect this
Guido van Rossum <guido@python.org>
parents: 19948
diff changeset
243
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
244 def test_unassigned_dict(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
245 self.assertEqual(self.b.__dict__, {})
19955
f36a2d40a1df - Some tests that check that assignments are not allowed expect this
Guido van Rossum <guido@python.org>
parents: 19948
diff changeset
246
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
247 def test_func_as_dict_key(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
248 value = "Some string"
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
249 d = {}
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
250 d[self.b] = value
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
251 self.assertEqual(d[self.b], value)
19955
f36a2d40a1df - Some tests that check that assignments are not allowed expect this
Guido van Rossum <guido@python.org>
parents: 19948
diff changeset
252
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
253 class FunctionDocstringTest(FuncAttrsTest):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
254 def test_set_docstring_attr(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
255 self.assertEqual(self.b.__doc__, None)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
256 self.assertEqual(self.b.func_doc, None)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
257 docstr = "A test method that does nothing"
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
258 self.b.__doc__ = self.f.a.im_func.__doc__ = docstr
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
259 self.assertEqual(self.b.__doc__, docstr)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
260 self.assertEqual(self.b.func_doc, docstr)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
261 self.assertEqual(self.f.a.__doc__, docstr)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
262 self.assertEqual(self.fi.a.__doc__, docstr)
45175
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
263 self.cannot_set_attr(self.f.a, "__doc__", docstr, AttributeError)
1c2a26686e54 Fix unittest conversion breakage.
Georg Brandl <georg@python.org>
parents: 45105
diff changeset
264 self.cannot_set_attr(self.fi.a, "__doc__", docstr, AttributeError)
19948
eaf1203b85cf Rewrite function attributes to use the generic routines properly.
Guido van Rossum <guido@python.org>
parents: 19245
diff changeset
265
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
266 def test_delete_docstring(self):
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
267 self.b.__doc__ = "The docstring"
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
268 del self.b.__doc__
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
269 self.assertEqual(self.b.__doc__, None)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
270 self.assertEqual(self.b.func_doc, None)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
271 self.b.func_doc = "The docstring"
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
272 del self.b.func_doc
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
273 self.assertEqual(self.b.__doc__, None)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
274 self.assertEqual(self.b.func_doc, None)
19948
eaf1203b85cf Rewrite function attributes to use the generic routines properly.
Guido van Rossum <guido@python.org>
parents: 19245
diff changeset
275
45105
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
276 def test_main():
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
277 test_support.run_unittest(FunctionPropertiesTest, ImplicitReferencesTest,
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
278 ArbitraryFunctionAttrTest, FunctionDictsTest,
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
279 FunctionDocstringTest)
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
280
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
281 if __name__ == "__main__":
d54d133c6a8d Rewrite test_funcattrs as unittest, written for GHOP by Jeff Wheeler.
Georg Brandl <georg@python.org>
parents: 44034
diff changeset
282 test_main()