Hi Paul,

Can I see a branch on github ?

Can you use Easymock instead of Mockito (as we use Easymock in other part of Karaf) ?

The @Parameters you mentioned were used in previous versions to generate the features and cfg file.

Regards
JB

On 04/18/2017 11:44 PM, Paul Campbell wrote:

Hi,

Here is a progress update on my work with AssemblyMojo.

I've been writing some exploratory tests to lock down the current behaviour of
the AssemblyMojo.

1/ Split AssemblyMojo into a parameter/configuration class and a behaviour class

I have extracted the doExecute() method and supporting methods out of
AssemblyMojo and into AssemblyMojoExec. (That probably needs a better name:
AssemblyService?). This left all the @Parameter fields in AssemblyMojo, which is
now passed as a single parameter object: AssemblyMojoExec.doExecute(AssemblyMojo
mojo). This gives a clean separation between capturing 39 @Parameters and
performing the actual assembly.

2/ Upgraded Maven in the tooling package to 3.5.0

This allows simplification of accessing the Maven API and avoids the need to use
reflection. Upgrading the rest of karaf is outside the current scope.

3/ Added jacoco for code coverage, without any minimum coverage requirements

Jacoco is licensed under Eclipse Public License Version 1.0.

4/ Added mockito for test support

Mockito is licensed under M.I.T. License.

5/ Added hamcrest for test support

Hamcrest is licensed under BSD License.

6/ Write tests for AssemblyMojoExec covering 86% of branches.

The remaining 14% of branches are in unreachable File IO or Reflection
exceptions and in switch statements.

7/ Identify unused @Parameters

The following @Parameter fields in AssemblyMojo are unused and could be removed
without affecting the tests.

* featuresCfgFile
* startupPropertiesFile​​​​​​​
* systemDirectory
* defaultStartLevel
* blacklistedRepositories
* blacklistedFeatures
* startupBundles
* bootBundles
* installedBundles
* blacklistedBundles
* blacklistedProfiles

Is there any reason to keep any of these @Parameters? They are configuration
items used by other Mojos. AssemblyMojo should really only ask for the
@Parameters that it uses.

---

This current state is
in https://github.com/kemitix/karaf/tree/assembly-mojo-test-coverage

Going on from here, I will be working in the assembly-mojo-refactoring branch to
clean up and simplify the mojo, using the AssemblyMojoExecTest to ensure that
behaviour remains consistent.

Feedback welcome.

--
Paul [W] Campbell

--------------------------------------------------------------------------------
If you reply to this email, your message will be added to the discussion below:
http://karaf.922171.n3.nabble.com/Unit-tests-and-refactoring-karaf-maven-plugin-AssemblyMojo-tp4050098p4050113.html

To unsubscribe from Unit tests and refactoring - karaf-maven-plugin -
AssemblyMojo, click here
<http://karaf.922171.n3.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=4050098&code=cGNhbXBiZWxsQGtlbWl0aXgubmV0fDQwNTAwOTh8LTE0MTk3OTA3NDA=>.

NAML
<http://karaf.922171.n3.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>


--
Jean-Baptiste Onofré
[email protected]
http://blog.nanthrax.net
Talend - http://www.talend.com

Reply via email to