digitalmars.D.learn - Custom asset handler messes unit test summary report
- ric maicle (19/19) Feb 23 2020 [dmd 2.090.1 linux 64-bit]
- Basile B. (26/47) Feb 23 2020 Looks like you have to throw an Error at the end of your custom
[dmd 2.090.1 linux 64-bit] The following code does not report the correct unit test summary. The report says 1 unit test passed. ~~~~~ shared static this() { import core.exception; assertHandler(&cah); } void cah(string file, ulong line, string msg) nothrow { import core.stdc.stdio: printf; printf("==============================\n"); printf("Assert error: %s %d: %s\n", file.ptr, line, msg.ptr); printf("==============================\n"); } unittest { assert(false); } ~~~~~
Feb 23 2020
On Monday, 24 February 2020 at 00:50:38 UTC, ric maicle wrote:[dmd 2.090.1 linux 64-bit] The following code does not report the correct unit test summary. The report says 1 unit test passed. ~~~~~ shared static this() { import core.exception; assertHandler(&cah); } void cah(string file, ulong line, string msg) nothrow { import core.stdc.stdio: printf; printf("==============================\n"); printf("Assert error: %s %d: %s\n", file.ptr, line, msg.ptr); printf("==============================\n"); } unittest { assert(false); } ~~~~~Looks like you have to throw an Error at the end of your custom handler, e.g: --- void cah(string file, ulong line, string msg) nothrow { import core.stdc.stdio: printf; import core.exception : AssertError; printf("==============================\n"); printf("Assert error: %s %d: %s\n", file.ptr, line, msg.ptr); printf("==============================\n"); throw new AssertError(""); } --- For a betterC program you can use an HLT: --- void cah(string file, ulong line, string msg) nothrow { import core.stdc.stdio: printf, fflush, stdout; printf("==============================\n"); printf("Assert error: %s %d: %s\n", file.ptr, line, msg.ptr); printf("==============================\n"); fflush(stdout); asm nothrow { hlt; } } ---
Feb 23 2020