Skip to content

Conversation

boomanaiden154
Copy link
Contributor

This patch rewrites a couple tsts that fail when running with lit's
internal shell enabled due to assumptions about setting environment
variables. There were a couple cases where there was an implict env.
Most of the cases needed unset swapped for env -u.

Toeards #102699.

Created using spr 1.3.6
@llvmbot llvmbot added clang Clang issues not falling into any other category clang:driver 'clang' and 'clang++' user-facing binaries. Not 'clang-cl' clang:modules C++20 modules and Clang Header Modules labels Sep 4, 2025
@llvmbot
Copy link
Member

llvmbot commented Sep 4, 2025

@llvm/pr-subscribers-clang-driver

@llvm/pr-subscribers-clang-modules

Author: Aiden Grossman (boomanaiden154)

Changes

This patch rewrites a couple tsts that fail when running with lit's
internal shell enabled due to assumptions about setting environment
variables. There were a couple cases where there was an implict env.
Most of the cases needed unset swapped for env -u.

Toeards #102699.


Patch is 27.00 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/156904.diff

7 Files Affected:

  • (modified) clang/test/Driver/config-file3.c (+34-34)
  • (modified) clang/test/Driver/config-zos.c (+2-4)
  • (modified) clang/test/Driver/config-zos1.c (+4-7)
  • (modified) clang/test/Driver/coverage.c (+2-2)
  • (modified) clang/test/Modules/crash-vfs-path-symlink-component.m (+2-2)
  • (modified) clang/test/Modules/crash-vfs-path-traversal.m (+2-2)
  • (modified) clang/test/Modules/crash-vfs-relative-overlay.m (+2-2)
diff --git a/clang/test/Driver/config-file3.c b/clang/test/Driver/config-file3.c
index 395c31ce04b6b..9ba807da84414 100644
--- a/clang/test/Driver/config-file3.c
+++ b/clang/test/Driver/config-file3.c
@@ -1,7 +1,5 @@
-// REQUIRES: shell
 // REQUIRES: x86-registered-target
 
-// RUN: unset CLANG_NO_DEFAULT_CONFIG
 // RUN: rm -rf %t && mkdir %t
 
 //--- If config file is specified by relative path (workdir/cfg-s2), it is searched for by that path.
@@ -10,7 +8,9 @@
 // RUN: echo "@subdir/cfg-s2" > %t/workdir/cfg-1
 // RUN: echo "-Wundefined-var-template" > %t/workdir/subdir/cfg-s2
 //
-// RUN: ( cd %t && %clang --config=workdir/cfg-1 -c -### %s 2>&1 | FileCheck %s -check-prefix CHECK-REL )
+// RUN: pushd %t
+// RUN: %clang --config=workdir/cfg-1 -c -### %s 2>&1 | FileCheck %s -check-prefix CHECK-REL
+// RUN: popd
 //
 // CHECK-REL: Configuration file: {{.*}}/workdir/cfg-1
 // CHECK-REL: -Wundefined-var-template
@@ -51,84 +51,84 @@
 // RUN: touch %t/testdmode/clang++.cfg
 // RUN: touch %t/testdmode/clang-g++.cfg
 // RUN: touch %t/testdmode/clang.cfg
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1 --implicit-check-not 'Configuration file:'
 //
 // FULL1: Configuration file: {{.*}}/testdmode/x86_64-unknown-linux-gnu-clang++.cfg
 
 //--- -m32 overrides triple.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ -m32 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1-I386 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ -m32 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1-I386 --implicit-check-not 'Configuration file:'
 //
 // FULL1-I386: Configuration file: {{.*}}/testdmode/i386-unknown-linux-gnu-clang++.cfg
 
 //--- --target= also works for overriding triple.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --target=i386-unknown-linux-gnu --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1-I386 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --target=i386-unknown-linux-gnu --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1-I386 --implicit-check-not 'Configuration file:'
 
 //--- With --target= + -m64, -m64 takes precedence.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --target=i386-unknown-linux-gnu -m64 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --target=i386-unknown-linux-gnu -m64 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1 --implicit-check-not 'Configuration file:'
 
 //--- i386 prefix also works for 32-bit.
 //
