[PATCH] D99728: [lit, test] Fix test cancellation feature detection

Thomas Preud'homme via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 19 08:21:28 PDT 2021


thopre updated this revision to Diff 338528.
thopre added a comment.

use sys.executable to find Python executable


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D99728/new/

https://reviews.llvm.org/D99728

Files:
  llvm/utils/lit/tests/check-tested-lit-timeout-ability
  llvm/utils/lit/tests/lit.cfg


Index: llvm/utils/lit/tests/lit.cfg
===================================================================
--- llvm/utils/lit/tests/lit.cfg
+++ llvm/utils/lit/tests/lit.cfg
@@ -3,6 +3,7 @@
 import os
 import platform
 import sys
+import subprocess
 
 import lit.formats
 from lit.llvm import llvm_config
@@ -71,11 +72,25 @@
     config.environment['COVERAGE_PROCESS_START'] = os.path.join(
         os.path.dirname(__file__), ".coveragerc")
 
-# Add a feature to detect if psutil is available
-supported, errormsg = lit_config.maxIndividualTestTimeIsSupported
-if supported:
+# Add a feature to detect if test cancellation is available. Check the ability
+# to do cancellation in the same environment as where RUN commands are run.
+# The reason is that on most systems cancellation depends on psutil being
+# available and RUN commands are run with a cleared PYTHONPATH and user site
+# packages disabled.
+testing_script_path = "/".join((os.path.dirname(__file__),
+                                "check-tested-lit-timeout-ability"))
+try:
+    proc = subprocess.run([sys.executable, testing_script_path],
+                          stderr=subprocess.PIPE, env=config.environment,
+                          universal_newlines=True)
+except FileNotFoundError as not_found:
+    msg = "__file__: {}, testing_script_path: {}, not_found: {}".format(__file__,
+                                                         testing_script_path, not_found)
+    raise OSError(msg)
+if proc.returncode == 0:
     config.available_features.add("lit-max-individual-test-time")
 else:
+    errormsg = proc.stderr
     lit_config.warning('Setting a timeout per test not supported. ' + errormsg
                        + ' Some tests will be skipped and the --timeout'
                          ' command line argument will not work.')
Index: llvm/utils/lit/tests/check-tested-lit-timeout-ability
===================================================================
--- /dev/null
+++ llvm/utils/lit/tests/check-tested-lit-timeout-ability
@@ -0,0 +1,11 @@
+#!/usr/bin/python3
+
+import sys
+from lit.util import killProcessAndChildrenIsSupported
+
+supported, errormsg = killProcessAndChildrenIsSupported()
+
+if not supported:
+    sys.exit(errormsg)
+
+sys.exit()


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D99728.338528.patch
Type: text/x-patch
Size: 2247 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210419/14a85272/attachment.bin>


More information about the llvm-commits mailing list