diff options
| author | Sean Silva <chisophugis@gmail.com> | 2016-03-01 01:20:15 +0000 |
|---|---|---|
| committer | Sean Silva <chisophugis@gmail.com> | 2016-03-01 01:20:15 +0000 |
| commit | 05c8ef085b8cc03102e84d855a0658423579fd26 (patch) | |
| tree | 00ad7ef388fb2f1356baa337a696ee334a835541 | |
| parent | f08579f5a875d599eacbef3a744972dd71fc2a51 (diff) | |
| download | bcm5719-llvm-05c8ef085b8cc03102e84d855a0658423579fd26.tar.gz bcm5719-llvm-05c8ef085b8cc03102e84d855a0658423579fd26.zip | |
Make test more robust.
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.
llvm-svn: 262285
| -rw-r--r-- | clang/test/Driver/ps4-linker-non-win.c | 2 | ||||
| -rw-r--r-- | clang/test/Driver/ps4-linker-win.c | 5 |
2 files changed, 3 insertions, 4 deletions
diff --git a/clang/test/Driver/ps4-linker-non-win.c b/clang/test/Driver/ps4-linker-non-win.c index 1fce6d6077f..98a634308b8 100644 --- a/clang/test/Driver/ps4-linker-non-win.c +++ b/clang/test/Driver/ps4-linker-non-win.c @@ -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 diff --git a/clang/test/Driver/ps4-linker-win.c b/clang/test/Driver/ps4-linker-win.c index 80387acec79..fe45786a366 100644 --- a/clang/test/Driver/ps4-linker-win.c +++ b/clang/test/Driver/ps4-linker-win.c @@ -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 |