-// RUN: %t/testdmode/i386-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1-I386 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/i386-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1-I386 --implicit-check-not 'Configuration file:'
 
 //--- i386 prefix + -m64 also works for 64-bit.
 //
-// RUN: %t/testdmode/i386-unknown-linux-gnu-clang-g++ -m64 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/i386-unknown-linux-gnu-clang-g++ -m64 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1 --implicit-check-not 'Configuration file:'
 
 //--- File specified by --config= is loaded after the one inferred from the executable.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir=%S/Inputs/config --config-user-dir= --config=i386-qqq.cfg -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix EXPLICIT --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir=%S/Inputs/config --config-user-dir= --config=i386-qqq.cfg -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix EXPLICIT --implicit-check-not 'Configuration file:'
 //
 // EXPLICIT: Configuration file: {{.*}}/testdmode/x86_64-unknown-linux-gnu-clang++.cfg
 // EXPLICIT-NEXT: Configuration file: {{.*}}/Inputs/config/i386-qqq.cfg
 
 //--- --no-default-config --config= loads only specified file.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir=%S/Inputs/config --config-user-dir= --no-default-config --config=i386-qqq.cfg -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix EXPLICIT-ONLY --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir=%S/Inputs/config --config-user-dir= --no-default-config --config=i386-qqq.cfg -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix EXPLICIT-ONLY --implicit-check-not 'Configuration file:'
 //
 // EXPLICIT-ONLY: Configuration file: {{.*}}/Inputs/config/i386-qqq.cfg
 
 //--- --no-default-config disables default filenames.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir=%S/Inputs/config --config-user-dir= --no-default-config -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix NO-CONFIG
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir=%S/Inputs/config --config-user-dir= --no-default-config -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix NO-CONFIG
 //
 // NO-CONFIG-NOT: Configuration file:
 
 //--- --driver-mode= is respected.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --driver-mode=gcc --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1-GCC --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --driver-mode=gcc --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1-GCC --implicit-check-not 'Configuration file:'
 //
 // FULL1-GCC: Configuration file: {{.*}}/testdmode/x86_64-unknown-linux-gnu-clang.cfg
 
 //--- "clang" driver symlink should yield the "*-clang" configuration file.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1-GCC --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1-GCC --implicit-check-not 'Configuration file:'
 
 //--- "clang" + --driver-mode= should yield "*-clang++".
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang --driver-mode=g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang --driver-mode=g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1 --implicit-check-not 'Configuration file:'
 
 //--- Clang started via name prefix that is not valid is forcing that prefix instead of target triple.
 //
-// RUN: %t/testdmode/qqq-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix QQQ --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/qqq-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix QQQ --implicit-check-not 'Configuration file:'
 //
 // QQQ: Configuration file: {{.*}}/testdmode/qqq-clang-g++.cfg
 
 //--- Explicit --target= overrides the triple even with non-standard name prefix.
 //
-// RUN: %t/testdmode/qqq-clang-g++ --target=x86_64-unknown-linux-gnu --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/qqq-clang-g++ --target=x86_64-unknown-linux-gnu --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1 --implicit-check-not 'Configuration file:'
 
 //--- "x86_64" prefix does not form a valid triple either.
 //
-// RUN: %t/testdmode/x86_64-clang --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix X86_64 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-clang --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix X86_64 --implicit-check-not 'Configuration file:'
 //
 // X86_64: Configuration file: {{.*}}/testdmode/x86_64-clang.cfg
 
 //--- Try cheribsd prefix using misordered triple components.
 //
