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

Alvin Wong via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 24 07:23:03 PDT 2023


alvinhochun created this revision.
Herald added a subscriber: delcypher.
Herald added a project: All.
alvinhochun requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

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.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D149064

Files:
  llvm/utils/lit/lit/TestingConfig.py


Index: llvm/utils/lit/lit/TestingConfig.py
===================================================================
--- llvm/utils/lit/lit/TestingConfig.py
+++ llvm/utils/lit/lit/TestingConfig.py
@@ -75,6 +75,14 @@
                 '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, '')


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D149064.516405.patch
Type: text/x-patch
Size: 951 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230424/acffa1ee/attachment.bin>


More information about the llvm-commits mailing list