[clang] 853b133 - [clang] Fix test for case-insensitive absolute includes (#76985)

via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 5 13:41:54 PST 2024


Author: Jan Svoboda
Date: 2024-01-05T22:41:51+01:00
New Revision: 853b13342a131e06d61293ec6e840642054c6c85

URL: https://github.com/llvm/llvm-project/commit/853b13342a131e06d61293ec6e840642054c6c85
DIFF: https://github.com/llvm/llvm-project/commit/853b13342a131e06d61293ec6e840642054c6c85.diff

LOG: [clang] Fix test for case-insensitive absolute includes (#76985)

When CMake on Windows is told to generate the build into a directory
whose real path has a different drive letter (e.g. due to a symlink),
the "clang/test/Lexer/case-insensitive-include-absolute.c" test fails.
That happens because because `trySimplifyPath()` in `PPDirectives.cpp`
finds out there's more than a case difference between the `#include`
path (containing `%/t`) and the real path, which prevents the diagnostic
to fire.

I thought this is only an issue on Windows due to the fact that LIT does
not drag the path to the build directory through `os.path.realpath()`
like it does on other systems (see `abs_path_preserve_drive()` in
"llvm/utils/lit/lit/util.py"). However, even after only using
`os.path.abspath()` on a Unix system, build generated into a symlinked
directory tests correctly. I assume there must be something else at
play, but I don't have the time to dig deeper.

The fix is is fairly straightforward: use the real path in the
`#include` (with `%{/t:real}`), which removes the non-case difference
and unblocks the diagnostic.

Added: 
    

Modified: 
    clang/test/Lexer/case-insensitive-include-absolute.c

Removed: 
    


################################################################################
diff  --git a/clang/test/Lexer/case-insensitive-include-absolute.c b/clang/test/Lexer/case-insensitive-include-absolute.c
index 6247e4808c7fa2..ef9e131c45df59 100644
--- a/clang/test/Lexer/case-insensitive-include-absolute.c
+++ b/clang/test/Lexer/case-insensitive-include-absolute.c
@@ -1,8 +1,8 @@
 // REQUIRES: case-insensitive-filesystem
 
 // RUN: rm -rf %t && split-file %s %t
-// RUN: sed "s|DIR|%/t|g" %t/tu.c.in > %t/tu.c
-// RUN: %clang_cc1 -fsyntax-only %t/tu.c 2>&1 | FileCheck %s --DDIR=%/t
+// RUN: sed "s|DIR|%{/t:real}|g" %t/tu.c.in > %t/tu.c
+// RUN: %clang_cc1 -fsyntax-only %t/tu.c 2>&1 | FileCheck %s -DDIR=%{/t:real}
 
 //--- header.h
 //--- tu.c.in


        


More information about the cfe-commits mailing list