From 601eb71e46f6b2c2662ff0536e5bc6ee59f8605b 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 4107bdfc044f..b42f95329a3c 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 37132eb55ca5..e7c9234ed74c 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 d5232070c1d0..f13500f22620 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 1b1bb0def78d..be56962112e6 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 7dae83733f31..b4356767bb3d 100644 --- a/llvm/utils/lit/lit/llvm/config.py +++ b/llvm/utils/lit/lit/llvm/config.py @@ -12,6 +12,17 @@ from lit.llvm.subst import ToolSubst 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): @@ -135,6 +146,9 @@ class LLVMConfig(object): elif re.match(r'^arm.*', target_triple): features.add('target-arm') + 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. -- Gitee