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