From 05216544a34eaf7aabf45df5f64d1c6c3e4e06c6 Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Thu, 4 Jan 2024 11:25:09 -0800 Subject: [PATCH] [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. --- .../tools/llvm-ar/error-opening-permission.test | 1 + llvm/test/tools/llvm-dwarfdump/X86/output.s | 1 + llvm/test/tools/llvm-ifs/fail-file-write.test | 1 + .../llvm-ranlib/error-opening-permission.test | 1 + llvm/utils/lit/lit/llvm/config.py | 14 ++++++++++++++ 5 files changed, 18 insertions(+) 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.