mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	
		
			
	
	
		
			78 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			78 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | # This script is used by test_misc. | ||
|  | 
 | ||
|  | import _imp | ||
|  | import _testinternalcapi | ||
|  | import json | ||
|  | import os | ||
|  | import sys | ||
|  | 
 | ||
|  | 
 | ||
|  | def import_singlephase(): | ||
|  |     assert '_testsinglephase' not in sys.modules | ||
|  |     try: | ||
|  |         import _testsinglephase | ||
|  |     except ImportError: | ||
|  |         sys.modules.pop('_testsinglephase') | ||
|  |         return False | ||
|  |     else: | ||
|  |         del sys.modules['_testsinglephase'] | ||
|  |         return True | ||
|  | 
 | ||
|  | 
 | ||
|  | def check_singlephase(override): | ||
|  |     # Check using the default setting. | ||
|  |     settings_initial = _testinternalcapi.get_interp_settings() | ||
|  |     allowed_initial = import_singlephase() | ||
|  |     assert(_testinternalcapi.get_interp_settings() == settings_initial) | ||
|  | 
 | ||
|  |     # Apply the override and check. | ||
|  |     override_initial = _imp._override_multi_interp_extensions_check(override) | ||
|  |     settings_after = _testinternalcapi.get_interp_settings() | ||
|  |     allowed_after = import_singlephase() | ||
|  | 
 | ||
|  |     # Apply the override again and check. | ||
|  |     noop = {} | ||
|  |     override_after = _imp._override_multi_interp_extensions_check(override) | ||
|  |     settings_noop = _testinternalcapi.get_interp_settings() | ||
|  |     if settings_noop != settings_after: | ||
|  |         noop['settings_noop'] = settings_noop | ||
|  |     allowed_noop = import_singlephase() | ||
|  |     if allowed_noop != allowed_after: | ||
|  |         noop['allowed_noop'] = allowed_noop | ||
|  | 
 | ||
|  |     # Restore the original setting and check. | ||
|  |     override_noop = _imp._override_multi_interp_extensions_check(override_initial) | ||
|  |     if override_noop != override_after: | ||
|  |         noop['override_noop'] = override_noop | ||
|  |     settings_restored = _testinternalcapi.get_interp_settings() | ||
|  |     allowed_restored = import_singlephase() | ||
|  | 
 | ||
|  |     # Restore the original setting again. | ||
|  |     override_restored = _imp._override_multi_interp_extensions_check(override_initial) | ||
|  |     assert(_testinternalcapi.get_interp_settings() == settings_restored) | ||
|  | 
 | ||
|  |     return dict({ | ||
|  |         'requested': override, | ||
|  |         'override__initial': override_initial, | ||
|  |         'override_after': override_after, | ||
|  |         'override_restored': override_restored, | ||
|  |         'settings__initial': settings_initial, | ||
|  |         'settings_after': settings_after, | ||
|  |         'settings_restored': settings_restored, | ||
|  |         'allowed__initial': allowed_initial, | ||
|  |         'allowed_after': allowed_after, | ||
|  |         'allowed_restored': allowed_restored, | ||
|  |     }, **noop) | ||
|  | 
 | ||
|  | 
 | ||
|  | def run_singlephase_check(override, outfd): | ||
|  |     with os.fdopen(outfd, 'w') as outfile: | ||
|  |         sys.stdout = outfile | ||
|  |         sys.stderr = outfile | ||
|  |         try: | ||
|  |             results = check_singlephase(override) | ||
|  |             json.dump(results, outfile) | ||
|  |         finally: | ||
|  |             sys.stdout = sys.__stdout__ | ||
|  |             sys.stderr = sys.__stderr__ |