Not that I want to make the test framework any more complex than it
is, but since this functionality is already there I will take a moment
to explain it.

Every annotation marked with @TestGroup has a "name" (lowercased name
of the class by default) and a system property that controls its
enabled/ disabled state. By default the system property becomes the
name of the annotation prefixed with "tests.", so for:

  @TestGroup(enabled = false)
  public @interface AwaitsFix {
    /** Point to JIRA entry. */
    public String bugUrl();
  }

the name is 'awaitsfix' and the system property would be "tests.awaitsfix".

Up until now you could enable or disable tests annotated with each
test group by setting the corresponding property to on or off. A test
was executed if all of its test groups were enabled or
assumption-ignored if any of them was disabled.

>From now on (trunk) you can also pick all tests annotated with a
boolean combination of test groups:

ant test-core -Dtests.filter="@foo and @bar"
ant test-core -Dtests.filter="@foo and not @bar"
ant test-core -Dtests.filter="@foo or @bar"
ant test-core -Dtests.filter="@foo or @bar"

Such a filter ignores system properties for each group; if you still
want to take the "default" state of each test into account (resulting
from resolving system properties) you can use the 'default' keyword.
For example:

ant test-core -Dtests.filter="default and not(@nightly or @slow)"

will run all the tests that would run normally (taking into account
your own exclusion rules, for example tests.slow=false) but also
exclude any @Nightly or @Slow tests.

You get the idea :)

Dawid

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to