]> git.proxmox.com Git - mirror_edk2.git/blob - AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_module.py
EmbeddedPkg: Extend NvVarStoreFormattedLib LIBRARY_CLASS
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.2 / Lib / test / test_module.py
1 # Test the module type
2 import unittest
3 from test.test_support import run_unittest, gc_collect
4
5 import sys
6 ModuleType = type(sys)
7
8 class ModuleTests(unittest.TestCase):
9 def test_uninitialized(self):
10 # An uninitialized module has no __dict__ or __name__,
11 # and __doc__ is None
12 foo = ModuleType.__new__(ModuleType)
13 self.assertTrue(foo.__dict__ is None)
14 self.assertRaises(SystemError, dir, foo)
15 try:
16 s = foo.__name__
17 self.fail("__name__ = %s" % repr(s))
18 except AttributeError:
19 pass
20 self.assertEqual(foo.__doc__, ModuleType.__doc__)
21
22 def test_no_docstring(self):
23 # Regularly initialized module, no docstring
24 foo = ModuleType("foo")
25 self.assertEqual(foo.__name__, "foo")
26 self.assertEqual(foo.__doc__, None)
27 self.assertEqual(foo.__dict__, {"__name__": "foo", "__doc__": None})
28
29 def test_ascii_docstring(self):
30 # ASCII docstring
31 foo = ModuleType("foo", "foodoc")
32 self.assertEqual(foo.__name__, "foo")
33 self.assertEqual(foo.__doc__, "foodoc")
34 self.assertEqual(foo.__dict__,
35 {"__name__": "foo", "__doc__": "foodoc"})
36
37 def test_unicode_docstring(self):
38 # Unicode docstring
39 foo = ModuleType("foo", u"foodoc\u1234")
40 self.assertEqual(foo.__name__, "foo")
41 self.assertEqual(foo.__doc__, u"foodoc\u1234")
42 self.assertEqual(foo.__dict__,
43 {"__name__": "foo", "__doc__": u"foodoc\u1234"})
44
45 def test_reinit(self):
46 # Reinitialization should not replace the __dict__
47 foo = ModuleType("foo", u"foodoc\u1234")
48 foo.bar = 42
49 d = foo.__dict__
50 foo.__init__("foo", "foodoc")
51 self.assertEqual(foo.__name__, "foo")
52 self.assertEqual(foo.__doc__, "foodoc")
53 self.assertEqual(foo.bar, 42)
54 self.assertEqual(foo.__dict__,
55 {"__name__": "foo", "__doc__": "foodoc", "bar": 42})
56 self.assertTrue(foo.__dict__ is d)
57
58 @unittest.expectedFailure
59 def test_dont_clear_dict(self):
60 # See issue 7140.
61 def f():
62 foo = ModuleType("foo")
63 foo.bar = 4
64 return foo
65 gc_collect()
66 self.assertEqual(f().__dict__["bar"], 4)
67
68 def test_clear_dict_in_ref_cycle(self):
69 destroyed = []
70 m = ModuleType("foo")
71 m.destroyed = destroyed
72 s = """class A:
73 def __del__(self):
74 destroyed.append(1)
75 a = A()"""
76 exec(s, m.__dict__)
77 del m
78 gc_collect()
79 self.assertEqual(destroyed, [1])
80
81 def test_main():
82 run_unittest(ModuleTests)
83
84 if __name__ == '__main__':
85 test_main()