If you do something dumb enough, the test runner won't print out your test failures
Nick Sabalausky via Digitalmars-d
digitalmars-d at puremagic.com
Sun Oct 23 21:36:35 PDT 2016
On 10/23/2016 05:52 PM, Jonathan M Davis via Digitalmars-d wrote:
>
> import core.sys.posix.unistd;
>
> unittest
> {
> close(2);
> assert("hello" == "7");
> }
>
Ouch! I like the punchline here :)
> However, it does highlight the fact that if you just look at the output of
> running the unit tests and not the exit code, you might think that your
> tests succeeded when they actually failed. But fortunately, that's not
> terribly likely (much as I managed to do it), and if you're using dub, it
> does check the exit code.
>
Honestly, it's gets worse than that IMO:
I've had a bunch of time over the course of using D, with any build tool
from bud/xfbuild (remember those?), to rdmd, to dub, where a slip-up in
my buildscript, project configuration, or a missing import, etc would
result in one or all of my unittests *silently!* failing to run.
I even hit it again just this week - where most tests in mysql-native
were running...except for one, because of a missing import. The only
reason I caught it was because I had learned to be pedantic and
temporarily tossed in a writeln "just to be ABSOLUTELY sure...". Good
thing I did.
This example is not only easier to hit than yours, but it's also worse
because even the exit code will report "A-ok!".
These are all examples of why I was always opposed from the beginning to
D's default of "no output unless a test fails": Because it makes
"success" indistinguishable from certain types of failures.
That's why I always tried to add some "Testing blah blah whatever..."
output at the start of every test in most of my projects: so I *KNOW*
that what merely looks like unittest success actually *IS* unittest success.
That's also one of the biggest things I like about unit-threaded: It
does that automatically, AND (IIRC), it shows a count of how many tests
were run - so when I have any project with more than
like...five...tests, I can look at that number and *know* that I'm not
overlooking a "Hey, wait, this list of tests run is missing 'Testing
fizzbar'!!!"
More information about the Digitalmars-d
mailing list