From 87741425bc7e1b10b0d1dff8cdf571c04dbec94b Mon Sep 17 00:00:00 2001 From: abayer Date: Tue, 9 Nov 2010 20:37:57 +0000 Subject: [PATCH] [HUDSON-7684] Attempting to fix - I think this works, but it needs more testing in other environments git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@36799 71c3de6d-444a-0410-be80-ed276b4c234a --- .../hudson/maven/MavenModuleSetBuild.java | 24 ++++++++--- .../test/ExtractResourceWithChangesSCM.java | 20 ++++++++- .../hudson/maven/MavenMultiModuleTest.java | 43 +++++++++++++++++++ 3 files changed, 81 insertions(+), 6 deletions(-) diff --git a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java index 1e9a06edc6..a713a7346a 100644 --- a/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java +++ b/maven-plugin/src/main/java/hudson/maven/MavenModuleSetBuild.java @@ -888,6 +888,7 @@ public class MavenModuleSetBuild extends AbstractMavenBuild invoke(File ws, VirtualChannel channel) throws IOException { File pom; - + String rootPOMRelPrefix; + PrintStream logger = listener.getLogger(); if (IOUtils.isAbsolute(rootPOM)) { @@ -922,6 +924,18 @@ public class MavenModuleSetBuild extends AbstractMavenBuild relPath = new HashMap(); - MavenUtil.resolveModules(embedder,mp,getRootPath(),relPath,listener,nonRecursive); + MavenUtil.resolveModules(embedder,mp,getRootPath(rootPOMRelPrefix),relPath,listener,nonRecursive); if(verbose) { for (Entry e : relPath.entrySet()) @@ -984,7 +998,7 @@ public class MavenModuleSetBuild extends AbstractMavenBuild= summedModuleDuration); } + + @Bug(7684) + public void testRelRootPom() throws Exception { + configureDefaultMaven("apache-maven-2.2.1", MavenInstallation.MAVEN_21); + MavenModuleSet m = createMavenProject(); + m.setRootPOM("../parent/pom.xml"); + m.getReporters().add(new TestReporter()); + m.setScm(new ExtractResourceWithChangesSCM(getClass().getResource("maven-multimod-rel-base.zip"), + getClass().getResource("maven-multimod-changes.zip"), + "moduleA")); + + buildAndAssertSuccess(m); + + // Now run a second build with the changes. + m.setIncrementalBuild(true); + buildAndAssertSuccess(m); + + MavenModuleSetBuild pBuild = m.getLastBuild(); + ExtractChangeLogSet changeSet = (ExtractChangeLogSet) pBuild.getChangeSet(); + + assertFalse("ExtractChangeLogSet should not be empty.", changeSet.isEmptySet()); + + for (MavenBuild modBuild : pBuild.getModuleLastBuilds().values()) { + String parentModuleName = modBuild.getParent().getModuleName().toString(); + if (parentModuleName.equals("org.jvnet.hudson.main.test.multimod:moduleA")) { + assertEquals("moduleA should have Result.NOT_BUILT", Result.NOT_BUILT, modBuild.getResult()); + } + else if (parentModuleName.equals("org.jvnet.hudson.main.test.multimod:moduleB")) { + assertEquals("moduleB should have Result.SUCCESS", Result.SUCCESS, modBuild.getResult()); + } + else if (parentModuleName.equals("org.jvnet.hudson.main.test.multimod:moduleC")) { + assertEquals("moduleC should have Result.SUCCESS", Result.SUCCESS, modBuild.getResult()); + } + } + + long summedModuleDuration = 0; + for (MavenBuild modBuild : pBuild.getModuleLastBuilds().values()) { + summedModuleDuration += modBuild.getDuration(); + } + assertTrue("duration of moduleset build should be greater-equal than sum of the module builds", + pBuild.getDuration() >= summedModuleDuration); + } + @Bug(6544) public void testEstimatedDurationForIncrementalMultiModMaven() -- GitLab