-// RUN: %t/testdmode/cheribsd-riscv64-hybrid-clang++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix CHERIBSD --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/cheribsd-riscv64-hybrid-clang++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix CHERIBSD --implicit-check-not 'Configuration file:'
 //
 // CHERIBSD: Configuration file: {{.*}}/testdmode/cheribsd-riscv64-hybrid-clang++.cfg
 
@@ -136,13 +136,13 @@
 //
 // RUN: rm %t/testdmode/x86_64-unknown-linux-gnu-clang++.cfg
 // RUN: rm %t/testdmode/i386-unknown-linux-gnu-clang++.cfg
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL2 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL2 --implicit-check-not 'Configuration file:'
 //
 // FULL2: Configuration file: {{.*}}/testdmode/x86_64-unknown-linux-gnu-clang-g++.cfg
 
 //--- FULL2 + -m32.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ -m32 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL2-I386 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ -m32 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL2-I386 --implicit-check-not 'Configuration file:'
 //
 // FULL2-I386: Configuration file: {{.*}}/testdmode/i386-unknown-linux-gnu-clang-g++.cfg
 
@@ -155,42 +155,42 @@
 // RUN: rm %t/testdmode/i386-unknown-linux-gnu-clang-g++.cfg
 // RUN: rm %t/testdmode/x86_64-unknown-linux-gnu-clang.cfg
 // RUN: rm %t/testdmode/i386-unknown-linux-gnu-clang.cfg
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL3 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL3 --implicit-check-not 'Configuration file:'
 //
 // FULL3: Configuration file: {{.*}}/testdmode/clang++.cfg
 // FULL3: Configuration file: {{.*}}/testdmode/x86_64-unknown-linux-gnu.cfg
 
 //--- FULL3 + -m32.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ -m32 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL3-I386 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ -m32 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL3-I386 --implicit-check-not 'Configuration file:'
 //
 // FULL3-I386: Configuration file: {{.*}}/testdmode/clang++.cfg
 // FULL3-I386: Configuration file: {{.*}}/testdmode/i386-unknown-linux-gnu.cfg
 
 //--- FULL3 + --driver-mode=.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --driver-mode=gcc --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL3-GCC --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --driver-mode=gcc --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL3-GCC --implicit-check-not 'Configuration file:'
 //
 // FULL3-GCC: Configuration file: {{.*}}/testdmode/clang.cfg
 // FULL3-GCC: Configuration file: {{.*}}/testdmode/x86_64-unknown-linux-gnu.cfg
 
 //--- QQQ fallback.
 //
-// RUN: %t/testdmode/qqq-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix QQQ-FALLBACK --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/qqq-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix QQQ-FALLBACK --implicit-check-not 'Configuration file:'
 //
 // QQQ-FALLBACK: Configuration file: {{.*}}/testdmode/clang++.cfg
 // QQQ-FALLBACK: Configuration file: {{.*}}/testdmode/qqq.cfg
 
 //--- "x86_64" falback.
 //
-// RUN: %t/testdmode/x86_64-clang --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix X86_64-FALLBACK --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-clang --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix X86_64-FALLBACK --implicit-check-not 'Configuration file:'
 //
 // X86_64-FALLBACK: Configuration file: {{.*}}/testdmode/clang.cfg
 // X86_64-FALLBACK: Configuration file: {{.*}}/testdmode/x86_64.cfg
 
 //--- cheribsd fallback.
 //
-// RUN: %t/testdmode/cheribsd-riscv64-hybrid-clang++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix CHERIBSD-FALLBACK --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/cheribsd-riscv64-hybrid-clang++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix CHERIBSD-FALLBACK --implicit-check-not 'Configuration file:'
 //
 // CHERIBSD-FALLBACK: Configuration file: {{.*}}/testdmode/clang++.cfg
 // CHERIBSD-FALLBACK: Configuration file: {{.*}}/testdmode/cheribsd-riscv64-hybrid.cfg
