[llvm] 0521654 - [llvm] Add support for running tests as root (#75285)

via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 4 11:25:14 PST 2024


Author: Tom Stellard
Date: 2024-01-04T11:25:09-08:00
New Revision: 05216544a34eaf7aabf45df5f64d1c6c3e4e06c6

URL: https://github.com/llvm/llvm-project/commit/05216544a34eaf7aabf45df5f64d1c6c3e4e06c6
DIFF: https://github.com/llvm/llvm-project/commit/05216544a34eaf7aabf45df5f64d1c6c3e4e06c6.diff

LOG: [llvm] Add support for running tests as root (#75285)

There are a few test that check access permissions, so they need to be
disabled when running the tests as root.

The most common use case for running tests as root is inside of a
container. GitHub Actions, for example, only supports running the root
user inside of containers, so this change is necessary in order to run
the tests inside of a container running in the GitHub Actions
environment.

Added: 
    

Modified: 
    llvm/test/tools/llvm-ar/error-opening-permission.test
    llvm/test/tools/llvm-dwarfdump/X86/output.s
    llvm/test/tools/llvm-ifs/fail-file-write.test
    llvm/test/tools/llvm-ranlib/error-opening-permission.test
    llvm/utils/lit/lit/llvm/config.py

Removed: 
    


################################################################################
diff  --git a/llvm/test/tools/llvm-ar/error-opening-permission.test b/llvm/test/tools/llvm-ar/error-opening-permission.test
index 4107bdfc044fe2..b42f95329a3c71 100644
--- a/llvm/test/tools/llvm-ar/error-opening-permission.test
+++ b/llvm/test/tools/llvm-ar/error-opening-permission.test
@@ -1,6 +1,7 @@
 ## Unsupported on windows as marking files "unreadable"
 ## is non-trivial on windows.
 # UNSUPPORTED: system-windows
+# REQUIRES: non-root-user
 
 # RUN: rm -rf %t && mkdir -p %t
 # RUN: echo file1 > %t/1.txt

diff  --git a/llvm/test/tools/llvm-dwarfdump/X86/output.s b/llvm/test/tools/llvm-dwarfdump/X86/output.s
index 37132eb55ca559..e7c9234ed74cf8 100644
--- a/llvm/test/tools/llvm-dwarfdump/X86/output.s
+++ b/llvm/test/tools/llvm-dwarfdump/X86/output.s
@@ -1,3 +1,4 @@
+# REQUIRES: non-root-user
 # RUN: rm -f %t1.txt %t2.txt %t3.txt
 # RUN: llvm-mc %S/brief.s -filetype obj -triple x86_64-apple-darwin -o %t.o
 

diff  --git a/llvm/test/tools/llvm-ifs/fail-file-write.test b/llvm/test/tools/llvm-ifs/fail-file-write.test
index d5232070c1d03a..f13500f2262059 100644
--- a/llvm/test/tools/llvm-ifs/fail-file-write.test
+++ b/llvm/test/tools/llvm-ifs/fail-file-write.test
@@ -1,6 +1,7 @@
 ## Test failing to write output file on non-windows platforms.
 
 # UNSUPPORTED: system-windows
+# REQUIRES: non-root-user
 # RUN: rm -rf %t.TestDir
 # RUN: mkdir %t.TestDir
 # RUN: touch %t.TestDir/Output.TestFile

diff  --git a/llvm/test/tools/llvm-ranlib/error-opening-permission.test b/llvm/test/tools/llvm-ranlib/error-opening-permission.test
index 1b1bb0def78d78..be56962112e6b6 100644
--- a/llvm/test/tools/llvm-ranlib/error-opening-permission.test
+++ b/llvm/test/tools/llvm-ranlib/error-opening-permission.test
@@ -1,5 +1,6 @@
 ## Unsupported on windows as marking files "unreadable" is non-trivial on windows.
 # UNSUPPORTED: system-windows
+# REQUIRES: non-root-user
 
 # RUN: rm -rf %t && split-file %s %t && cd %t
 # RUN: yaml2obj 1.yaml -o 1.o

diff  --git a/llvm/utils/lit/lit/llvm/config.py b/llvm/utils/lit/lit/llvm/config.py
index 79094b839e772e..8b0f2e6295ad1b 100644
--- a/llvm/utils/lit/lit/llvm/config.py
+++ b/llvm/utils/lit/lit/llvm/config.py
@@ -13,6 +13,17 @@
 lit_path_displayed = False
 
 
+def user_is_root():
+    # os.getuid() is not available on all platforms
+    try:
+        if os.getuid() == 0:
+            return True
+    except:
+        pass
+
+    return False
+
+
 class LLVMConfig(object):
     def __init__(self, lit_config, config):
         self.lit_config = lit_config
@@ -154,6 +165,9 @@ def __init__(self, lit_config, config):
             if re.match(r'^ppc64le.*-linux', target_triple):
                 features.add('target=powerpc64le-linux')
 
+        if not user_is_root():
+            features.add("non-root-user")
+
         use_gmalloc = lit_config.params.get("use_gmalloc", None)
         if lit.util.pythonize_bool(use_gmalloc):
             # Allow use of an explicit path for gmalloc library.


        


More information about the llvm-commits mailing list