DustMite, a D test case minimization tool
Vladimir Panteleev
vladimir at thecybershadow.net
Fri May 20 15:01:55 PDT 2011
Inspired by Tigris Delta and the "Want to help DMD bugfixing? Write a
simple utility" thread from digitalmars.D.learn. I hope the DMD
development team will find this useful.
Advantages over Tigris delta:
* Easy to use (takes only two arguments, no need to fiddle with levels)
* Readable output (comments and indentation are preserved)
* Native support for multiple files (accepts a path to an entire directory
for input)
* Written for D
* Written in D
* Not written in Perl
* Can recognize constructs such as try/catch, function invariants
(in/out/body)
* Only 440 lines of source code
If you've never used delta: this is a tool which attempts to shrink files
by deleting fragments iteratively, as long as the file satisfies a
user-specified condition (for example, a specific error message when
passed through the compiler).
Usage:
1. Formulate a condition command, which should exit with a status code of
0 when DustMite is on the right track, and anything else otherwise.
Example: dmd test.d 2>&1 | grep -qF "Assertion failed"
2. Place all the files that dustmite is to minimize in a new directory.
3. If you'd like to test your condition command, don't forget to clean up
temporary files afterwards.
4. Run: dustmite path/to/directory test-command
5. After a while, dustmite will finish working and create
path/to/directory.reduced
I've tested it with a self-induced "bug" in std.datetime, it seems to work
great. If you find that it breaks on something, let me know.
https://github.com/CyberShadow/DustMite
--
Best regards,
Vladimir mailto:vladimir at thecybershadow.net
More information about the Digitalmars-d
mailing list