]> granicus.if.org Git - clang/commitdiff
Make test more robust.
authorSean Silva <chisophugis@gmail.com>
Tue, 1 Mar 2016 01:20:15 +0000 (01:20 +0000)
committerSean Silva <chisophugis@gmail.com>
Tue, 1 Mar 2016 01:20:15 +0000 (01:20 +0000)
Really all these tests are checking is that we find a file path. The
behavior when we don't find one will have `"ps4-ld"` in it. We just need
a path separator to know that a path has been found.

The root cause of the flakiness of these tests is the same on Windows
and non-Windows: setting the PATH environment variable is not sufficient
to guarantee that a particular path is looked up first.
Driver::GetProgramPath checks some paths before deferring to PATH
(in particular, the directory containing the clang binary itself).

I initally ran into this on Windows when putting a PS4 linker in
build-dir/bin/ps4-ld for testing.
After digging for a while thinking that it was some windows path search
oddity (the Windows SearchPathW documentation indicates that its
behavior varies depending on a registry setting...).
I eventually tried reproducing the issue on Mac and to my surprise found
the same issue.
Ultimately I traced it down to the extra lookups in
Driver::GetProgramPath.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@262285 91177308-0d34-0410-b5e6-96231b3b80d8

test/Driver/ps4-linker-non-win.c
test/Driver/ps4-linker-win.c

index 1fce6d6077f1e1a6892a606d9a409c67ae288153..98a634308b856b9b36da217bb8fdfc6c33931e57 100644 (file)
@@ -18,4 +18,4 @@
 // RUN: env "PATH=%T/Output:%PATH%" %clang -### -target x86_64-scei-ps4  %s -shared \
 // RUN:     -fuse-ld=ps4 2>&1 | FileCheck --check-prefix=CHECK-PS4-LINKER %s
 
-// CHECK-PS4-LINKER: Output/ps4-ld
+// CHECK-PS4-LINKER: /ps4-ld
index 80387acec79dbc5a12a0a64e1c1e4ca81ace971c..fe45786a366f3d5bd75a6718dd9ea4cfbc8b58f0 100644 (file)
@@ -22,6 +22,5 @@
 // RUN: env "PATH=%T;%PATH%;" %clang -target x86_64-scei-ps4  %s -shared \
 // RUN:     -fuse-ld=ps4 -### 2>&1 | FileCheck --check-prefix=CHECK-PS4-LINKER %s
 
-// FIXME: "Output\\" is hardcoded part of %T.
-// CHECK-PS4-GOLD: Output\\ps4-ld.gold.exe"
-// CHECK-PS4-LINKER: Output\\ps4-ld.exe"
+// CHECK-PS4-GOLD: \\ps4-ld.gold
+// CHECK-PS4-LINKER: \\ps4-ld