Just so I understand, when you say the ITs "won't work for release", do
you mean

1. They will fail the release process

or

2. The current IT coverage is bad

Stephen Connolly wrote:
> sorry that may have come off a tad rude.
> 
> technically I could rewrite the tests without adding the failsafe stuff,
> but that would look hacky and maven should show best practice not hacky
> 
> if you want to release 2.5 before Friday, fine... otherwise I'll do it
> my way
> 
> Sent from my [rhymes with tryPod] ;-)
> 
> On 4 Jan 2010, at 22:21, Stephen Connolly
> <stephen.alan.conno...@gmail.com> wrote:
> 
>> no can do. I need to fix the integration tests... they won't work for
>> release as written... to rewrite them I need failsafe
>>
>> Sent from my [rhymes with tryPod] ;-)
>>
>> On 4 Jan 2010, at 22:13, Dennis Lundberg <denn...@apache.org> wrote:
>>
>>> I'm not familiar enough to with the code bases to judge your proposal.
>>>
>>> What I'd like though is a new step, before the ones you listed, and that
>>> is to release Surefire 2.5 with whatever is in trunk *first*.
>>>
>>> Stephen Connolly wrote:
>>>> OK,
>>>>
>>>> maven-surefire-plugin is well known to everyone
>>>>
>>>> it's lesser-known sister is failsafe-maven-plugin
>>>>
>>>> failsafe was written (by me) to solve some of the issues of running
>>>> integration tests with the maven lifecycle.
>>>>
>>>> the lifecycle has a number of phases
>>>>
>>>> * some crappy phases
>>>> * test
>>>> * some more crappy phases
>>>> * pre-integration-test
>>>> * integration-test
>>>> * post-integration-test
>>>> * verify
>>>> * yet more crappy phases
>>>>
>>>> surefire binds to the test phase, and by default will fail your build
>>>> at the test phase if any of the tests it runs fail.
>>>>
>>>> That is all well and good when running unit tests...
>>>>
>>>> when we want to run integration tests, we usually want to set up some
>>>> environment which we are integrating with, e.g. start a jetty server
>>>> and deploy the current application to that server, or start a database
>>>> server (e.g. derby) and configure the data source, etc
>>>>
>>>> so we use the pre-integration-test phase to do this set-up, and we
>>>> tidy-up in the post-integration-test phase...
>>>>
>>>> when our pre-integration-test stuff is all running in the maven JVM,
>>>> everything is hunky-dory
>>>> (http://www.taytohunkydorys.ie/brands/hunky_dorys.asp). we bind a
>>>> second execution of surefire:test to the integration-test phase and
>>>> when/if the tests fail, the JVM gets killed and our integration test
>>>> environment gets destroyed...
>>>>
>>>> however, if our pre-integration-test stuff affects external processes,
>>>> we are stuck because we have no way to tidy-up in the
>>>> post-integration-test phase (BTW, IMHO nobody should ever run "mvn
>>>> integration-test". 1. it's too long to type, and 2, you reallly want
>>>> to run "mvn verify" as that will give the post-integration-test phase
>>>> a chance to run)
>>>>
>>>> failsafe solves the issue by decoupling failing the build from running
>>>> the tests, failsafe:integration-test never fails the build, that is
>>>> left up to failsafe:verify, and thus (as long as you never invoke a
>>>> phase in the range [pre-integration-test,post-integration-test]) your
>>>> tidy-up plugin configuration will always run.
>>>>
>>>> So, as part of rolling the 2.5 release of surefire, I was looking into
>>>> merging the two plugins...
>>>>
>>>> My initial idea was to just move the mojo's into m-surefire-p as is,
>>>> thus m-s-p would have three mojos: test, integration-test and verify
>>>>
>>>> However, there are advantages to keeping them as separate plugins:
>>>>
>>>> * Use case 1: Ignore Unit Test Failures and run the integration tests
>>>> (I know Bob has broken the unit tests for that new feature he is
>>>> writing, but I want to check I have not created a regression in the
>>>> stuff I'm working on) - the verify mojo parses the xml result files to
>>>> see if any tests failed.  If we use the same plugin, we should really
>>>> use the same directory (e.g. surefire-reports) It does not make sense
>>>> for surefire to have one goal report to surefire-reports and the other
>>>> report to failsafe-reports... and it we change the directory for the
>>>> unit tests to e.g. test-reports that could have a regression imact.
>>>>
>>>> * Use case 2: Separate Reporting (as separate plugins, they generate
>>>> reports in separate directories as before)
>>>>
>>>> * Use case 3: Separate default binding... consider the case where
>>>> pluginManagement specifies executions, with separate plugins I can
>>>> safely define /project/build/plugins/plugin/m-surefire-p and not drag
>>>> in the default execution of failsafe:integration-test and
>>>> failsafe-verify
>>>>
>>>> So my proposal is as follows:
>>>>
>>>> 1. Move failsafe-maven-plugin to
>>>> https://svn.apache.org/repos/asf/maven/surefire/trunk/maven-failsafe-plugin
>>>>
>>>>
>>>> 2. Refactor maven-surefire-plugin taking the code that is common with
>>>> failsafe into common module
>>>>
>>>> 3. Refactor maven-failsafe-plugin to use the common module.
>>>>
>>>> In pseudo code SurefirePlugin would be reduced to
>>>>
>>>> execute() {
>>>> common.runTests();
>>>> }
>>>>
>>>> Failsafe's integration-test mojo would become
>>>>
>>>> execute() {
>>>> try {
>>>>   common.runTests();
>>>> } catch (Throwable t) {
>>>>   // ignore
>>>> }
>>>> }
>>>>
>>>> 4. Refactor maven-surefire-reporting-plugin to move the xml results
>>>> parser into the common module
>>>>
>>>> 5. Refactor Failsafe's verify mojo to use the xml results parse from
>>>> the common module.
>>>>
>>>> OK, so that's a tad long, but what do people think?
>>>>
>>>> Any objections?
>>>>
>>>> -Stephen
>>>>
>>>> Lazy consensus, 72hrs, i.e. you have until 18:00GMT on 7th Jan 2010 to
>>>> -1 this (after which you'll have to -1 the commit if you feel strongly
>>>> against the direction I'm suggesting)
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
>>>> For additional commands, e-mail: dev-h...@maven.apache.org
>>>>
>>>>
>>>
>>>
>>> -- 
>>> Dennis Lundberg
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
>>> For additional commands, e-mail: dev-h...@maven.apache.org
>>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org
> 
> 


-- 
Dennis Lundberg

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

Reply via email to