Commit 401b25c8 authored by Edward Lesmes's avatar Edward Lesmes Committed by Commit Bot

presubmit: Convert literals to strings before setting env variables.

On windows on Python 2, only strings can be environment variables, but
literals are unicode, so we need to convert to strings before setting
env vars.

Change-Id: I40e8e6ae4f5497d56efa568153eb65392dbd85e6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/1875108Reviewed-by: 's avatarDirk Pranke <dpranke@chromium.org>
Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>
parent db1e79c1
...@@ -744,10 +744,13 @@ def GetPythonUnitTests(input_api, output_api, unit_tests): ...@@ -744,10 +744,13 @@ def GetPythonUnitTests(input_api, output_api, unit_tests):
backpath = [ backpath = [
'.', input_api.os_path.pathsep.join(['..'] * (cwd.count('/') + 1)) '.', input_api.os_path.pathsep.join(['..'] * (cwd.count('/') + 1))
] ]
if env.get('PYTHONPATH'): # We convert to str, since on Windows on Python 2 only strings are allowed
backpath.append(env.get('PYTHONPATH')) # as environment variables, but literals are unicode since we're importing
env['PYTHONPATH'] = input_api.os_path.pathsep.join((backpath)) # unicode_literals from __future__.
env.pop('VPYTHON_CLEAR_PYTHONPATH', None) if env.get(str('PYTHONPATH')):
backpath.append(env.get(str('PYTHONPATH')))
env[str('PYTHONPATH')] = input_api.os_path.pathsep.join((backpath))
env.pop(str('VPYTHON_CLEAR_PYTHONPATH'), None)
cmd = [input_api.python_executable, '-m', '%s' % unit_test] cmd = [input_api.python_executable, '-m', '%s' % unit_test]
results.append(input_api.Command( results.append(input_api.Command(
name=unit_test_name, name=unit_test_name,
...@@ -868,8 +871,11 @@ def GetPylint(input_api, output_api, white_list=None, black_list=None, ...@@ -868,8 +871,11 @@ def GetPylint(input_api, output_api, white_list=None, black_list=None,
input_api.logging.info('Running pylint on %d files', len(files)) input_api.logging.info('Running pylint on %d files', len(files))
input_api.logging.debug('Running pylint on: %s', files) input_api.logging.debug('Running pylint on: %s', files)
env = input_api.environ.copy() env = input_api.environ.copy()
env['PYTHONPATH'] = input_api.os_path.pathsep.join(extra_paths_list) # We convert to str, since on Windows on Python 2 only strings are allowed
env.pop('VPYTHON_CLEAR_PYTHONPATH', None) # as environment variables, but literals are unicode since we're importing
# unicode_literals from __future__.
env[str('PYTHONPATH')] = input_api.os_path.pathsep.join(extra_paths_list)
env.pop(str('VPYTHON_CLEAR_PYTHONPATH'), None)
input_api.logging.debug(' with extra PYTHONPATH: %r', extra_paths_list) input_api.logging.debug(' with extra PYTHONPATH: %r', extra_paths_list)
def GetPylintCmd(flist, extra, parallel): def GetPylintCmd(flist, extra, parallel):
......
...@@ -1511,8 +1511,11 @@ def DoPresubmitChecks(change, ...@@ -1511,8 +1511,11 @@ def DoPresubmitChecks(change,
old_environ = os.environ old_environ = os.environ
try: try:
# Make sure python subprocesses won't generate .pyc files. # Make sure python subprocesses won't generate .pyc files.
# We convert to str, since on Windows on Python 2 only strings are allowed
# as environment variables, but literals are unicode since we're importing
# unicode_literals from __future__.
os.environ = os.environ.copy() os.environ = os.environ.copy()
os.environ['PYTHONDONTWRITEBYTECODE'] = '1' os.environ[str('PYTHONDONTWRITEBYTECODE')] = str('1')
output = PresubmitOutput(input_stream, output_stream) output = PresubmitOutput(input_stream, output_stream)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment