Navigation Menu

Skip to content

Commit

Permalink
[libcxx] [test] Pass some windows environment variables through to te…
Browse files Browse the repository at this point in the history
…st processes

Normally, the run.py wrapper script runs the child processes in
a clean environment, with only the environment variables available
that are passed via the --env parameter.

However, the COMSPEC and TEMP variables are kind of necessary when
running some tests; COMSPEC is necessary for finding the interpreter
when executing commands via std::system().

Before f1a96de, tests were executed
via an intermediate shell which implicitly readded the COMSPEC variable.

The TEMP variable allows temp files to be placed in a sensible
location; if unset, they're placed in the default temp fallback of
C:\Windows instead.

Differential Revision: https://reviews.llvm.org/D97452
  • Loading branch information
mstorsjo committed Mar 2, 2021
1 parent c5e8f02 commit 34ee3d9
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions libcxx/utils/run.py
Expand Up @@ -14,6 +14,8 @@
"""

import argparse
import os
import platform
import subprocess
import sys

Expand All @@ -37,6 +39,14 @@ def main():

# Extract environment variables into a dictionary
env = {k : v for (k, v) in map(lambda s: s.split('=', 1), args.env)}
if platform.system() == 'Windows':
# Pass some extra variables through on Windows:
# COMSPEC is needed for running subprocesses via std::system().
if 'COMSPEC' in os.environ:
env['COMSPEC'] = os.environ.get('COMSPEC')
# TEMP is needed for placing temp files in a sensible directory.
if 'TEMP' in os.environ:
env['TEMP'] = os.environ.get('TEMP')

# Run the command line with the given environment in the execution directory.
return subprocess.call(commandLine, cwd=args.execdir, env=env, shell=False)
Expand Down

0 comments on commit 34ee3d9

Please sign in to comment.