Otherwise, the unit tests seem to be confused on Windows. Note that it
would in theory be better to always use the platform's path, however we
don't seem to have a good way of handling that with FileCheck right now.
This change makes the handling of paths on Darwin consistent with what
we do on Linux, and also with what we used to do (for several paths)
before the refactoring in r361278.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
- Build Status
Buildable 32533 Build 32532: arc lint + arc unit
Event Timeline
A few notes:
- I did setup a Windows machine and run the tests on it
- I'd welcome a better way to solve this problem than ripping out the use of llvm::sys::path::append, but I wasn't able to find anything in FileCheck that would do it
This doesn’t look okay to me, because this would prevent building for Darwin when running on Windows. I added a couple of reviewers that have Windows experience and might have ideas for how to fix the tests without breaking the portability of the driver.
So, there's nothing wrong, functionally speaking, with what we do today, right? It's just inconvenient to test.
The difficulty of testing the driver has been a long standing problem. I think we might want to instead invent some new kind of alternative to -### for writing driver tests that is more FileCheck friendly. For example, we could print flags one-per line, without quoting. I think it would also be reasonable to do some dumb string post-processing to rewrite Windows-style paths to Unix style paths so they always look the same.
What we do for Darwin today (without this patch) is functionally correct, but hard to test.
What we do for other platforms (e.g. Linux) today is probably not correct, since we use Unix-style paths all around the place.
The difficulty of testing the driver has been a long standing problem. I think we might want to instead invent some new kind of alternative to -### for writing driver tests that is more FileCheck friendly. For example, we could print flags one-per line, without quoting. I think it would also be reasonable to do some dumb string post-processing to rewrite Windows-style paths to Unix style paths so they always look the same.
Would it make sense to be able to define FileCheck variables (with -DFOO) while giving them a type? If I could specify that I'm passing paths to FileCheck and it normalized them for the platform the tests are being run on, I think that would solve the issue. Do you think that's an idea worth pursuing?