Googletest export
Remove the subprocess fallback code for older versions of Python PiperOrigin-RevId: 405967578
This commit is contained in:
parent
7cf37a18d1
commit
5a93ce1247
@ -32,6 +32,7 @@
|
|||||||
# pylint: disable-msg=C6204
|
# pylint: disable-msg=C6204
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
IS_WINDOWS = os.name == 'nt'
|
IS_WINDOWS = os.name == 'nt'
|
||||||
@ -42,13 +43,6 @@ import atexit
|
|||||||
import shutil
|
import shutil
|
||||||
import tempfile
|
import tempfile
|
||||||
import unittest as _test_module
|
import unittest as _test_module
|
||||||
|
|
||||||
try:
|
|
||||||
import subprocess
|
|
||||||
_SUBPROCESS_MODULE_AVAILABLE = True
|
|
||||||
except:
|
|
||||||
import popen2
|
|
||||||
_SUBPROCESS_MODULE_AVAILABLE = False
|
|
||||||
# pylint: enable-msg=C6204
|
# pylint: enable-msg=C6204
|
||||||
|
|
||||||
GTEST_OUTPUT_VAR_NAME = 'GTEST_OUTPUT'
|
GTEST_OUTPUT_VAR_NAME = 'GTEST_OUTPUT'
|
||||||
@ -224,14 +218,6 @@ class Subprocess:
|
|||||||
combined in a string.
|
combined in a string.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# The subprocess module is the preferable way of running programs
|
|
||||||
# since it is available and behaves consistently on all platforms,
|
|
||||||
# including Windows. But it is only available starting in python 2.4.
|
|
||||||
# In earlier python versions, we revert to the popen2 module, which is
|
|
||||||
# available in python 2.0 and later but doesn't provide required
|
|
||||||
# functionality (Popen4) under Windows. This allows us to support Mac
|
|
||||||
# OS X 10.4 Tiger, which has python 2.3 installed.
|
|
||||||
if _SUBPROCESS_MODULE_AVAILABLE:
|
|
||||||
if capture_stderr:
|
if capture_stderr:
|
||||||
stderr = subprocess.STDOUT
|
stderr = subprocess.STDOUT
|
||||||
else:
|
else:
|
||||||
@ -244,49 +230,6 @@ class Subprocess:
|
|||||||
# output.
|
# output.
|
||||||
self.output = p.communicate()[0]
|
self.output = p.communicate()[0]
|
||||||
self._return_code = p.returncode
|
self._return_code = p.returncode
|
||||||
else:
|
|
||||||
old_dir = os.getcwd()
|
|
||||||
|
|
||||||
def _ReplaceEnvDict(dest, src):
|
|
||||||
# Changes made by os.environ.clear are not inheritable by child
|
|
||||||
# processes until Python 2.6. To produce inheritable changes we have
|
|
||||||
# to delete environment items with the del statement.
|
|
||||||
for key in dest.keys():
|
|
||||||
del dest[key]
|
|
||||||
dest.update(src)
|
|
||||||
|
|
||||||
# When 'env' is not None, backup the environment variables and replace
|
|
||||||
# them with the passed 'env'. When 'env' is None, we simply use the
|
|
||||||
# current 'os.environ' for compatibility with the subprocess.Popen
|
|
||||||
# semantics used above.
|
|
||||||
if env is not None:
|
|
||||||
old_environ = os.environ.copy()
|
|
||||||
_ReplaceEnvDict(os.environ, env)
|
|
||||||
|
|
||||||
try:
|
|
||||||
if working_dir is not None:
|
|
||||||
os.chdir(working_dir)
|
|
||||||
if capture_stderr:
|
|
||||||
p = popen2.Popen4(command)
|
|
||||||
else:
|
|
||||||
p = popen2.Popen3(command)
|
|
||||||
p.tochild.close()
|
|
||||||
self.output = p.fromchild.read()
|
|
||||||
ret_code = p.wait()
|
|
||||||
finally:
|
|
||||||
os.chdir(old_dir)
|
|
||||||
|
|
||||||
# Restore the old environment variables
|
|
||||||
# if they were replaced.
|
|
||||||
if env is not None:
|
|
||||||
_ReplaceEnvDict(os.environ, old_environ)
|
|
||||||
|
|
||||||
# Converts ret_code to match the semantics of
|
|
||||||
# subprocess.Popen.returncode.
|
|
||||||
if os.WIFSIGNALED(ret_code):
|
|
||||||
self._return_code = -os.WTERMSIG(ret_code)
|
|
||||||
else: # os.WIFEXITED(ret_code) should return True here.
|
|
||||||
self._return_code = os.WEXITSTATUS(ret_code)
|
|
||||||
|
|
||||||
if bool(self._return_code & 0x80000000):
|
if bool(self._return_code & 0x80000000):
|
||||||
self.terminated_by_signal = True
|
self.terminated_by_signal = True
|
||||||
|
Loading…
Reference in New Issue
Block a user