11package org .utplsql .maven .plugin ;
22
3- import java .io .File ;
4- import java .sql .Connection ;
5- import java .sql .SQLException ;
6- import java .util .ArrayList ;
7- import java .util .LinkedHashSet ;
8- import java .util .List ;
9- import java .util .Set ;
10-
3+ import oracle .jdbc .pool .OracleDataSource ;
114import org .apache .commons .lang3 .StringUtils ;
125import org .apache .maven .model .Resource ;
136import org .apache .maven .plugin .AbstractMojo ;
3427import org .utplsql .maven .plugin .model .ReporterParameter ;
3528import org .utplsql .maven .plugin .reporter .ReporterWriter ;
3629
37- import oracle .jdbc .pool .OracleDataSource ;
30+ import java .io .File ;
31+ import java .sql .Connection ;
32+ import java .sql .SQLException ;
33+ import java .util .ArrayList ;
34+ import java .util .LinkedHashSet ;
35+ import java .util .List ;
36+ import java .util .Set ;
3837
3938/**
4039 * This class expose the {@link TestRunner} interface to Maven.
41- *
40+ *
4241 * @author Alberto Hernández
42+ * @author Simon Martinelli
4343 */
4444@ Mojo (name = "test" , defaultPhase = LifecyclePhase .TEST )
4545public class UtPLSQLMojo extends AbstractMojo {
@@ -116,7 +116,7 @@ public class UtPLSQLMojo extends AbstractMojo {
116116 private List <CustomTypeMapping > testsCustomTypeMapping ;
117117
118118 @ Parameter
119- private Set <String > tags = new LinkedHashSet <>();
119+ private final Set <String > tags = new LinkedHashSet <>();
120120
121121 @ Parameter
122122 private boolean randomTestOrder ;
@@ -130,74 +130,80 @@ public class UtPLSQLMojo extends AbstractMojo {
130130 @ Parameter (defaultValue = "${maven.test.failure.ignore}" )
131131 protected boolean ignoreFailure ;
132132
133+ @ Parameter (defaultValue = "${skipUtplsqlTests}" )
134+ protected boolean skipUtplsqlTests ;
135+
133136 // Color in the console, bases on Maven logging configuration.
134- private boolean colorConsole = MessageUtils .isColorEnabled ();
137+ private final boolean colorConsole = MessageUtils .isColorEnabled ();
135138
136139 private ReporterWriter reporterWriter ;
137140
138- private DatabaseInformation databaseInformation = new DefaultDatabaseInformation ();
141+ private final DatabaseInformation databaseInformation = new DefaultDatabaseInformation ();
139142
140143 /**
141144 * Executes the plugin.
142145 */
143146 @ Override
144147 public void execute () throws MojoExecutionException {
148+ if (skipUtplsqlTests ) {
149+ getLog ().debug ("utPLSQLTests are skipped." );
150+ } else {
151+ getLog ().debug ("Java Api Version = " + JavaApiVersionInfo .getVersion ());
152+ loadConfFromEnvironment ();
145153
146- getLog ().debug ("Java Api Version = " + JavaApiVersionInfo .getVersion ());
147- loadConfFromEnvironment ();
148-
149- Connection connection = null ;
150- try {
151- FileMapperOptions sourceMappingOptions = buildSourcesOptions ();
152- FileMapperOptions testMappingOptions = buildTestsOptions ();
153- OracleDataSource ds = new OracleDataSource ();
154- ds .setURL (url );
155- ds .setUser (user );
156- ds .setPassword (password );
157- connection = ds .getConnection ();
158-
159- Version utlVersion = this .databaseInformation .getUtPlsqlFrameworkVersion (connection );
160- getLog ().info ("utPLSQL Version = " + utlVersion );
161-
162- List <Reporter > reporterList = initReporters (connection , utlVersion , ReporterFactory .createEmpty ());
163-
164- logParameters (sourceMappingOptions , testMappingOptions , reporterList );
165-
166- TestRunner runner = new TestRunner ()
167- .addPathList (paths )
168- .addReporterList (reporterList )
169- .sourceMappingOptions (sourceMappingOptions )
170- .testMappingOptions (testMappingOptions )
171- .skipCompatibilityCheck (skipCompatibilityCheck )
172- .colorConsole (colorConsole )
173- .addTags (tags )
174- .randomTestOrder (randomTestOrder )
175- .randomTestOrderSeed (randomTestOrderSeed )
176- .failOnErrors (!ignoreFailure );
177-
178- if (StringUtils .isNotBlank (excludeObject )) {
179- runner .excludeObject (excludeObject );
180- }
181- if (StringUtils .isNotBlank (includeObject )) {
182- runner .includeObject (includeObject );
183- }
154+ Connection connection = null ;
155+ try {
156+ FileMapperOptions sourceMappingOptions = buildSourcesOptions ();
157+ FileMapperOptions testMappingOptions = buildTestsOptions ();
158+ OracleDataSource ds = new OracleDataSource ();
159+ ds .setURL (url );
160+ ds .setUser (user );
161+ ds .setPassword (password );
162+ connection = ds .getConnection ();
163+
164+ Version utlVersion = this .databaseInformation .getUtPlsqlFrameworkVersion (connection );
165+ getLog ().info ("utPLSQL Version = " + utlVersion );
166+
167+ List <Reporter > reporterList = initReporters (connection , utlVersion , ReporterFactory .createEmpty ());
168+
169+ logParameters (sourceMappingOptions , testMappingOptions , reporterList );
170+
171+ TestRunner runner = new TestRunner ()
172+ .addPathList (paths )
173+ .addReporterList (reporterList )
174+ .sourceMappingOptions (sourceMappingOptions )
175+ .testMappingOptions (testMappingOptions )
176+ .skipCompatibilityCheck (skipCompatibilityCheck )
177+ .colorConsole (colorConsole )
178+ .addTags (tags )
179+ .randomTestOrder (randomTestOrder )
180+ .randomTestOrderSeed (randomTestOrderSeed )
181+ .failOnErrors (!ignoreFailure );
182+
183+ if (StringUtils .isNotBlank (excludeObject )) {
184+ runner .excludeObject (excludeObject );
185+ }
186+ if (StringUtils .isNotBlank (includeObject )) {
187+ runner .includeObject (includeObject );
188+ }
184189
185- runner .run (connection );
190+ runner .run (connection );
186191
187- } catch (SomeTestsFailedException e ) {
188- if (!this .ignoreFailure ) {
192+ } catch (SomeTestsFailedException e ) {
193+ if (!this .ignoreFailure ) {
194+ throw new MojoExecutionException (e .getMessage (), e );
195+ }
196+ } catch (SQLException e ) {
189197 throw new MojoExecutionException (e .getMessage (), e );
190- }
191- } catch ( SQLException e ) {
192- throw new MojoExecutionException ( e . getMessage (), e );
193- } finally {
194- try {
195- if ( null != connection ) {
196- reporterWriter . writeReporters ( connection );
197- connection . close ( );
198+ } finally {
199+ try {
200+ if ( null != connection ) {
201+ reporterWriter . writeReporters ( connection );
202+ connection . close ();
203+ }
204+ } catch ( Exception e ) {
205+ getLog (). error ( e . getMessage (), e );
198206 }
199- } catch (Exception e ) {
200- getLog ().error (e .getMessage (), e );
201207 }
202208 }
203209 }
@@ -206,11 +212,9 @@ private void loadConfFromEnvironment() {
206212 if (StringUtils .isEmpty (url )) {
207213 url = System .getProperty ("dbUrl" );
208214 }
209-
210215 if (StringUtils .isEmpty (user )) {
211216 user = System .getProperty ("dbUser" );
212217 }
213-
214218 if (StringUtils .isEmpty (password )) {
215219 password = System .getProperty ("dbPass" );
216220 }
@@ -223,7 +227,7 @@ private FileMapperOptions buildSourcesOptions() throws MojoExecutionException {
223227 if (defaultSourceDirectory .exists ()) {
224228 sources .add (PluginDefault .buildDefaultSource ());
225229 } else {
226- return new FileMapperOptions (new ArrayList <String >());
230+ return new FileMapperOptions (new ArrayList <>());
227231 }
228232 }
229233
@@ -252,7 +256,7 @@ private FileMapperOptions buildSourcesOptions() throws MojoExecutionException {
252256 }
253257
254258 if (sourcesCustomTypeMapping != null && !sourcesCustomTypeMapping .isEmpty ()) {
255- fileMapperOptions .setTypeMappings (new ArrayList <KeyValuePair >());
259+ fileMapperOptions .setTypeMappings (new ArrayList <>());
256260 for (CustomTypeMapping typeMapping : sourcesCustomTypeMapping ) {
257261 fileMapperOptions .getTypeMappings ()
258262 .add (new KeyValuePair (typeMapping .getCustomMapping (), typeMapping .getType ()));
@@ -274,7 +278,7 @@ private FileMapperOptions buildTestsOptions() throws MojoExecutionException {
274278 if (defaultTestDirectory .exists ()) {
275279 tests .add (PluginDefault .buildDefaultTest ());
276280 } else {
277- return new FileMapperOptions (new ArrayList <String >());
281+ return new FileMapperOptions (new ArrayList <>());
278282 }
279283 }
280284
@@ -303,7 +307,7 @@ private FileMapperOptions buildTestsOptions() throws MojoExecutionException {
303307 }
304308
305309 if (testsCustomTypeMapping != null && !testsCustomTypeMapping .isEmpty ()) {
306- fileMapperOptions .setTypeMappings (new ArrayList <KeyValuePair >());
310+ fileMapperOptions .setTypeMappings (new ArrayList <>());
307311 for (CustomTypeMapping typeMapping : testsCustomTypeMapping ) {
308312 fileMapperOptions .getTypeMappings ()
309313 .add (new KeyValuePair (typeMapping .getCustomMapping (), typeMapping .getType ()));
@@ -336,8 +340,7 @@ private List<Reporter> initReporters(Connection connection, Version utlVersion,
336340 reporter .init (connection );
337341 reporterList .add (reporter );
338342
339- // Turns the console output on by default if both file and console output are
340- // empty.
343+ // Turns the console output on by default if both file and console output are empty.
341344 if (!reporterParameter .isFileOutput () && null == reporterParameter .getConsoleOutput ()) {
342345 reporterParameter .setConsoleOutput (true );
343346 }
@@ -352,7 +355,7 @@ private List<Reporter> initReporters(Connection connection, Version utlVersion,
352355 }
353356
354357 private void logParameters (FileMapperOptions sourceMappingOptions , FileMapperOptions testMappingOptions ,
355- List <Reporter > reporterList ) {
358+ List <Reporter > reporterList ) {
356359 Log log = getLog ();
357360 log .info ("Invoking TestRunner with: " + targetDir );
358361
@@ -361,11 +364,14 @@ private void logParameters(FileMapperOptions sourceMappingOptions, FileMapperOpt
361364 }
362365
363366 log .debug ("Invoking TestRunner with: " );
367+
364368 log .debug ("reporters=" );
365369 reporterList .forEach ((Reporter r ) -> log .debug (r .getTypeName ()));
370+
366371 log .debug ("sources=" );
367372 sourceMappingOptions .getFilePaths ().forEach (log ::debug );
373+
368374 log .debug ("tests=" );
369375 testMappingOptions .getFilePaths ().forEach (log ::debug );
370376 }
371- }
377+ }
0 commit comments