@@ -198,7 +198,7 @@
 //--- Test fallback to x86_64-unknown-linux-gnu.cfg + clang-g++.cfg.
 //
 // RUN: rm %t/testdmode/clang++.cfg
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL4 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL4 --implicit-check-not 'Configuration file:'
 //
 // FULL4: Configuration file: {{.*}}/testdmode/clang-g++.cfg
 // FULL4: Configuration file: {{.*}}/testdmode/x86_64-unknown-linux-gnu.cfg
@@ -207,20 +207,20 @@
 //
 // RUN: rm %t/testdmode/x86_64-unknown-linux-gnu.cfg
 // RUN: rm %t/testdmode/i386-unknown-linux-gnu.cfg
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL5 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL5 --implicit-check-not 'Configuration file:'
 //
 // FULL5: Configuration file: {{.*}}/testdmode/clang-g++.cfg
 
 //--- FULL5 + -m32.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ -m32 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL5-I386 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ -m32 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL5-I386 --implicit-check-not 'Configuration file:'
 //
 // FULL5-I386: Configuration file: {{.*}}/testdmode/clang-g++.cfg
 
 //--- Test that incorrect driver mode config file is not used.
 //
 // RUN: rm %t/testdmode/clang-g++.cfg
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix NO-CONFIG
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix NO-CONFIG
 
 //--- Tilde expansion in user configuration file directory
 //
@@ -232,20 +232,20 @@
 // RUN: touch %t/testdmode/x86_64-apple-darwin23.6.0-clang.cfg
 // RUN: touch %t/testdmode/x86_64-apple-darwin23-clang.cfg
 // RUN: touch %t/testdmode/x86_64-apple-darwin-clang.cfg
-// RUN: %clang -target x86_64-apple-darwin23.6.0 --config-system-dir=%t/testdmode --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix DARWIN --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %clang -target x86_64-apple-darwin23.6.0 --config-system-dir=%t/testdmode --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix DARWIN --implicit-check-not 'Configuration file:'
 //
 // DARWIN: Configuration file: {{.*}}/testdmode/x86_64-apple-darwin23.6.0-clang.cfg
 
 //--- DARWIN + no full version
 //
 // RUN: rm %t/testdmode/x86_64-apple-darwin23.6.0-clang.cfg
-// RUN: %clang -target x86_64-apple-darwin23.6.0 --config-system-dir=%t/testdmode --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix DARWIN-MAJOR --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %clang -target x86_64-apple-darwin23.6.0 --config-system-dir=%t/testdmode --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix DARWIN-MAJOR --implicit-check-not 'Configuration file:'
 //
 // DARWIN-MAJOR: Configuration file: {{.*}}/testdmode/x86_64-apple-darwin23-clang.cfg
 
 //--- DARWIN + no version
 //
 // RUN: rm %t/testdmode/x86_64-apple-darwin23-clang.cfg
-// RUN: %clang -target x86_64-apple-darwin23.6.0 --config-system-dir=%t/testdmode --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix DARWIN-VERSIONLESS --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %clang -target x86_64-apple-darwin23.6.0 --config-system-dir=%t/testdmode --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix DARWIN-VERSIONLESS --implicit-check-not 'Configuration file:'
 //
 // DARWIN-VERSIONLESS: Configuration file: {{.*}}/testdmode/x86_64-apple-darwin-...
[truncated]

@llvmbot
Copy link
Member

llvmbot commented Sep 4, 2025

@llvm/pr-subscribers-clang

Author: Aiden Grossman (boomanaiden154)

Changes

This patch rewrites a couple tsts that fail when running with lit's
internal shell enabled due to assumptions about setting environment
variables. There were a couple cases where there was an implict env.
Most of the cases needed unset swapped for env -u.

Toeards #102699.


Patch is 27.00 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/156904.diff

7 Files Affected:

  • (modified) clang/test/Driver/config-file3.c (+34-34)
  • (modified) clang/test/Driver/config-zos.c (+2-4)
  • (modified) clang/test/Driver/config-zos1.c (+4-7)
  • (modified) clang/test/Driver/coverage.c (+2-2)
  • (modified) clang/test/Modules/crash-vfs-path-symlink-component.m (+2-2)
  • (modified) clang/test/Modules/crash-vfs-path-traversal.m (+2-2)
  • (modified) clang/test/Modules/crash-vfs-relative-overlay.m (+2-2)
diff --git a/clang/test/Driver/config-file3.c b/clang/test/Driver/config-file3.c
index 395c31ce04b6b..9ba807da84414 100644
--- a/clang/test/Driver/config-file3.c
+++ b/clang/test/Driver/config-file3.c
@@ -1,7 +1,5 @@
-// REQUIRES: shell
 // REQUIRES: x86-registered-target
 
-// RUN: unset CLANG_NO_DEFAULT_CONFIG
 // RUN: rm -rf %t && mkdir %t
 
 //--- If config file is specified by relative path (workdir/cfg-s2), it is searched for by that path.
@@ -10,7 +8,9 @@
 // RUN: echo "@subdir/cfg-s2" > %t/workdir/cfg-1
 // RUN: echo "-Wundefined-var-template" > %t/workdir/subdir/cfg-s2
 //
-// RUN: ( cd %t && %clang --config=workdir/cfg-1 -c -### %s 2>&1 | FileCheck %s -check-prefix CHECK-REL )
+// RUN: pushd %t
+// RUN: %clang --config=workdir/cfg-1 -c -### %s 2>&1 | FileCheck %s -check-prefix CHECK-REL
+// RUN: popd
 //
 // CHECK-REL: Configuration file: {{.*}}/workdir/cfg-1
 // CHECK-REL: -Wundefined-var-template
@@ -51,84 +51,84 @@
 // RUN: touch %t/testdmode/clang++.cfg
 // RUN: touch %t/testdmode/clang-g++.cfg
 // RUN: touch %t/testdmode/clang.cfg
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1 --implicit-check-not 'Configuration file:'
 //
 // FULL1: Configuration file: {{.*}}/testdmode/x86_64-unknown-linux-gnu-clang++.cfg
 
 //--- -m32 overrides triple.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ -m32 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1-I386 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ -m32 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1-I386 --implicit-check-not 'Configuration file:'
 //
 // FULL1-I386: Configuration file: {{.*}}/testdmode/i386-unknown-linux-gnu-clang++.cfg
 
 //--- --target= also works for overriding triple.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --target=i386-unknown-linux-gnu --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1-I386 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --target=i386-unknown-linux-gnu --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1-I386 --implicit-check-not 'Configuration file:'
 
 //--- With --target= + -m64, -m64 takes precedence.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --target=i386-unknown-linux-gnu -m64 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --target=i386-unknown-linux-gnu -m64 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1 --implicit-check-not 'Configuration file:'
 
 //--- i386 prefix also works for 32-bit.
 //
-// RUN: %t/testdmode/i386-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1-I386 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/i386-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1-I386 --implicit-check-not 'Configuration file:'
 
 //--- i386 prefix + -m64 also works for 64-bit.
 //
-// RUN: %t/testdmode/i386-unknown-linux-gnu-clang-g++ -m64 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/i386-unknown-linux-gnu-clang-g++ -m64 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1 --implicit-check-not 'Configuration file:'
 
 //--- File specified by --config= is loaded after the one inferred from the executable.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir=%S/Inputs/config --config-user-dir= --config=i386-qqq.cfg -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix EXPLICIT --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir=%S/Inputs/config --config-user-dir= --config=i386-qqq.cfg -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix EXPLICIT --implicit-check-not 'Configuration file:'
 //
 // EXPLICIT: Configuration file: {{.*}}/testdmode/x86_64-unknown-linux-gnu-clang++.cfg
 // EXPLICIT-NEXT: Configuration file: {{.*}}/Inputs/config/i386-qqq.cfg
 
 //--- --no-default-config --config= loads only specified file.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir=%S/Inputs/config --config-user-dir= --no-default-config --config=i386-qqq.cfg -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix EXPLICIT-ONLY --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir=%S/Inputs/config --config-user-dir= --no-default-config --config=i386-qqq.cfg -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix EXPLICIT-ONLY --implicit-check-not 'Configuration file:'
 //
 // EXPLICIT-ONLY: Configuration file: {{.*}}/Inputs/config/i386-qqq.cfg
 
 //--- --no-default-config disables default filenames.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir=%S/Inputs/config --config-user-dir= --no-default-config -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix NO-CONFIG
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir=%S/Inputs/config --config-user-dir= --no-default-config -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix NO-CONFIG
 //
 // NO-CONFIG-NOT: Configuration file:
 
 //--- --driver-mode= is respected.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --driver-mode=gcc --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1-GCC --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --driver-mode=gcc --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1-GCC --implicit-check-not 'Configuration file:'
 //
 // FULL1-GCC: Configuration file: {{.*}}/testdmode/x86_64-unknown-linux-gnu-clang.cfg
 
 //--- "clang" driver symlink should yield the "*-clang" configuration file.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1-GCC --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1-GCC --implicit-check-not 'Configuration file:'
 
 //--- "clang" + --driver-mode= should yield "*-clang++".
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang --driver-mode=g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang --driver-mode=g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1 --implicit-check-not 'Configuration file:'
 
 //--- Clang started via name prefix that is not valid is forcing that prefix instead of target triple.
 //
-// RUN: %t/testdmode/qqq-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix QQQ --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/qqq-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix QQQ --implicit-check-not 'Configuration file:'
 //
 // QQQ: Configuration file: {{.*}}/testdmode/qqq-clang-g++.cfg
 
 //--- Explicit --target= overrides the triple even with non-standard name prefix.
 //
-// RUN: %t/testdmode/qqq-clang-g++ --target=x86_64-unknown-linux-gnu --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/qqq-clang-g++ --target=x86_64-unknown-linux-gnu --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL1 --implicit-check-not 'Configuration file:'
 
 //--- "x86_64" prefix does not form a valid triple either.
 //
-// RUN: %t/testdmode/x86_64-clang --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix X86_64 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-clang --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix X86_64 --implicit-check-not 'Configuration file:'
 //
 // X86_64: Configuration file: {{.*}}/testdmode/x86_64-clang.cfg
 
 //--- Try cheribsd prefix using misordered triple components.
 //
-// RUN: %t/testdmode/cheribsd-riscv64-hybrid-clang++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix CHERIBSD --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/cheribsd-riscv64-hybrid-clang++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix CHERIBSD --implicit-check-not 'Configuration file:'
 //
 // CHERIBSD: Configuration file: {{.*}}/testdmode/cheribsd-riscv64-hybrid-clang++.cfg
 
@@ -136,13 +136,13 @@
 //
 // RUN: rm %t/testdmode/x86_64-unknown-linux-gnu-clang++.cfg
 // RUN: rm %t/testdmode/i386-unknown-linux-gnu-clang++.cfg
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL2 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL2 --implicit-check-not 'Configuration file:'
 //
 // FULL2: Configuration file: {{.*}}/testdmode/x86_64-unknown-linux-gnu-clang-g++.cfg
 
 //--- FULL2 + -m32.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ -m32 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL2-I386 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ -m32 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL2-I386 --implicit-check-not 'Configuration file:'
 //
 // FULL2-I386: Configuration file: {{.*}}/testdmode/i386-unknown-linux-gnu-clang-g++.cfg
 
