[cfe-commits] [PATCH] clang/test/Tooling: Tweaks for Win32 hosts

Matthieu Monrocq matthieu.monrocq at gmail.com
Wed May 23 11:56:03 PDT 2012


On Wed, May 23, 2012 at 5:27 PM, Manuel Klimek <klimek at google.com> wrote:

> On Wed, May 23, 2012 at 1:58 PM, NAKAMURA Takumi <geek4civic at gmail.com>wrote:
>
>> 2012/5/23 Michael Spencer <bigcheesegs at gmail.com>:
>> > On Tue, May 22, 2012 at 5:50 PM, NAKAMURA Takumi <geek4civic at gmail.com>
>> wrote:
>> >> They could pass also on msvc if they were -fms-compatibility tolerant.
>> >>
>> >> Manuel, I would be happier if you could tweak tests with -target
>> i686-win32.
>> >>
>> >> ---
>> >> clang/lib/Tooling/CompilationDatabase.cpp | 8 ++++++--
>> >> clang/lib/Tooling/Tooling.cpp | 8 ++++++--
>> >> clang/test/Tooling/clang-check-builtin-headers.cpp | 2 +-
>> >> clang/test/Tooling/clang-check-chdir.cpp | 2 +-
>> >> clang/test/Tooling/clang-check-pwd.cpp | 2 +-
>> >> clang/test/Tooling/clang-check.cpp | 2 +-
>> >> llvm/lib/Support/PathV2.cpp | 3 +++
>> >> 7 files changed, 19 insertions(+), 8 deletions(-)
>> >
>> > +  // FIXME: Does Win32 accept '.\\'?
>> >
>> > Yes it does. Well, cmd.exe does.
>>
>> I would like to say here, "Could Win32's '.\\' be accepted here?"
>> I have to add later. I think it would be critical issue.
>>
>> > diff --git a/clang/test/Tooling/clang-check-builtin-headers.cpp
>> > b/clang/test/Tooling/clang-check-builtin-headers.cpp
>> > index 4324dec..b640d05 100644
>> > --- a/clang/test/Tooling/clang-check-builtin-headers.cpp
>> > +++ b/clang/test/Tooling/clang-check-builtin-headers.cpp
>> > @@ -1,7 +1,7 @@
>> >  // RUN: rm -rf %t
>> >  // RUN: mkdir %t
>> >  // Add a path that doesn't exist as argv[0] for the compile command
>> line:
>> > -// RUN: echo '[{"directory":".","command":"/random/tool -c
>> > %t/test.cpp","file":"%t/test.cpp"}]' > %t/compile_commands.json
>> > +// RUN: echo '[{"directory":".","command":"/random/tool -c
>> > %t/test.cpp","file":"%t/test.cpp"}]' | sed -e 's/\\/\//g' >
>> > %t/compile_commands.json
>> >  // RUN: cp "%s" "%t/test.cpp"
>> >  // RUN: clang-check "%t" "%t/test.cpp" 2>&1|FileCheck %s
>> >  // FIXME: Make the above easier.
>> > diff --git a/clang/test/Tooling/clang-check-chdir.cpp
>> > b/clang/test/Tooling/clang-check-chdir.cpp
>> > index 5d02c95..7c465f3 100644
>> > --- a/clang/test/Tooling/clang-check-chdir.cpp
>> > +++ b/clang/test/Tooling/clang-check-chdir.cpp
>> > @@ -2,7 +2,7 @@
>> >  // compilation database.
>> >  // RUN: rm -rf %t
>> >  // RUN: mkdir %t
>> > -// RUN: echo "[{\"directory\":\"%t\",\"command\":\"clang -c test.cpp
>> > -I.\",\"file\":\"%t/test.cpp\"}]" > %t/compile_commands.json
>> > +// RUN: echo "[{\"directory\":\"%t\",\"command\":\"clang -c test.cpp
>> > -I.\",\"file\":\"%t/test.cpp\"}]" | sed -e 's/\\/\//g' >
>> > %t/compile_commands.json
>> >  // RUN: cp "%s" "%t/test.cpp"
>> >  // RUN: touch "%t/clang-check-test.h"
>> >  // RUN: clang-check "%t" "%t/test.cpp" 2>&1|FileCheck %s
>> > diff --git a/clang/test/Tooling/clang-check-pwd.cpp
>> > b/clang/test/Tooling/clang-check-pwd.cpp
>> > index 96417df..40336cb 100644
>> > --- a/clang/test/Tooling/clang-check-pwd.cpp
>> > +++ b/clang/test/Tooling/clang-check-pwd.cpp
>> > @@ -1,6 +1,6 @@
>> >  // RUN: rm -rf %t
>> >  // RUN: mkdir %t
>> > -// RUN: echo "[{\"directory\":\".\",\"command\":\"clang++ -c
>> > %t/test.cpp\",\"file\":\"%t/test.cpp\"}]" > %t/compile_commands.json
>> > +// RUN: echo "[{\"directory\":\".\",\"command\":\"clang++ -c
>> > %t/test.cpp\",\"file\":\"%t/test.cpp\"}]" | sed -e 's/\\/\\\\/g' >
>> > %t/compile_commands.json
>> >  // RUN: cp "%s" "%t/test.cpp"
>> >  // RUN: PWD="%t" clang-check "%t" "test.cpp" 2>&1|FileCheck %s
>> >  // FIXME: Make the above easier.
>> > diff --git a/clang/test/Tooling/clang-check.cpp
>> > b/clang/test/Tooling/clang-check.cpp
>> > index d197078..d37d14d 100644
>> > --- a/clang/test/Tooling/clang-check.cpp
>> > +++ b/clang/test/Tooling/clang-check.cpp
>> > @@ -1,6 +1,6 @@
>> >  // RUN: rm -rf %t
>> >  // RUN: mkdir %t
>> > -// RUN: echo '[{"directory":".","command":"clang++ -c
>> > %t/test.cpp","file":"%t/test.cpp"}]' > %t/compile_commands.json
>> > +// RUN: echo '[{"directory":".","command":"clang++ -c
>> > %t/test.cpp","file":"%t/test.cpp"}]' | sed -e 's/\\/\//g' >
>> > %t/compile_commands.json
>> >  // RUN: cp "%s" "%t/test.cpp"
>> >  // RUN: clang-check "%t" "%t/test.cpp" 2>&1|FileCheck %s
>> >  // FIXME: Make the above easier.
>> >
>> > For all these tests can we please not use sed? I'd like to get rid of
>> > all dependencies on these tools so Windows can test without GNUWin32.
>>
>> It would be happier if we would get rid of external tools.
>> Then, shall we enhance Lit to expand %X with modifier to be escaped for
>> JSON?
>>
>> Not only sed(1), I can see but also echo(1), cat(1) and cp(1) :p
>> Would you like to prune them anyways?
>
>
> I'm still not sure what our strategy for path handling on windows is...
> There are multiple strategies I've seen work. Simple strategies are:
> 1. accept any path format, convert all paths to an internal representation
> when they enter the application, output according to platform; this might
> be combined with having a real Path abstraction that programmers can use
> instead of having strings for paths
>

Note: Windows accept paths using `/`, it just happens to default to \ for
printing them for some reasons. Therefore if this output issue is Windows
specific, then we could just accept both styles and always output with `/`
as a path separator.


> 2. accept only platform specific path format and use paths verbatim;
> double-special case path handling everywhere
>
> Can somebody enlighten me what clang's strategy is?
>
> Cheers,
> /Manuel
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120523/92e4904a/attachment.html>


More information about the cfe-commits mailing list