On Thursday, 16 October 2014 at 20:18:04 UTC, Walter Bright wrote:
On 10/16/2014 12:56 PM, Dicebot wrote:
On Thursday, 16 October 2014 at 19:35:40 UTC, Walter Bright wrote:
Ok, but why would 3rd party library unittests be a concern? They shouldn't have shipped it if their own unittests fail - that's the whole point of having
unittests.

Libraries tend to be forked and modified.

If you're willing to go that far, then yes, you do wind up owning the unittests, in which case s/assert/myassert/ should do it.

Which means changing almost all sources and resolving conflicts upon each merge. Forking library for few tweaks is not "going that far", it is an absolutely minor routine. It also complicates propagating changes back upstream because all tests need to be re-adjusted back to original style.

Libraries aren't always tested in
environment similar to specific production case.

Unittests should not be testing their environment. They should be testing the function's logic, and should mock up input for them as required.

compiler version, libc version, kernel version - all it can affect behaviour or pretty self-contained function. Perfectly tested library is as much reality as program with 0 bugs.

At the same time not being able
to use same test runner in all Continious Integration jobs greatly reduces the value of having standard unittest blocks in the very first place.

I understand that, but wouldn't you be modifying the unittests anyway if using an external test runner tool?

No, right now one can affect the way tests are run by simply replacing the runner to a custom one and it will work for any amount of modules compiled in. Beauty of `unittest` block approach is that it is simply a bunch of functions that are somewhat easy to discover from the combined sources of the program - custom runner can do pretty much anything with those. Or it could if not the issue with AssertError and cleanup.

Reply via email to