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)
commit05c8ef085b8cc03102e84d855a0658423579fd26
tree00ad7ef388fb2f1356baa337a696ee334a835541
parentf08579f5a875d599eacbef3a744972dd71fc2a51
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
clang/test/Driver/ps4-linker-non-win.c
clang/test/Driver/ps4-linker-win.c