| """Sanity-check tests for the "freeze" tool.""" | |
| import sys | |
| import textwrap | |
| import unittest | |
| from test import support | |
| from test.support import os_helper | |
| from test.test_tools import imports_under_tool, skip_if_missing | |
| skip_if_missing('freeze') | |
| with imports_under_tool('freeze', 'test'): | |
| import freeze as helper | |
| @support.requires_zlib() | |
| @unittest.skipIf(sys.platform.startswith('win'), 'not supported on Windows') | |
| @unittest.skipIf(sys.platform == 'darwin' and sys._framework, | |
| 'not supported for frameworks builds on macOS') | |
| @support.skip_if_buildbot('not all buildbots have enough space') | |
| # gh-103053: Skip test if Python is built with Profile Guided Optimization | |
| # (PGO), since the test is just too slow in this case. | |
| @unittest.skipIf(support.check_cflags_pgo(), | |
| 'test is too slow with PGO') | |
| class TestFreeze(unittest.TestCase): | |
| @support.requires_resource('cpu') # Building Python is slow | |
| def test_freeze_simple_script(self): | |
| script = textwrap.dedent(""" | |
| import sys | |
| print('running...') | |
| sys.exit(0) | |
| """) | |
| with os_helper.temp_dir() as outdir: | |
| outdir, scriptfile, python = helper.prepare(script, outdir) | |
| executable = helper.freeze(python, scriptfile, outdir) | |
| text = helper.run(executable) | |
| self.assertEqual(text, 'running...') |