[ 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