This will work starting with 2.064:

module a;

import std.stdio;

struct ID
{
    string data;
}

@ID("one")
unittest
{
    writeln("1");
}

@ID("two")
unittest
{
    writeln("2");
}

void main()
{
    import std.typetuple;
    alias tests = TypeTuple!( __traits(getUnitTests, a) );

    foreach (test; tests)
    {
        foreach (uda; __traits(getAttributes, test))
        {
            static if (is(typeof(uda) == ID))
            {
                if (uda == ID("two"))
                    test();
            }
        }
    }
}

It will print stuff twice though because I didn't suppress native unittest runner. Didn't actually dwell deep into runtime hooks so don't know what is best way to do it (maybe we need one more enhancement for it)

Reply via email to