3 from test
.support
import run_unittest
, gc_collect
8 class ModuleTests(unittest
.TestCase
):
9 def test_uninitialized(self
):
10 # An uninitialized module has no __dict__ or __name__,
12 foo
= ModuleType
.__new
__(ModuleType
)
13 self
.assertTrue(foo
.__dict
__ is None)
14 self
.assertRaises(SystemError, dir, foo
)
17 self
.fail("__name__ = %s" % repr(s
))
18 except AttributeError:
20 self
.assertEqual(foo
.__doc
__, ModuleType
.__doc
__)
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})
29 def test_ascii_docstring(self
):
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"})
37 def test_unicode_docstring(self
):
39 foo
= ModuleType("foo", "foodoc\u1234")
40 self
.assertEqual(foo
.__name
__, "foo")
41 self
.assertEqual(foo
.__doc
__, "foodoc\u1234")
42 self
.assertEqual(foo
.__dict
__,
43 {"__name__": "foo", "__doc__": "foodoc\u1234"})
45 def test_reinit(self
):
46 # Reinitialization should not replace the __dict__
47 foo
= ModuleType("foo", "foodoc\u1234")
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
)
58 @unittest.expectedFailure
59 def test_dont_clear_dict(self
):
62 foo
= ModuleType("foo")
66 self
.assertEqual(f().__dict
__["bar"], 4)
68 def test_clear_dict_in_ref_cycle(self
):
71 m
.destroyed
= destroyed
79 self
.assertEqual(destroyed
, [1])
82 run_unittest(ModuleTests
)
84 if __name__
== '__main__':