[ 
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

        

Reply via email to