You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2019/09/05 07:22:26 UTC
[maven-invoker-plugin] 01/01: [MINVOKER-174] add a property to
configure build order
This is an automated email from the ASF dual-hosted git repository.
olamy pushed a commit to branch MINVOKER-174_build_job_order
in repository https://gitbox.apache.org/repos/asf/maven-invoker-plugin.git
commit b48c8e1189fdb1436e27ccfea0ec75ca50968970
Author: olivier lamy <ol...@apache.org>
AuthorDate: Thu Sep 5 17:21:58 2019 +1000
[MINVOKER-174] add a property to configure build order
Signed-off-by: olivier lamy <ol...@apache.org>
---
src/it/project-setup/pom.xml | 1 +
.../src/it/project3/invoker.properties | 18 +++
.../src/it/project6/invoker.properties | 18 +++
src/it/project-setup/{ => src/it/project6}/pom.xml | 41 +------
src/it/project-setup/verify.bsh | 8 ++
.../maven/plugins/invoker/AbstractInvokerMojo.java | 126 ++++++++++-----------
.../maven/plugins/invoker/InvokerProperties.java | 16 ++-
.../maven/plugins/invoker/InvokerSession.java | 5 +-
src/main/mdo/invocation.mdo | 9 +-
.../maven/plugins/invoker/InvokerMojoTest.java | 30 ++++-
10 files changed, 152 insertions(+), 120 deletions(-)
diff --git a/src/it/project-setup/pom.xml b/src/it/project-setup/pom.xml
index b68981b..0922bba 100644
--- a/src/it/project-setup/pom.xml
+++ b/src/it/project-setup/pom.xml
@@ -43,6 +43,7 @@ under the License.
<cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
<setupIncludes>
<setupInclude>project3</setupInclude>
+ <setupInclude>project6</setupInclude>
</setupIncludes>
<pomIncludes>
<pomInclude>*/pom.xml</pomInclude>
diff --git a/src/it/project-setup/src/it/project3/invoker.properties b/src/it/project-setup/src/it/project3/invoker.properties
new file mode 100644
index 0000000..5cf17e6
--- /dev/null
+++ b/src/it/project-setup/src/it/project3/invoker.properties
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+invoker.ordinal=1
diff --git a/src/it/project-setup/src/it/project6/invoker.properties b/src/it/project-setup/src/it/project6/invoker.properties
new file mode 100644
index 0000000..081215b
--- /dev/null
+++ b/src/it/project-setup/src/it/project6/invoker.properties
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+invoker.ordinal=2
diff --git a/src/it/project-setup/pom.xml b/src/it/project-setup/src/it/project6/pom.xml
similarity index 52%
copy from src/it/project-setup/pom.xml
copy to src/it/project-setup/src/it/project6/pom.xml
index b68981b..4be5874 100644
--- a/src/it/project-setup/pom.xml
+++ b/src/it/project-setup/src/it/project6/pom.xml
@@ -21,47 +21,12 @@ under the License.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
-
- <groupId>org.apache.maven.plugins.invoker</groupId>
- <artifactId>project-setup</artifactId>
- <version>1.0-SNAPSHOT</version>
+ <groupId>test</groupId>
+ <artifactId>project6</artifactId>
+ <version>0.1-SNAPSHOT</version>
<packaging>pom</packaging>
- <description>Test to check that setup projects are run ahead of the other ones.</description>
-
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-invoker-plugin</artifactId>
- <version>@pom.version@</version>
- <configuration>
- <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
- <setupIncludes>
- <setupInclude>project3</setupInclude>
- </setupIncludes>
- <pomIncludes>
- <pomInclude>*/pom.xml</pomInclude>
- </pomIncludes>
- <goals>
- <goal>validate</goal>
- </goals>
- </configuration>
- <executions>
- <execution>
- <id>integration-test</id>
- <phase>initialize</phase>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-
</project>
diff --git a/src/it/project-setup/verify.bsh b/src/it/project-setup/verify.bsh
index ff4a005..59a985d 100644
--- a/src/it/project-setup/verify.bsh
+++ b/src/it/project-setup/verify.bsh
@@ -51,6 +51,14 @@ try
return false;
}
+ int indexProject3 = log.indexOf( "Building: project3" );
+ int indexProject6 = log.indexOf( "Building: project6" );
+ if(indexProject3 > indexProject6)
+ {
+ System.out.println( "FAILED! project3 should be build before project6" );
+ return false;
+ }
+
File reportFile = new File( basedir, "target/invoker-reports/BUILD-project1.xml" );
if ( !reportFile.exists() )
{
diff --git a/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java b/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java
index 4197c86..da8d390 100644
--- a/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java
+++ b/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java
@@ -93,6 +93,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
@@ -566,6 +567,12 @@ public abstract class AbstractInvokerMojo
* # Path to an alternate <code>settings.xml</code> to use for Maven invocation with this IT.
* # Since plugin version 3.0.1
* invoker.settingsFile = ../
+ *
+ * # An integer value to control run order of projects. sorted in the ascending order of the ordinal.
+ * In other words, the BuildJobs with the slowest numbers will be executed first
+ * # Since plugin version 3.2.1
+ * invoker.ordinal = 3
+ * invoker.ordinal = 1
* </pre>
*
* @since 1.2
@@ -691,7 +698,7 @@ public abstract class AbstractInvokerMojo
setupReportsFolder();
}
- BuildJob[] buildJobs;
+ List<BuildJob> buildJobs;
if ( pom == null )
{
try
@@ -716,10 +723,10 @@ public abstract class AbstractInvokerMojo
+ "pom File parameter. Reason: " + e.getMessage(), e );
}
- buildJobs = new BuildJob[] { new BuildJob( pom.getName(), BuildJob.Type.NORMAL ) };
+ buildJobs = Collections.singletonList( new BuildJob( pom.getName(), BuildJob.Type.NORMAL ) );
}
- if ( ( buildJobs == null ) || ( buildJobs.length < 1 ) )
+ if ( buildJobs.isEmpty() )
{
doFailIfNoProjects();
@@ -754,7 +761,7 @@ public abstract class AbstractInvokerMojo
}
// First run setup jobs.
- BuildJob[] setupBuildJobs = null;
+ List<BuildJob> setupBuildJobs = null;
try
{
setupBuildJobs = getSetupBuildJobsFromFolders();
@@ -765,20 +772,20 @@ public abstract class AbstractInvokerMojo
// TODO: Check shouldn't we fail in case of problems?
}
- if ( ( setupBuildJobs != null ) && ( setupBuildJobs.length > 0 ) )
+ if ( !setupBuildJobs.isEmpty() )
{
// Run setup jobs in single thread
// mode.
//
// Some Idea about ordering?
- getLog().info( "Running " + setupBuildJobs.length + " setup job"
- + ( ( setupBuildJobs.length < 2 ) ? "" : "s" ) + ":" );
+ getLog().info( "Running " + setupBuildJobs.size() + " setup job"
+ + ( ( setupBuildJobs.size() < 2 ) ? "" : "s" ) + ":" );
runBuilds( projectsDir, setupBuildJobs, 1 );
getLog().info( "Setup done." );
}
// Afterwards run all other jobs.
- BuildJob[] nonSetupBuildJobs = getNonSetupJobs( buildJobs );
+ List<BuildJob> nonSetupBuildJobs = getNonSetupJobs( buildJobs );
// We will run the non setup jobs with the configured
// parallelThreads number.
runBuilds( projectsDir, nonSetupBuildJobs, parallelThreads );
@@ -816,7 +823,7 @@ public abstract class AbstractInvokerMojo
}
}
- private BuildJob[] getNonSetupJobs( BuildJob[] buildJobs )
+ private List<BuildJob> getNonSetupJobs( List<BuildJob> buildJobs )
{
List<BuildJob> result = new LinkedList<>();
for ( BuildJob buildJob : buildJobs )
@@ -826,8 +833,7 @@ public abstract class AbstractInvokerMojo
result.add( buildJob );
}
}
- BuildJob[] buildNonSetupJobs = result.toArray( new BuildJob[result.size()] );
- return buildNonSetupJobs;
+ return result;
}
private void handleScriptRunnerWithScriptClassPath()
@@ -858,7 +864,7 @@ public abstract class AbstractInvokerMojo
scriptRunner.setClassPath( scriptClassPath );
}
- private void writeSummaryFile( BuildJob[] buildJobs )
+ private void writeSummaryFile( List<BuildJob> buildJobs )
throws MojoExecutionException
{
@@ -1216,7 +1222,7 @@ public abstract class AbstractInvokerMojo
* @param buildJobs The build jobs to run must not be <code>null</code> nor contain <code>null</code> elements.
* @throws org.apache.maven.plugin.MojoExecutionException If any build could not be launched.
*/
- private void runBuilds( final File projectsDir, BuildJob[] buildJobs, int runWithParallelThreads )
+ private void runBuilds( final File projectsDir, List<BuildJob> buildJobs, int runWithParallelThreads )
throws MojoExecutionException
{
if ( !localRepositoryPath.exists() )
@@ -2381,42 +2387,53 @@ public abstract class AbstractInvokerMojo
* @throws IOException
* @see {@link #setupIncludes}
*/
- private BuildJob[] getSetupBuildJobsFromFolders()
- throws IOException
+ private List<BuildJob> getSetupBuildJobsFromFolders()
+ throws IOException, MojoExecutionException
{
List<String> excludes = calculateExcludes();
- BuildJob[] setupPoms = scanProjectsDirectory( setupIncludes, excludes, BuildJob.Type.SETUP );
+ List<BuildJob> setupPoms = scanProjectsDirectory( setupIncludes, excludes, BuildJob.Type.SETUP );
if ( getLog().isDebugEnabled() )
{
- getLog().debug( "Setup projects: " + Arrays.asList( setupPoms ) );
+ getLog().debug( "Setup projects: " + setupPoms );
}
return setupPoms;
}
+ private static class OrdinalComparator implements Comparator
+ {
+ private static final OrdinalComparator INSTANCE = new OrdinalComparator();
+
+ @Override
+ public int compare( Object o1, Object o2 )
+ {
+ return Integer.compare( ( ( BuildJob ) o1 ).getOrdinal(), ( ( BuildJob ) o2 ).getOrdinal() );
+ }
+ }
+
/**
* Gets the build jobs that should be processed. Note that the order of the returned build jobs is significant.
*
* @return The build jobs to process, may be empty but never <code>null</code>.
* @throws java.io.IOException If the projects directory could not be scanned.
*/
- BuildJob[] getBuildJobs()
- throws IOException
+ List<BuildJob> getBuildJobs()
+ throws IOException, MojoExecutionException
{
- BuildJob[] buildJobs;
+ List<BuildJob> buildJobs;
if ( invokerTest == null )
{
List<String> excludes = calculateExcludes();
- BuildJob[] setupPoms = scanProjectsDirectory( setupIncludes, excludes, BuildJob.Type.SETUP );
+ List<BuildJob> setupPoms = scanProjectsDirectory( setupIncludes, excludes, BuildJob.Type.SETUP );
if ( getLog().isDebugEnabled() )
{
getLog().debug( "Setup projects: " + Arrays.asList( setupPoms ) );
}
- BuildJob[] normalPoms = scanProjectsDirectory( pomIncludes, excludes, BuildJob.Type.NORMAL );
+ List<BuildJob> normalPoms = scanProjectsDirectory( pomIncludes, excludes, BuildJob.Type.NORMAL );
Map<String, BuildJob> uniquePoms = new LinkedHashMap<>();
for ( BuildJob setupPom : setupPoms )
@@ -2431,7 +2448,7 @@ public abstract class AbstractInvokerMojo
}
}
- buildJobs = uniquePoms.values().toArray( new BuildJob[uniquePoms.size()] );
+ buildJobs = new ArrayList<>( uniquePoms.values() );
}
else
{
@@ -2474,12 +2491,12 @@ public abstract class AbstractInvokerMojo
* @return The build jobs matching the patterns, never <code>null</code>.
* @throws java.io.IOException If the project directory could not be scanned.
*/
- private BuildJob[] scanProjectsDirectory( List<String> includes, List<String> excludes, String type )
- throws IOException
+ private List<BuildJob> scanProjectsDirectory( List<String> includes, List<String> excludes, String type )
+ throws IOException, MojoExecutionException
{
if ( !projectsDirectory.isDirectory() )
{
- return new BuildJob[0];
+ return Collections.emptyList();
}
DirectoryScanner scanner = new DirectoryScanner();
@@ -2516,7 +2533,19 @@ public abstract class AbstractInvokerMojo
}
}
- return matches.values().toArray( new BuildJob[matches.size()] );
+ List<BuildJob> projects = new ArrayList<>( matches.size() );
+
+ // setup ordinal values to have an order here
+ for ( BuildJob buildJob : matches.values() )
+ {
+ InvokerProperties invokerProperties =
+ getInvokerProperties( new File( projectsDirectory, buildJob.getProject() ).getParentFile(),
+ null );
+ buildJob.setOrdinal( invokerProperties.getOrdinal() );
+ projects.add( buildJob );
+ }
+ Collections.sort( projects, OrdinalComparator.INSTANCE );
+ return projects;
}
/**
@@ -2528,7 +2557,7 @@ public abstract class AbstractInvokerMojo
* contain <code>null</code> elements.
* @throws java.io.IOException If any path could not be relativized.
*/
- private void relativizeProjectPaths( BuildJob[] buildJobs )
+ private void relativizeProjectPaths( List<BuildJob> buildJobs )
throws IOException
{
String projectsDirPath = projectsDirectory.getCanonicalPath();
@@ -2778,47 +2807,6 @@ public abstract class AbstractInvokerMojo
props = new Properties();
}
-// Path projectsSourceFolder = this.projectsDirectory.toPath();
-// Path projectsTargetFolder;
-// if ( cloneProjectsTo != null )
-// {
-// projectsTargetFolder = cloneProjectsTo.toPath();
-// }
-// else
-// {
-// projectsTargetFolder = projectsSourceFolder;
-// }
-//
-// Path projectDir = projectsTargetFolder.relativize( projectDirectory.toPath() );
-//
-// for ( int i = 0; i < projectDir.getNameCount(); i++ )
-// {
-// Path subInvokerProperties;
-// if ( i == 0 )
-// {
-// subInvokerProperties = projectsSourceFolder.resolve( invokerPropertiesFile );
-// }
-// else
-// {
-// subInvokerProperties =
-// projectsSourceFolder.resolve( projectDir.subpath( 0, i ) ).resolve( invokerPropertiesFile );
-// }
-//
-// getLog().debug( "Looking for " + subInvokerProperties );
-//
-// if ( Files.isRegularFile( subInvokerProperties ) )
-// {
-// try ( InputStream in = new FileInputStream( subInvokerProperties.toFile() ) )
-// {
-// props.load( in );
-// }
-// catch ( IOException e )
-// {
-// throw new MojoExecutionException( "Failed to read invoker properties: " + subInvokerProperties );
-// }
-// }
-// }
-
File propertiesFile = new File( projectDirectory, invokerPropertiesFile );
if ( propertiesFile.isFile() )
{
diff --git a/src/main/java/org/apache/maven/plugins/invoker/InvokerProperties.java b/src/main/java/org/apache/maven/plugins/invoker/InvokerProperties.java
index e8ba20e..a3b8f3c 100644
--- a/src/main/java/org/apache/maven/plugins/invoker/InvokerProperties.java
+++ b/src/main/java/org/apache/maven/plugins/invoker/InvokerProperties.java
@@ -54,7 +54,8 @@ class InvokerProperties
SYSTEM_PROPERTIES_FILE( "invoker.systemPropertiesFile" ),
DEBUG( "invoker.debug" ),
SETTINGS_FILE ( "invoker.settingsFile" ),
- TIMEOUT_IN_SECONDS ( "invoker.timeoutInSeconds" );
+ TIMEOUT_IN_SECONDS ( "invoker.timeoutInSeconds" ),
+ ORDINAL ( "invoker.ordinal" );
private final String key;
@@ -137,6 +138,15 @@ class InvokerProperties
}
/**
+ * Get the corresponding ordinal value
+ * @return The ordinal value
+ */
+ public int getOrdinal()
+ {
+ return Integer.parseInt( this.properties.getProperty( "invoker.ordinal", "0" ) );
+ }
+
+ /**
* Gets the specification of JRE versions on which this build job should be run.
*
* @return The specification of JRE versions or an empty string if not set.
@@ -302,14 +312,14 @@ class InvokerProperties
String goals = get( InvocationProperty.GOALS, index );
if ( goals != null )
{
- request.setGoals( new ArrayList<String>( Arrays.asList( StringUtils.split( goals, ", \t\n\r\f" ) ) ) );
+ request.setGoals( new ArrayList<>( Arrays.asList( StringUtils.split( goals, ", \t\n\r\f" ) ) ) );
}
String profiles = get( InvocationProperty.PROFILES, index );
if ( profiles != null )
{
// CHECKSTYLE_OFF: LineLength
- request.setProfiles( new ArrayList<String>( Arrays.asList( StringUtils.split( profiles,
+ request.setProfiles( new ArrayList<>( Arrays.asList( StringUtils.split( profiles,
", \t\n\r\f" ) ) ) );
// CHECKSTYLE_ON: LineLength
}
diff --git a/src/main/java/org/apache/maven/plugins/invoker/InvokerSession.java b/src/main/java/org/apache/maven/plugins/invoker/InvokerSession.java
index 7c11479..43ed9bb 100644
--- a/src/main/java/org/apache/maven/plugins/invoker/InvokerSession.java
+++ b/src/main/java/org/apache/maven/plugins/invoker/InvokerSession.java
@@ -22,7 +22,6 @@ package org.apache.maven.plugins.invoker;
import static org.apache.maven.shared.utils.logging.MessageUtils.buffer;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import org.apache.maven.plugin.MojoFailureException;
@@ -60,9 +59,9 @@ class InvokerSession
*
* @param buildJobs The build jobs to set, must not be <code>null</code>.
*/
- InvokerSession( BuildJob[] buildJobs )
+ InvokerSession( List<BuildJob> buildJobs )
{
- this.buildJobs = new ArrayList<>( Arrays.asList( buildJobs ) );
+ this.buildJobs = new ArrayList<>( buildJobs );
}
/**
diff --git a/src/main/mdo/invocation.mdo b/src/main/mdo/invocation.mdo
index f402423..a019b2d 100644
--- a/src/main/mdo/invocation.mdo
+++ b/src/main/mdo/invocation.mdo
@@ -96,6 +96,13 @@ under the License.
<type>String</type>
<description>The type of the build job.</description>
</field>
+ <field xml.attribute="true">
+ <name>ordinal</name>
+ <version>1.0.0</version>
+ <required>false</required>
+ <type>int</type>
+ <description>BuildJobs will be sorted in the ascending order of the ordinal. In other words, the BuildJobs with the slowest numbers will be executed first</description>
+ </field>
</fields>
<codeSegments>
<codeSegment>
@@ -209,4 +216,4 @@ under the License.
</codeSegments>
</class>
</classes>
-</model>
\ No newline at end of file
+</model>
diff --git a/src/test/java/org/apache/maven/plugins/invoker/InvokerMojoTest.java b/src/test/java/org/apache/maven/plugins/invoker/InvokerMojoTest.java
index b58234c..5d51c40 100644
--- a/src/test/java/org/apache/maven/plugins/invoker/InvokerMojoTest.java
+++ b/src/test/java/org/apache/maven/plugins/invoker/InvokerMojoTest.java
@@ -25,6 +25,8 @@ import java.util.List;
import org.apache.maven.plugin.testing.AbstractMojoTestCase;
import org.apache.maven.plugins.invoker.model.BuildJob;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.settings.Settings;
/**
* @author Olivier Lamy
@@ -34,6 +36,13 @@ public class InvokerMojoTest
extends AbstractMojoTestCase
{
+ private MavenProject getMavenProject()
+ {
+ MavenProject mavenProject = new MavenProject();
+ mavenProject.setFile(new File("target/foo.txt"));
+ return mavenProject;
+ }
+
public void testSingleInvokerTest()
throws Exception
{
@@ -42,9 +51,12 @@ public class InvokerMojoTest
List<String> goals = invokerMojo.getGoals( new File( dirPath ) );
assertEquals( 1, goals.size() );
setVariableValueToObject( invokerMojo, "projectsDirectory", new File( dirPath ) );
+ setVariableValueToObject( invokerMojo, "invokerPropertiesFile", "invoker.properties");
+ setVariableValueToObject( invokerMojo, "project", getMavenProject() );
setVariableValueToObject( invokerMojo, "invokerTest", "*dummy*" );
- BuildJob[] poms = invokerMojo.getBuildJobs();
- assertEquals( 1, poms.length );
+ setVariableValueToObject( invokerMojo, "settings", new Settings() );
+ List<BuildJob> poms = invokerMojo.getBuildJobs();
+ assertEquals( 1, poms.size() );
}
public void testMultiInvokerTest()
@@ -55,9 +67,12 @@ public class InvokerMojoTest
List<String> goals = invokerMojo.getGoals( new File( dirPath ) );
assertEquals( 1, goals.size() );
setVariableValueToObject( invokerMojo, "projectsDirectory", new File( dirPath ) );
+ setVariableValueToObject( invokerMojo, "invokerPropertiesFile", "invoker.properties");
+ setVariableValueToObject( invokerMojo, "project", getMavenProject() );
setVariableValueToObject( invokerMojo, "invokerTest", "*dummy*,*terpolatio*" );
- BuildJob[] poms = invokerMojo.getBuildJobs();
- assertEquals( 2, poms.length );
+ setVariableValueToObject( invokerMojo, "settings", new Settings() );
+ List<BuildJob> poms = invokerMojo.getBuildJobs();
+ assertEquals( 2, poms.size() );
}
public void testFullPatternInvokerTest()
@@ -68,9 +83,12 @@ public class InvokerMojoTest
List<String> goals = invokerMojo.getGoals( new File( dirPath ) );
assertEquals( 1, goals.size() );
setVariableValueToObject( invokerMojo, "projectsDirectory", new File( dirPath ) );
+ setVariableValueToObject( invokerMojo, "invokerPropertiesFile", "invoker.properties");
+ setVariableValueToObject( invokerMojo, "project", getMavenProject() );
setVariableValueToObject( invokerMojo, "invokerTest", "*" );
- BuildJob[] poms = invokerMojo.getBuildJobs();
- assertEquals( 4, poms.length );
+ setVariableValueToObject( invokerMojo, "settings", new Settings() );
+ List<BuildJob> poms = invokerMojo.getBuildJobs();
+ assertEquals( 4, poms.size() );
}
public void testAlreadyCloned()