What does 'test' in testcases do?
Paolo Carlini
paolo.carlini@oracle.com
Sun Oct 20 10:53:00 GMT 2013
On 10/20/2013 12:09 PM, Christopher Jefferson wrote:
> I decided to try to trace the reason for adding:
>
> bool test __attribute__((unused)) = true;
>
> into tests. It seems to be from the following piece of code in
> util/testsuite_hooks.h:
>
> #ifdef _GLIBCXX_ASSERT
> # include <cassert>
> # define VERIFY(fn) assert(fn)
> #else
> # define VERIFY(fn) test &= bool(fn)
> #endif
>
> So, if we have assert we call it, else we do 'test &= bool(fn)'.
>
> However, as far as I can see, no test does anything with 'test', so I
> think this is ignoring any failing tests on any platform which does
> not have 'assert'?
If I remember correctly, I didn't invent the thing, it wasn't about
platforms missing assert, it was about allowing a different style of
debugging, like build the very same test outside the testsuite with
_GLIBCXX_ASSERT undefined and under the debugger look for test becoming
false. This sort of thing. May make sense if you have many VERIFYs in a
single function, etc, and people actually designs the testcases with
this sort of idea in mind. That said, In the past a number of times
people vaguely said that we could as well remove the machinery and have
just plain asserts. It would be a pretty big patch ;) Maybe we can do it
when Stage 1 reopens post 4.9. Note however, that I do *not* think the
idea I tried to recollect above is completely stupid...
Paolo.
More information about the Libstdc++
mailing list