tests/run-tests.py
changeset 33203 cf826b9e9ea4
parent 33140 f458a6701983
child 33420 e80041832eec
equal deleted inserted replaced
33200:04cf9927f350 33203:cf826b9e9ea4
    82         reload(sys)
    82         reload(sys)
    83         sys.setdefaultencoding("undefined")
    83         sys.setdefaultencoding("undefined")
    84     except NameError:
    84     except NameError:
    85         pass
    85         pass
    86 
    86 
       
    87 origenviron = os.environ.copy()
    87 osenvironb = getattr(os, 'environb', os.environ)
    88 osenvironb = getattr(os, 'environb', os.environ)
    88 processlock = threading.Lock()
    89 processlock = threading.Lock()
    89 
    90 
    90 if sys.version_info > (3, 5, 0):
    91 if sys.version_info > (3, 5, 0):
    91     PYTHON3 = True
    92     PYTHON3 = True
   905 
   906 
   906         # Only restore environment variable names that the shell allows
   907         # Only restore environment variable names that the shell allows
   907         # us to export.
   908         # us to export.
   908         name_regex = re.compile('^[a-zA-Z][a-zA-Z0-9_]*$')
   909         name_regex = re.compile('^[a-zA-Z][a-zA-Z0-9_]*$')
   909 
   910 
       
   911         # Do not restore these variables; otherwise tests would fail.
       
   912         reqnames = {'PYTHON', 'TESTDIR', 'TESTTMP'}
       
   913 
   910         with open(scriptpath, 'w') as envf:
   914         with open(scriptpath, 'w') as envf:
   911             for name, value in os.environ.items():
   915             for name, value in origenviron.items():
   912                 if not name_regex.match(name):
   916                 if not name_regex.match(name):
   913                     # Skip environment variables with unusual names not
   917                     # Skip environment variables with unusual names not
   914                     # allowed by most shells.
   918                     # allowed by most shells.
   915                     continue
   919                     continue
       
   920                 if name in reqnames:
       
   921                     continue
   916                 envf.write('%s=%s\n' % (name, shellquote(value)))
   922                 envf.write('%s=%s\n' % (name, shellquote(value)))
   917 
   923 
   918             for name in testenv:
   924             for name in testenv:
   919                 if name in os.environ:
   925                 if name in origenviron or name in reqnames:
   920                     continue
   926                     continue
   921                 envf.write('unset %s\n' % (name,))
   927                 envf.write('unset %s\n' % (name,))
   922 
   928 
   923     def _getenv(self):
   929     def _getenv(self):
   924         """Obtain environment variables to use during test execution."""
   930         """Obtain environment variables to use during test execution."""