[llvm-dev] RFC: A cross platform way of using shell commands in lit tests

Zachary Turner via llvm-dev llvm-dev at lists.llvm.org
Tue Aug 16 11:14:54 PDT 2016

That's more like a workaround though.  The real problem is that file
deletion is racy on Windows.  I can't count the number of times I've
encountered this error, only to find out that adding a retry fixed the
problem.  Sure, if you can remove opened files then there's no problem to
begin with, but even if you can't, you can still remove the file by
retrying again 100ms later or so.  It seems silly to disable a test which
could be testing useful functionality because of some quirk of an OS.

If you had your own robust rm command, it can retry a few times, allowing
the test to run everywhere.

On Tue, Aug 16, 2016 at 11:07 AM Reid Kleckner via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> On Tue, Aug 16, 2016 at 10:09 AM, Greg Bedwell via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>> Anecdotally, most of the times I've seen people add "REQUIRES: shell" on
>>> a test they really meant "disable on windows". I think/hope that's
>>> usually temporary while they investigate problems, but it might explain
>>> why so many tests say they require shell when they don't.
>> In at least one case I can think of
>> ("clang/test/Format/style-on-command-line.cpp") the "REQUIRES: shell" is
>> there to work around annoying intermittent failures on Windows where 'rm'
>> was failing with permission denied errors just occasionally enough to be a
>> problem.  I've definitely seen this happen in a number of other places
>> previously although I can't think whether this affects any other lit tests
>> off-hand, but I know that personally I've had to implement 'robust rm'
>> (basically, keep on trying until the error goes away on its own) on Windows
>> in a number of different systems to work around this sort of problem
>> before.  Replacing gnuwin32 with something where we could easily implement
>> something like 'robust <cmd>' versions for Windows when we encounter these
>> sorts of issues would be fantastic, so I'm definitely in favour of removing
>> the dependency.
> You can use "REQUIRES: can-remove-opened-file" to express this requirement
> more precisely.
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160816/8151ac98/attachment.html>

More information about the llvm-dev mailing list