diff options
-rw-r--r-- | Lib/test/test_frozen.py | 60 | ||||
-rw-r--r-- | Python/frozen.c | 19 | ||||
-rw-r--r-- | Tools/freeze/flag.py | 1 |
3 files changed, 42 insertions, 38 deletions
diff --git a/Lib/test/test_frozen.py b/Lib/test/test_frozen.py index 3c9fab3..2de2535 100644 --- a/Lib/test/test_frozen.py +++ b/Lib/test/test_frozen.py @@ -4,37 +4,41 @@ from __future__ import with_statement from test.test_support import captured_stdout, run_unittest import unittest import sys, os +import warnings class FrozenTests(unittest.TestCase): def test_frozen(self): - - with captured_stdout() as stdout: - try: - import __hello__ - except ImportError as x: - self.fail("import __hello__ failed:" + str(x)) - - try: - import __phello__ - except ImportError as x: - self.fail("import __phello__ failed:" + str(x)) - - try: - import __phello__.spam - except ImportError as x: - self.fail("import __phello__.spam failed:" + str(x)) - - if sys.platform != "mac": # On the Mac this import does succeed. - try: - import __phello__.foo - except ImportError: - pass - else: - self.fail("import __phello__.foo should have failed") - - self.assertEquals(stdout.getvalue(), - 'Hello world...\nHello world...\nHello world...\n') - + try: + import __hello__ + except ImportError as x: + self.fail("import __hello__ failed:" + str(x)) + self.assertEqual(__hello__.initialized, True) + self.assertEqual(len(dir(__hello__)), 5) + + try: + import __phello__ + except ImportError as x: + self.fail("import __phello__ failed:" + str(x)) + self.assertEqual(__phello__.initialized, True) + if not "__phello__.spam" in sys.modules: + self.assertEqual(len(dir(__phello__)), 6, dir(__phello__)) + else: + self.assertEqual(len(dir(__phello__)), 7, dir(__phello__)) + + try: + import __phello__.spam + except ImportError as x: + self.fail("import __phello__.spam failed:" + str(x)) + self.assertEqual(__phello__.spam.initialized, True) + self.assertEqual(len(dir(__phello__.spam)), 5) + self.assertEqual(len(dir(__phello__)), 7) + + try: + import __phello__.foo + except ImportError: + pass + else: + self.fail("import __phello__.foo should have failed") def test_main(): run_unittest(FrozenTests) diff --git a/Python/frozen.c b/Python/frozen.c index ee06c35..1e40d7d 100644 --- a/Python/frozen.c +++ b/Python/frozen.c @@ -8,19 +8,18 @@ some famous words... */ /* To regenerate this data after the bytecode or marshal format has changed, - go to ../Tools/freeze/ and freeze the hello.py file; then copy and paste + go to ../Tools/freeze/ and freeze the flag.py file; then copy and paste the appropriate bytes from M___main__.c. */ static unsigned char M___hello__[] = { - 99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,64,0,0,0,115,14,0,0,0,101,0,0,100,0,0, - 131,1,0,1,100,1,0,83,40,2,0,0,0,117,14,0, - 0,0,72,101,108,108,111,32,119,111,114,108,100,46,46,46, - 78,40,1,0,0,0,117,5,0,0,0,112,114,105,110,116, - 40,0,0,0,0,40,0,0,0,0,40,0,0,0,0,117, - 8,0,0,0,104,101,108,108,111,46,112,121,117,8,0,0, - 0,60,109,111,100,117,108,101,62,1,0,0,0,115,0,0, - 0,0, + 99,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0, + 0,64,0,0,0,115,10,0,0,0,100,1,0,90,1,0, + 100,0,0,83,40,2,0,0,0,78,84,40,2,0,0,0, + 117,4,0,0,0,84,114,117,101,117,11,0,0,0,105,110, + 105,116,105,97,108,105,122,101,100,40,0,0,0,0,40,0, + 0,0,0,40,0,0,0,0,117,7,0,0,0,102,108,97, + 103,46,112,121,117,8,0,0,0,60,109,111,100,117,108,101, + 62,1,0,0,0,115,0,0,0,0, }; #define SIZE (int)sizeof(M___hello__) diff --git a/Tools/freeze/flag.py b/Tools/freeze/flag.py new file mode 100644 index 0000000..ea6d633 --- /dev/null +++ b/Tools/freeze/flag.py @@ -0,0 +1 @@ +initialized = True |