| # Test the frozen module defined in frozen.c. |
| |
| from test.support import captured_stdout, run_unittest |
| import unittest |
| import sys |
| |
| class FrozenTests(unittest.TestCase): |
| |
| module_attrs = frozenset(['__builtins__', '__cached__', '__doc__', |
| '__loader__', '__name__', |
| '__package__']) |
| package_attrs = frozenset(list(module_attrs) + ['__path__']) |
| |
| def test_frozen(self): |
| with captured_stdout() as stdout: |
| try: |
| import __hello__ |
| except ImportError as x: |
| self.fail("import __hello__ failed:" + str(x)) |
| self.assertEqual(__hello__.initialized, True) |
| expect = set(self.module_attrs) |
| expect.add('initialized') |
| self.assertEqual(set(dir(__hello__)), expect) |
| self.assertEqual(stdout.getvalue(), 'Hello world!\n') |
| |
| with captured_stdout() as stdout: |
| try: |
| import __phello__ |
| except ImportError as x: |
| self.fail("import __phello__ failed:" + str(x)) |
| self.assertEqual(__phello__.initialized, True) |
| expect = set(self.package_attrs) |
| expect.add('initialized') |
| if not "__phello__.spam" in sys.modules: |
| self.assertEqual(set(dir(__phello__)), expect) |
| else: |
| expect.add('spam') |
| self.assertEqual(set(dir(__phello__)), expect) |
| self.assertEqual(__phello__.__path__, [__phello__.__name__]) |
| self.assertEqual(stdout.getvalue(), 'Hello world!\n') |
| |
| with captured_stdout() as stdout: |
| try: |
| import __phello__.spam |
| except ImportError as x: |
| self.fail("import __phello__.spam failed:" + str(x)) |
| self.assertEqual(__phello__.spam.initialized, True) |
| spam_expect = set(self.module_attrs) |
| spam_expect.add('initialized') |
| self.assertEqual(set(dir(__phello__.spam)), spam_expect) |
| phello_expect = set(self.package_attrs) |
| phello_expect.add('initialized') |
| phello_expect.add('spam') |
| self.assertEqual(set(dir(__phello__)), phello_expect) |
| self.assertEqual(stdout.getvalue(), 'Hello world!\n') |
| |
| try: |
| import __phello__.foo |
| except ImportError: |
| pass |
| else: |
| self.fail("import __phello__.foo should have failed") |
| |
| try: |
| import __phello__.foo |
| except ImportError: |
| pass |
| else: |
| self.fail("import __phello__.foo should have failed") |
| |
| del sys.modules['__hello__'] |
| del sys.modules['__phello__'] |
| del sys.modules['__phello__.spam'] |
| |
| def test_main(): |
| run_unittest(FrozenTests) |
| |
| if __name__ == "__main__": |
| test_main() |