@@ -155,42 +155,42 @@
 // RUN: rm %t/testdmode/i386-unknown-linux-gnu-clang-g++.cfg
 // RUN: rm %t/testdmode/x86_64-unknown-linux-gnu-clang.cfg
 // RUN: rm %t/testdmode/i386-unknown-linux-gnu-clang.cfg
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL3 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL3 --implicit-check-not 'Configuration file:'
 //
 // FULL3: Configuration file: {{.*}}/testdmode/clang++.cfg
 // FULL3: Configuration file: {{.*}}/testdmode/x86_64-unknown-linux-gnu.cfg
 
 //--- FULL3 + -m32.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ -m32 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL3-I386 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ -m32 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL3-I386 --implicit-check-not 'Configuration file:'
 //
 // FULL3-I386: Configuration file: {{.*}}/testdmode/clang++.cfg
 // FULL3-I386: Configuration file: {{.*}}/testdmode/i386-unknown-linux-gnu.cfg
 
 //--- FULL3 + --driver-mode=.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --driver-mode=gcc --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL3-GCC --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --driver-mode=gcc --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL3-GCC --implicit-check-not 'Configuration file:'
 //
 // FULL3-GCC: Configuration file: {{.*}}/testdmode/clang.cfg
 // FULL3-GCC: Configuration file: {{.*}}/testdmode/x86_64-unknown-linux-gnu.cfg
 
 //--- QQQ fallback.
 //
-// RUN: %t/testdmode/qqq-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix QQQ-FALLBACK --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/qqq-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix QQQ-FALLBACK --implicit-check-not 'Configuration file:'
 //
 // QQQ-FALLBACK: Configuration file: {{.*}}/testdmode/clang++.cfg
 // QQQ-FALLBACK: Configuration file: {{.*}}/testdmode/qqq.cfg
 
 //--- "x86_64" falback.
 //
-// RUN: %t/testdmode/x86_64-clang --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix X86_64-FALLBACK --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-clang --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix X86_64-FALLBACK --implicit-check-not 'Configuration file:'
 //
 // X86_64-FALLBACK: Configuration file: {{.*}}/testdmode/clang.cfg
 // X86_64-FALLBACK: Configuration file: {{.*}}/testdmode/x86_64.cfg
 
 //--- cheribsd fallback.
 //
-// RUN: %t/testdmode/cheribsd-riscv64-hybrid-clang++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix CHERIBSD-FALLBACK --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/cheribsd-riscv64-hybrid-clang++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix CHERIBSD-FALLBACK --implicit-check-not 'Configuration file:'
 //
 // CHERIBSD-FALLBACK: Configuration file: {{.*}}/testdmode/clang++.cfg
 // CHERIBSD-FALLBACK: Configuration file: {{.*}}/testdmode/cheribsd-riscv64-hybrid.cfg
@@ -198,7 +198,7 @@
 //--- Test fallback to x86_64-unknown-linux-gnu.cfg + clang-g++.cfg.
 //
 // RUN: rm %t/testdmode/clang++.cfg
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL4 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL4 --implicit-check-not 'Configuration file:'
 //
 // FULL4: Configuration file: {{.*}}/testdmode/clang-g++.cfg
 // FULL4: Configuration file: {{.*}}/testdmode/x86_64-unknown-linux-gnu.cfg
@@ -207,20 +207,20 @@
 //
 // RUN: rm %t/testdmode/x86_64-unknown-linux-gnu.cfg
 // RUN: rm %t/testdmode/i386-unknown-linux-gnu.cfg
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL5 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL5 --implicit-check-not 'Configuration file:'
 //
 // FULL5: Configuration file: {{.*}}/testdmode/clang-g++.cfg
 
 //--- FULL5 + -m32.
 //
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ -m32 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL5-I386 --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ -m32 --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix FULL5-I386 --implicit-check-not 'Configuration file:'
 //
 // FULL5-I386: Configuration file: {{.*}}/testdmode/clang-g++.cfg
 
 //--- Test that incorrect driver mode config file is not used.
 //
 // RUN: rm %t/testdmode/clang-g++.cfg
