(self, add_module, accept_nonstr=False)
| 67 | # CRASHES getmodule(NULL) |
| 68 | |
| 69 | def check_addmodule(self, add_module, accept_nonstr=False): |
| 70 | # create a new module |
| 71 | names = ['nonexistent'] |
| 72 | if accept_nonstr: |
| 73 | names.append(b'\xff') # non-UTF-8 |
| 74 | # PyImport_AddModuleObject() accepts non-string names |
| 75 | names.append(tuple(['hashable non-string'])) |
| 76 | for name in names: |
| 77 | with self.subTest(name=name): |
| 78 | self.assertNotIn(name, sys.modules) |
| 79 | try: |
| 80 | module = add_module(name) |
| 81 | self.assertIsInstance(module, types.ModuleType) |
| 82 | self.assertEqual(module.__name__, name) |
| 83 | self.assertIs(module, sys.modules[name]) |
| 84 | finally: |
| 85 | sys.modules.pop(name, None) |
| 86 | |
| 87 | # get an existing module |
| 88 | self.check_import_loaded_module(add_module) |
| 89 | |
| 90 | def test_addmoduleobject(self): |
| 91 | # Test PyImport_AddModuleObject() |
no test coverage detected