[compiler-rt] a0e8462 - [compiler-rt][sanitizer_common] Improve handling of env vars for iOS simulator tests (#146721)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 3 10:25:11 PDT 2025
Author: Dan Blackwell
Date: 2025-07-03T10:25:08-07:00
New Revision: a0e846277023f1febde523b483dfa51ebaeb38be
URL: https://github.com/llvm/llvm-project/commit/a0e846277023f1febde523b483dfa51ebaeb38be
DIFF: https://github.com/llvm/llvm-project/commit/a0e846277023f1febde523b483dfa51ebaeb38be.diff
LOG: [compiler-rt][sanitizer_common] Improve handling of env vars for iOS simulator tests (#146721)
* Fix splitting of arguments such as `LSAN_OPTIONS=suppressions=lsan.supp`
* Prevent environment variables set in parent process being overwritten
* Replace hard-coded `env` with `%env` to allow overriding depending on target
* Replace deprecated `pipes` usage with `shlex`
* Run formatter over `iossim_env.py`
Added:
Modified:
compiler-rt/test/sanitizer_common/ios_commands/iossim_env.py
compiler-rt/test/sanitizer_common/ios_commands/iossim_run.py
compiler-rt/test/sanitizer_common/lit.common.cfg.py
Removed:
################################################################################
diff --git a/compiler-rt/test/sanitizer_common/ios_commands/iossim_env.py b/compiler-rt/test/sanitizer_common/ios_commands/iossim_env.py
index 57a01f3852b06..ddc260fa61644 100755
--- a/compiler-rt/test/sanitizer_common/ios_commands/iossim_env.py
+++ b/compiler-rt/test/sanitizer_common/ios_commands/iossim_env.py
@@ -5,13 +5,13 @@
idx = 1
for arg in sys.argv[1:]:
- if not "=" in arg:
- break
- idx += 1
- (argname, argval) = arg.split("=")
- os.environ["SIMCTL_CHILD_" + argname] = argval
+ if not "=" in arg:
+ break
+ idx += 1
+ (argname, argval) = arg.split("=", maxsplit=1)
+ os.environ["SIMCTL_CHILD_" + argname] = argval
exitcode = subprocess.call(sys.argv[idx:])
if exitcode > 125:
- exitcode = 126
+ exitcode = 126
sys.exit(exitcode)
diff --git a/compiler-rt/test/sanitizer_common/ios_commands/iossim_run.py b/compiler-rt/test/sanitizer_common/ios_commands/iossim_run.py
index 5e977ea5ed908..ec394067dc7a5 100755
--- a/compiler-rt/test/sanitizer_common/ios_commands/iossim_run.py
+++ b/compiler-rt/test/sanitizer_common/ios_commands/iossim_run.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
-import glob, os, pipes, sys, subprocess
+import glob, os, shlex, sys, subprocess
device_id = os.environ.get("SANITIZER_IOSSIM_TEST_DEVICE_IDENTIFIER")
@@ -21,8 +21,11 @@
"ASAN_ACTIVATION_OPTIONS",
"MallocNanoZone",
]:
- if e in os.environ:
- os.environ["SIMCTL_CHILD_" + e] = os.environ[e]
+ simctl_version = "SIMCTL_CHILD_" + e
+ # iossim_env.py might have already set these using arguments it was given
+ # (and that we can't see from inside this script). Don't overwrite them!
+ if e in os.environ and simctl_version not in os.environ:
+ os.environ[simctl_version] = os.environ[e]
find_atos_cmd = "xcrun -sdk iphonesimulator -f atos"
atos_path = (
@@ -49,8 +52,7 @@
# Don't quote glob pattern
rm_args.append(arg)
else:
- # FIXME(dliew): pipes.quote() is deprecated
- rm_args.append(pipes.quote(arg))
+ rm_args.append(shlex.quote(arg))
rm_cmd_line = ["/bin/rm"] + rm_args
rm_cmd_line_str = " ".join(rm_cmd_line)
# We use `shell=True` so that any wildcard globs get expanded by the shell.
diff --git a/compiler-rt/test/sanitizer_common/lit.common.cfg.py b/compiler-rt/test/sanitizer_common/lit.common.cfg.py
index c3c1336bacd53..88d3ea9bc5ad2 100644
--- a/compiler-rt/test/sanitizer_common/lit.common.cfg.py
+++ b/compiler-rt/test/sanitizer_common/lit.common.cfg.py
@@ -87,7 +87,7 @@ def build_invocation(compile_flags):
config.substitutions.append(("%tool_name", config.tool_name))
config.substitutions.append(("%tool_options", tool_options))
config.substitutions.append(
- ("%env_tool_opts=", "env " + tool_options + "=" + default_tool_options_str)
+ ("%env_tool_opts=", "%env " + tool_options + "=" + default_tool_options_str)
)
config.suffixes = [".c", ".cpp"]
More information about the llvm-commits
mailing list