-// RUN: %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix NO-CONFIG
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %t/testdmode/x86_64-unknown-linux-gnu-clang-g++ --config-system-dir= --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix NO-CONFIG
 
 //--- Tilde expansion in user configuration file directory
 //
@@ -232,20 +232,20 @@
 // RUN: touch %t/testdmode/x86_64-apple-darwin23.6.0-clang.cfg
 // RUN: touch %t/testdmode/x86_64-apple-darwin23-clang.cfg
 // RUN: touch %t/testdmode/x86_64-apple-darwin-clang.cfg
-// RUN: %clang -target x86_64-apple-darwin23.6.0 --config-system-dir=%t/testdmode --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix DARWIN --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %clang -target x86_64-apple-darwin23.6.0 --config-system-dir=%t/testdmode --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix DARWIN --implicit-check-not 'Configuration file:'
 //
 // DARWIN: Configuration file: {{.*}}/testdmode/x86_64-apple-darwin23.6.0-clang.cfg
 
 //--- DARWIN + no full version
 //
 // RUN: rm %t/testdmode/x86_64-apple-darwin23.6.0-clang.cfg
-// RUN: %clang -target x86_64-apple-darwin23.6.0 --config-system-dir=%t/testdmode --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix DARWIN-MAJOR --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %clang -target x86_64-apple-darwin23.6.0 --config-system-dir=%t/testdmode --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix DARWIN-MAJOR --implicit-check-not 'Configuration file:'
 //
 // DARWIN-MAJOR: Configuration file: {{.*}}/testdmode/x86_64-apple-darwin23-clang.cfg
 
 //--- DARWIN + no version
 //
 // RUN: rm %t/testdmode/x86_64-apple-darwin23-clang.cfg
-// RUN: %clang -target x86_64-apple-darwin23.6.0 --config-system-dir=%t/testdmode --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix DARWIN-VERSIONLESS --implicit-check-not 'Configuration file:'
+// RUN: env -u CLANG_NO_DEFAULT_CONFIG %clang -target x86_64-apple-darwin23.6.0 --config-system-dir=%t/testdmode --config-user-dir= -no-canonical-prefixes --version 2>&1 | FileCheck %s -check-prefix DARWIN-VERSIONLESS --implicit-check-not 'Configuration file:'
 //
 // DARWIN-VERSIONLESS: Configuration file: {{.*}}/testdmode/x86_64-apple-darwin-...
[truncated]

Copy link
Member

@carlocab carlocab left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems worth investigating adding support for unset in lit's internal shell given how much repetition it would save here, TBH.

@ilovepi
Copy link
Contributor

ilovepi commented Sep 4, 2025

Seems worth investigating adding support for unset in lit's internal shell given how much repetition it would save here, TBH.

IIRC in the initial work last year it was deliberately decided not to support unset, since ists somewhat complex w/ its interactions, and you can have similar behavior w/ env -u for the specific tests that need it.

Copy link
Contributor

@ilovepi ilovepi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Created using spr 1.3.6
@boomanaiden154 boomanaiden154 merged commit 46a3b4d into main Sep 4, 2025
9 checks passed
@boomanaiden154 boomanaiden154 deleted the users/boomanaiden154/clang-rewrite-tests-relying-on-shell-environment-variable-features branch September 4, 2025 18:17
llvm-sync bot pushed a commit to arm/arm-toolchain that referenced this pull request Sep 4, 2025
…e features

This patch rewrites a couple tsts that fail when running with lit's
internal shell enabled due to assumptions about setting environment
variables. There were a couple cases where there was an implict env.
Most of the cases needed unset swapped for env -u.

Toeards #102699.

Reviewers: petrhosek, efriedma-quic, Sirraide, carlocab, rnk, ilovepi

Reviewed By: carlocab, rnk, ilovepi

Pull Request: llvm/llvm-project#156904
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clang:driver 'clang' and 'clang++' user-facing binaries. Not 'clang-cl' clang:modules C++20 modules and Clang Header Modules clang Clang issues not falling into any other category
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants