| Thread overview | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
September 07, 2015 Better unittest failure output | ||||
|---|---|---|---|---|
| ||||
I am working on a simple project created with DUB[1].
When unit tests the output reads really cryptic to me; for example:
$ dub test
Generating test runner configuration '__test__library__' for 'library' (library).
Target dunit 1.0.11 is up to date. Use --force to rebuild.
Building d-etudes ~master configuration "__test__library__", build type unittest.
Compiling using dmd...
Linking...
Running ./__test__library__
core.exception.AssertError@source/e002.d(111): unittest failure
----------------
./__test__library__(void detudes.e002.__unittest_fail(int)+0x28) [0x4bf508]
./__test__library__(void detudes.e002.__unittestL106_4()+0x17b) [0x4bf47b]
./__test__library__(void detudes.e002.__modtest()+0xe) [0x4bf48e]
./__test__library__(int core.runtime.runModuleUnitTests().__foreachbody2(object.ModuleInfo*)+0x34) [0x4d0d0c]
./__test__library__(int object.ModuleInfo.opApply(scope int delegate(object.ModuleInfo*)).__lambda2(immutable(object.ModuleInfo*))+0x1c) [0x4c1ab4]
./__test__library__(int rt.minfo.moduleinfos_apply(scope int delegate(immutable(object.ModuleInfo*))).__foreachbody2(ref rt.sections_elf_shared.DSO)+0x46) [0x4c7422]
./__test__library__(int rt.sections_elf_shared.DSO.opApply(scope int delegate(ref rt.sections_elf_shared.DSO))+0x41) [0x4c7499]
./__test__library__(int rt.minfo.moduleinfos_apply(scope int delegate(immutable(object.ModuleInfo*)))+0x20) [0x4c73bc]
./__test__library__(int object.ModuleInfo.opApply(scope int delegate(object.ModuleInfo*))+0x20) [0x4c1a90]
./__test__library__(runModuleUnitTests+0x98) [0x4d0bd8]
./__test__library__(void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll()+0x17) [0x4c4147]
./__test__library__(void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).tryExec(scope void delegate())+0x2a) [0x4c40fa]
./__test__library__(_d_run_main+0x1d2) [0x4c407a]
./__test__library__(main+0x20) [0x48a968]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7f1f751d9ec5]
Error executing command test:
Program exited with code 1
It is almost impossible for me to comprehend anything useful out of this, except that, well, the tests have failed :-)
Is there any compiler switch, argument to `assert` or trick to make `unittest` output more helpful messages when failing?
[1] https://github.com/bahmanm/d-etudes
| ||||
September 07, 2015 Re: Better unittest failure output | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Bahman Movaqar | On Monday 07 September 2015 13:57, Bahman Movaqar wrote: > I am working on a simple project created with DUB[1]. > When unit tests the output reads really cryptic to me; for > example: > > $ dub test [...] > core.exception.AssertError@source/e002.d(111): unittest > failure [...] > > It is almost impossible for me to comprehend anything useful out of this, except that, well, the tests have failed :-) From that one line I left intact above, you should also be able to figure out that it's the test in source/e002.d, line 111 that failed. > Is there any compiler switch, argument to `assert` or trick to make `unittest` output more helpful messages when failing? You can pass a custom message as a second argument to assert: assert(condition, "message goes here"); I think there are testing libraries/frameworks around that mean to provide more than the basic built-in things. But I haven't tried any, so I can't recommend anything. Try searching for "test" here: http://code.dlang.org/ | |||
September 07, 2015 Re: Better unittest failure output | ||||
|---|---|---|---|---|
| ||||
Posted in reply to anonymous | On Monday, 7 September 2015 at 12:06:09 UTC, anonymous wrote: > On Monday 07 September 2015 13:57, Bahman Movaqar wrote: >> $ dub test > [...] >> core.exception.AssertError@source/e002.d(111): unittest >> failure > [...] > From that one line I left intact above, you should also be able to figure out that it's the test in source/e002.d, line 111 that failed. True. That I had already figured out. I was actually hoping for something like Groovy's assert messages[1], if possible. >> Is there any compiler switch, argument to `assert` or trick to make `unittest` output more helpful messages when failing? > > You can pass a custom message as a second argument to assert: > assert(condition, "message goes here"); Thanks. This is indeed helpful. OT but where can I view the documentation for `unittest` and `assert`? [1] http://docs.groovy-lang.org/next/html/documentation/core-testing-guide.html#_power_assertions | |||
September 07, 2015 Re: Better unittest failure output | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Bahman Movaqar | On Monday 07 September 2015 14:12, Bahman Movaqar wrote: > Thanks. This is indeed helpful. OT but where can I view the documentation for `unittest` and `assert`? unittest: http://dlang.org/unittest.html assert: http://dlang.org/expression.html#AssertExpression (I don't know why it's considered an expression and not a statement.) | |||
September 07, 2015 Re: Better unittest failure output | ||||
|---|---|---|---|---|
| ||||
Posted in reply to anonymous | On Monday, 7 September 2015 at 12:16:14 UTC, anonymous wrote:
> On Monday 07 September 2015 14:12, Bahman Movaqar wrote:
>
>> Thanks. This is indeed helpful. OT but where can I view the documentation for `unittest` and `assert`?
>
> unittest: http://dlang.org/unittest.html
> assert: http://dlang.org/expression.html#AssertExpression (I don't know why
> it's considered an expression and not a statement.)
Thanks.
| |||
September 07, 2015 Re: Better unittest failure output | ||||
|---|---|---|---|---|
| ||||
Posted in reply to anonymous | On Monday, 7 September 2015 at 12:16:14 UTC, anonymous wrote:
> On Monday 07 September 2015 14:12, Bahman Movaqar wrote:
>
>> Thanks. This is indeed helpful. OT but where can I view the documentation for `unittest` and `assert`?
>
> unittest: http://dlang.org/unittest.html
> assert: http://dlang.org/expression.html#AssertExpression (I don't know why
> it's considered an expression and not a statement.)
int main()
{
int a = 1;
a || assert(false);
return 0;
}
| |||
September 07, 2015 Re: Better unittest failure output | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Bahman Movaqar | On Monday, 7 September 2015 at 11:57:25 UTC, Bahman Movaqar wrote: > I am working on a simple project created with DUB[1]. > When unit tests the output reads really cryptic to me; for example: Try using DUnit, it gives you much more readable fail messages: https://github.com/nomad-software/dunit | |||
September 07, 2015 Re: Better unittest failure output | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Gary Willoughby | On Monday, 7 September 2015 at 12:58:58 UTC, Gary Willoughby wrote: > On Monday, 7 September 2015 at 11:57:25 UTC, Bahman Movaqar wrote: >> I am working on a simple project created with DUB[1]. >> When unit tests the output reads really cryptic to me; for example: > > Try using DUnit, it gives you much more readable fail messages: > > https://github.com/nomad-software/dunit It's in the dub repository too: http://code.dlang.org/packages/dunit | |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply