| 
									
										
										
										
											2021-10-28 10:14:37 -06:00
										 |  |  | """Sanity-check tests for the "freeze" tool.""" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import sys | 
					
						
							|  |  |  | import textwrap | 
					
						
							|  |  |  | import unittest | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from test import support | 
					
						
							| 
									
										
										
										
											2021-11-23 06:43:40 -07:00
										 |  |  | from test.support import os_helper | 
					
						
							| 
									
										
										
										
											2022-01-18 22:28:18 +03:00
										 |  |  | from test.test_tools import imports_under_tool, skip_if_missing | 
					
						
							| 
									
										
										
										
											2021-10-28 10:14:37 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | skip_if_missing('freeze') | 
					
						
							|  |  |  | with imports_under_tool('freeze', 'test'): | 
					
						
							|  |  |  |     import freeze as helper | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-03 22:49:54 +05:30
										 |  |  | @support.requires_zlib() | 
					
						
							| 
									
										
										
										
											2021-10-28 10:14:37 -06:00
										 |  |  | @unittest.skipIf(sys.platform.startswith('win'), 'not supported on Windows') | 
					
						
							| 
									
										
										
										
											2023-12-22 11:35:54 +01:00
										 |  |  | @unittest.skipIf(sys.platform == 'darwin' and sys._framework, | 
					
						
							|  |  |  |         'not supported for frameworks builds on macOS') | 
					
						
							| 
									
										
										
										
											2021-10-28 10:14:37 -06:00
										 |  |  | @support.skip_if_buildbot('not all buildbots have enough space') | 
					
						
							| 
									
										
										
										
											2023-09-20 03:58:34 +02:00
										 |  |  | # 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') | 
					
						
							| 
									
										
										
										
											2021-10-28 10:14:37 -06:00
										 |  |  | class TestFreeze(unittest.TestCase): | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-02 07:45:34 +03:00
										 |  |  |     @support.requires_resource('cpu') # Building Python is slow | 
					
						
							| 
									
										
										
										
											2021-10-28 10:14:37 -06:00
										 |  |  |     def test_freeze_simple_script(self): | 
					
						
							|  |  |  |         script = textwrap.dedent("""
 | 
					
						
							|  |  |  |             import sys | 
					
						
							|  |  |  |             print('running...') | 
					
						
							|  |  |  |             sys.exit(0) | 
					
						
							|  |  |  |             """)
 | 
					
						
							| 
									
										
										
										
											2021-11-23 06:43:40 -07:00
										 |  |  |         with os_helper.temp_dir() as outdir: | 
					
						
							|  |  |  |             outdir, scriptfile, python = helper.prepare(script, outdir) | 
					
						
							|  |  |  |             executable = helper.freeze(python, scriptfile, outdir) | 
					
						
							|  |  |  |             text = helper.run(executable) | 
					
						
							| 
									
										
										
										
											2021-10-28 10:14:37 -06:00
										 |  |  |         self.assertEqual(text, 'running...') |