[ http://jira.codehaus.org/browse/SUREFIRE-406?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dan Fabulich closed SUREFIRE-406. --------------------------------- Resolution: Duplicate Fix Version/s: (was: 2.x) Oops, filed this again as SUREFIRE-411 > Can't use -Dtest from root in a reactor build > --------------------------------------------- > > Key: SUREFIRE-406 > URL: http://jira.codehaus.org/browse/SUREFIRE-406 > Project: Maven Surefire > Issue Type: Bug > Affects Versions: 2.4 > Reporter: Dan Fabulich > > SUREFIRE-350 suggests that "if test parameter is provided, and no match is > found, an error should occur, not a successful build with 0 tests." That > made sense to me, so I checked in a fix in revision 597952. > However, I discovered that this broke a certain maybe-standard usage: if > you've got a parent aggregator POM and two children "foo" and "bar" running > in a reactor, you used to be able to say -Dtest=BarTest; we'd compile foo and > run no tests in foo, then run BarTest in bar. > This usage very convenient, because you don't have to know that BarTest is in > the bar module; you can just kick off the tests from the root module and run > them in whatever module happens to contain them. You could also run multiple > individual tests separated by commas in multiple projects. > Now, if you try to run that line from the parent, you'll get a build failure > in foo, because BarTest isn't defined in foo. > I can think of a number of different possible options here. > 1) Leave the code as is. Just because it's convenient doesn't mean it's > important and we have to preserve it. > 2) Go back and "unfix" SUREFIRE-350. > Notably, in order to fix SUREFIRE-350, I added a new plugin parameter called > failIfNoTests, which would fail if no tests were run. (It seemed imaginable > that somebody would want to turn that on in a variety of cases, not just in > the -Dtest case.) > If I were to unfix SUREFIRE-350 it'd still be possible to get a build > failure, if you wanted one really badly, by saying "mvn test -Dtest=FooTest > -DfailIfNoTests=true". > It's not pretty, but perhaps it's an acceptable compromise. > 3) Try to add code that detects the reactor case and handles it. I think > it's not that hard to detect whether a given invocation of SurefirePlugin is > running in a reactor (though I don't actually know how off-hand). But how > could I detect the case that this is meant to help, where you accidentally > had a typo? There's no way to detect whether a test got run *at some point* > in the reactor, is there? -- 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