You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Janmejay Singh (JIRA)" <ji...@codehaus.org> on 2011/04/20 10:49:24 UTC

[jira] Commented: (SUREFIRE-726) Test list preprocessor support for tests to be run

    [ http://jira.codehaus.org/browse/SUREFIRE-726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=264155#action_264155 ] 

Janmejay Singh commented on SUREFIRE-726:
-----------------------------------------

It can easily be enhanced to allow injection of testPreprocessor declaration via system-property. 

As in, user has a maven plugin that hooks up in the lifecycle before test and adds a system-property(for instance, surefire-test-preprocessor which has value "test.preprocessor.EvenTestOnlyPreprocessor[org.apache.maven.plugins.surefire:preprocessor-impl:1.0-SNAPSHOT]") and the AbstractSurefireMojo#testPreprocessor can first check for configuration and if no config found, can check for the system-property and use first one found.

This will also make it more flexible, because user can choose the strategy before invoking the build(to choose a different implementation all the user has to do is -Dsurefire-test-preprocessor=test.preprocessor.EvenTestOnlyPreprocessor[org.apache.maven.plugins.surefire:preprocessor-impl:1.0-SNAPSHOT]).


> Test list preprocessor support for tests to be run
> --------------------------------------------------
>
>                 Key: SUREFIRE-726
>                 URL: http://jira.codehaus.org/browse/SUREFIRE-726
>             Project: Maven Surefire
>          Issue Type: New Feature
>    Affects Versions: 2.8.2
>            Reporter: Janmejay Singh
>         Attachments: 0001-Adds-test-list-preprocessor-support-which-loads-an-o.patch, 0002-Integration-test-for-preprocessor.-2-modules-one-pro.patch
>
>
> This exposes an interface(named TestListPreprocessor, which has a method named preprocessTestClasses) that can be implemented by a user and injected into surefire plugin configuration to have it used for preprocessing list of tests to be run. Given the original test list, user's preprocessing algorithm can choose to prune or reorder the list and return it back from TestListPreprocessor#preprocessTestClasses, which is then used as the list of tests to be executed.
> The patches attached expose a configuration element named "testPreprocessor" the default value of which is "none". User can choose to set it to a value matching the format "<fully-qualified-class-name>[<group-id>:<artifact-id>:<version>]" and have the class loaded and called with list of tests to be run. The list of tests returned by the call is then considered for execution.
> Patch description:
> The feature is done in 2 patches. Description follows:
> 0001-Adds-test-list-preprocessor-support-which-loads-an-o.patch
> This patch actually adds the feature and unit tests. It adds the interface, an abstraction that encapsulates aforementioned configuration, booter serialization/deserialization, directory-scanner changes etc. The changes have effect in both forked and in-process execution mode.
> 0002-Integration-test-for-preprocessor.-2-modules-one-pro.patch
> This patch adds an integration test for preprocessor feature. The integration test uses a 2 module setup, where the first module implements the TestListPreprocessor interface which selects only even indexed test classes from the list passed in. The second module(which depends on first) uses the artifact from first and uses the following configuration:
> --------------------
> <configuration>
>   <testPreprocessor>test.preprocessor.EvenTestOnlyPreprocessor[org.apache.maven.plugins.surefire:preprocessor-impl:1.0-SNAPSHOT]</testPreprocessor>
> </configuration>
> --------------------
> The test then asserts that only 2(0th and 2nd) of the 4 test classes the second module has are executed.
> The patches are created on a git-svn clone using format-patch, please use 'patch -p1 < 0001-Adds...'(while in the trunk directory) to apply the patches on svn repository. If using git-svn, git-am can be directly be invoked.
> The patches are done over http://svn.apache.org/repos/asf/maven/surefire/trunk@1091357 (trunk HEAD) so should apply cleanly on any recent enough revision.
> ===============================================================================
> Context:
> http://stackoverflow.com/questions/5124823/reducing-the-build-time-hudson
> http://code.google.com/p/tlb/issues/detail?id=1
> http://test-load-balancer.github.com

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira