DustMite, a D test case minimization tool
Robert Clipsham
robert at octarineparrot.com
Mon May 23 12:48:52 PDT 2011
On 20/05/2011 23:01, Vladimir Panteleev wrote:
> 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
>
Just attempted to use it, I get the following when trying to compile:
$ dmd -O -release -inline dustmite.d dsplit.d
dsplit.d(245): Error: undefined identifier module dsplit.replaceInPlace
dsplit.d(253): Error: undefined identifier module dsplit.replaceInPlace
dsplit.d(259): Error: undefined identifier module dsplit.replaceInPlace
With git revision 0699cca148a59beb4d4def44bea0e7b49f558d58.
--
Robert
http://octarineparrot.com/
More information about the Digitalmars-d
mailing list