[lit] Set __COMPAT_LAYER=RunAsInvoker when running tests on Windows

Windows heuristics try to detect old installer programs and run them as
elevated. These heuristics include checking for certain substrings in
file names, e.g. "patch", "update", "setup". When lit tries to run
affected executables, it produces "[WinError 740] The requested
operation requires elevation" instead. Several tests have been affected
by this issue (see https://reviews.llvm.org/D137772,
https://reviews.llvm.org/D148988, https://reviews.llvm.org/D149004).

We should set this environment variable to disable this heuristic once
and for all, instead of setting it in inidividual test suites. There
should be no lit tests that legitimately want to run as elevated.

Differential Revision: https://reviews.llvm.org/D149064
This commit is contained in:
Alvin Wong 2023-04-24 21:52:18 +08:00
parent 61be935896
commit f1431bbfb1

View File

@ -75,6 +75,14 @@ class TestingConfig(object):
'USERPROFILE',
]
environment['PYTHONBUFFERED'] = '1'
# Avoid Windows heuristics which try to detect potential installer
# programs (which may need to run with elevated privileges) and ask
# if the user wants to run them in that way. This heuristic may
# match for executables containing the substrings "patch" (which is
# a substring of "dispatch"), "update", "setup", etc. Set this
# environment variable indicating that we want to execute them with
# the current user.
environment['__COMPAT_LAYER'] = 'RunAsInvoker'
for var in pass_vars:
val = os.environ.get(var, '')