From 565c7f17230bb5a1552e898f8c0ca61f9195655a Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Mon, 10 Jun 2024 21:41:13 +0200 Subject: [PATCH 1/3] [MNG-7758] Report dependency problems for all repository - extends ITs --- ...7DependencyResolutionErrorMessageTest.java | 66 ++++++++++++++++--- .../{settings.xml => settings-template.xml} | 4 +- 2 files changed, 58 insertions(+), 12 deletions(-) rename core-it-suite/src/test/resources/mng-3477/{settings.xml => settings-template.xml} (93%) diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3477DependencyResolutionErrorMessageTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3477DependencyResolutionErrorMessageTest.java index 5fcdab5dd..20ee0e10c 100644 --- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3477DependencyResolutionErrorMessageTest.java +++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3477DependencyResolutionErrorMessageTest.java @@ -19,17 +19,21 @@ package org.apache.maven.it; import java.io.File; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.apache.maven.shared.verifier.VerificationException; import org.apache.maven.shared.verifier.Verifier; import org.apache.maven.shared.verifier.util.ResourceExtractor; +import org.eclipse.jetty.server.NetworkConnector; +import org.eclipse.jetty.server.Server; import org.junit.jupiter.api.Test; /** * This is a test set for MNG-3477. */ -public class MavenITmng3477DependencyResolutionErrorMessageTest extends AbstractMavenIntegrationTestCase { +class MavenITmng3477DependencyResolutionErrorMessageTest extends AbstractMavenIntegrationTestCase { public MavenITmng3477DependencyResolutionErrorMessageTest() { super("[2.1.0,3.0-alpha-1),[3.0-beta-1,)"); @@ -40,29 +44,71 @@ public MavenITmng3477DependencyResolutionErrorMessageTest() { * * @throws Exception in case of failure */ - @Test - public void testit() throws Exception { + void testit(int port, String[] logExpectPatterns) throws Exception { File testDir = ResourceExtractor.simpleExtractResources(getClass(), "/mng-3477"); Verifier verifier = newVerifier(testDir.getAbsolutePath()); + + Map filterProps = new HashMap<>(); + filterProps.put("@port@", Integer.toString(port)); + verifier.filterFile("settings-template.xml", "settings.xml", "UTF-8", filterProps); + verifier.setAutoclean(false); verifier.deleteArtifacts("org.apache.maven.its.mng3477"); + verifier.addCliArgument("-U"); verifier.addCliArgument("--settings"); verifier.addCliArgument("settings.xml"); + verifier.addCliArgument("validate"); + verifier.setLogFileName("log-" + port + ".txt"); try { - verifier.addCliArgument("validate"); verifier.execute(); fail("Build should have failed to resolve dependency"); } catch (VerificationException e) { - boolean foundCause = false; List lines = verifier.loadLines(verifier.getLogFileName(), "UTF-8"); - for (String line : lines) { - if (line.matches(".*org.apache.maven.its.mng3477:dep:.*:1.0.*Connection.*refused.*")) { - foundCause = true; - break; + for (String pattern : logExpectPatterns) { + boolean foundCause = false; + for (String line : lines) { + if (line.matches(pattern)) { + foundCause = true; + break; + } } + assertTrue("Transfer error cause was not found - " + pattern, foundCause); + } + } + } + + /** + * Only one exception is returned by DependencyCollectionException.getResult().getExceptions() + * + * @throws Exception + */ + @Test + void connectionProblems() throws Exception { + testit(54312, new String[] {".*org.apache.maven.its.mng3477:dep:.*:1.0.*Connection.*refused.*"}); + } + + @Test + void notFoundProblems() throws Exception { + Server server = null; + try { + server = new Server(0); + server.start(); + if (server.isFailed()) { + fail("Couldn't bind the server socket to a free port!"); + } + + int port = ((NetworkConnector) server.getConnectors()[0]).getLocalPort(); + testit(port, new String[] { + ".*Could not find artifact org.apache.maven.its.mng3477:dep:.*:1.0 in central \\(http://localhost:.*/repo\\).*", + ".*Could not find artifact org.apache.maven.its.mng3477:dep:.*:1.0 in maven-core-it \\(http://localhost:.*/repo\\).*" + }); + + } finally { + if (server != null) { + server.stop(); + server.join(); } - assertTrue("Transfer error cause was not found", foundCause); } } } diff --git a/core-it-suite/src/test/resources/mng-3477/settings.xml b/core-it-suite/src/test/resources/mng-3477/settings-template.xml similarity index 93% rename from core-it-suite/src/test/resources/mng-3477/settings.xml rename to core-it-suite/src/test/resources/mng-3477/settings-template.xml index f55f2d030..0e0938713 100644 --- a/core-it-suite/src/test/resources/mng-3477/settings.xml +++ b/core-it-suite/src/test/resources/mng-3477/settings-template.xml @@ -23,7 +23,7 @@ under the License. central - http://localhost:54312/repo + http://localhost:@port@/repo central @@ -33,7 +33,7 @@ under the License. maven-core-it - http://localhost:54312/repo + http://localhost:@port@/repo ignore From 9e11a1387495fd3e57b1ca9342a1623d72277fbc Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Mon, 10 Jun 2024 23:42:56 +0200 Subject: [PATCH 2/3] [MNG-7758] Report dependency problems for all repository - extends ITs --- ...7DependencyResolutionErrorMessageTest.java | 60 +++++++++++++++---- .../test/resources/mng-3477/pom-plugin.xml | 49 +++++++++++++++ .../resources/mng-3477/settings-template.xml | 12 ++++ 3 files changed, 111 insertions(+), 10 deletions(-) create mode 100644 core-it-suite/src/test/resources/mng-3477/pom-plugin.xml diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3477DependencyResolutionErrorMessageTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3477DependencyResolutionErrorMessageTest.java index 20ee0e10c..653c95034 100644 --- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3477DependencyResolutionErrorMessageTest.java +++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3477DependencyResolutionErrorMessageTest.java @@ -36,7 +36,7 @@ class MavenITmng3477DependencyResolutionErrorMessageTest extends AbstractMavenIntegrationTestCase { public MavenITmng3477DependencyResolutionErrorMessageTest() { - super("[2.1.0,3.0-alpha-1),[3.0-beta-1,)"); + super("[4.0.0-beta-4,)"); } /** @@ -44,7 +44,7 @@ public MavenITmng3477DependencyResolutionErrorMessageTest() { * * @throws Exception in case of failure */ - void testit(int port, String[] logExpectPatterns) throws Exception { + void testit(int port, String[] logExpectPatterns, String projectFile) throws Exception { File testDir = ResourceExtractor.simpleExtractResources(getClass(), "/mng-3477"); Verifier verifier = newVerifier(testDir.getAbsolutePath()); @@ -56,10 +56,10 @@ void testit(int port, String[] logExpectPatterns) throws Exception { verifier.setAutoclean(false); verifier.deleteArtifacts("org.apache.maven.its.mng3477"); verifier.addCliArgument("-U"); - verifier.addCliArgument("--settings"); - verifier.addCliArgument("settings.xml"); + verifier.addCliArguments("--settings", "settings.xml"); + verifier.addCliArguments("-f", projectFile); verifier.addCliArgument("validate"); - verifier.setLogFileName("log-" + port + ".txt"); + verifier.setLogFileName("log-" + projectFile + "-" + port + ".txt"); try { verifier.execute(); fail("Build should have failed to resolve dependency"); @@ -85,7 +85,17 @@ void testit(int port, String[] logExpectPatterns) throws Exception { */ @Test void connectionProblems() throws Exception { - testit(54312, new String[] {".*org.apache.maven.its.mng3477:dep:.*:1.0.*Connection.*refused.*"}); + testit(54312, new String[] {".*org.apache.maven.its.mng3477:dep:.*:1.0.*Connection.*refused.*"}, "pom.xml"); + } + + @Test + void connectionProblemsPlugin() throws Exception { + testit( + 54312, + new String[] { + ".*The following artifacts could not be resolved: org.apache.maven.its.plugins:maven-it-plugin-not-exists:pom:1.2.3 \\(absent\\): Could not transfer artifact org.apache.maven.its.plugins:maven-it-plugin-not-exists:pom:1.2.3 from/to maven-core-it \\(http://localhost:.*/repo\\): Connection to http://localhost:.*2/repo/ refused.*" + }, + "pom-plugin.xml"); } @Test @@ -99,10 +109,40 @@ void notFoundProblems() throws Exception { } int port = ((NetworkConnector) server.getConnectors()[0]).getLocalPort(); - testit(port, new String[] { - ".*Could not find artifact org.apache.maven.its.mng3477:dep:.*:1.0 in central \\(http://localhost:.*/repo\\).*", - ".*Could not find artifact org.apache.maven.its.mng3477:dep:.*:1.0 in maven-core-it \\(http://localhost:.*/repo\\).*" - }); + testit( + port, + new String[] { + ".*Could not find artifact org.apache.maven.its.mng3477:dep:.*:1.0 in central \\(http://localhost:.*/repo\\).*", + ".*Could not find artifact org.apache.maven.its.mng3477:dep:.*:1.0 in maven-core-it \\(http://localhost:.*/repo\\).*" + }, + "pom.xml"); + + } finally { + if (server != null) { + server.stop(); + server.join(); + } + } + } + + @Test + void notFoundProblemsPlugin() throws Exception { + Server server = null; + try { + server = new Server(0); + server.start(); + if (server.isFailed()) { + fail("Couldn't bind the server socket to a free port!"); + } + + int port = ((NetworkConnector) server.getConnectors()[0]).getLocalPort(); + testit( + port, + new String[] { + ".*Could not find artifact org.apache.maven.its.plugins:maven-it-plugin-not-exists:jar:1.2.3 in central \\(http://localhost:.*/repo\\).*", + ".*Could not find artifact org.apache.maven.its.plugins:maven-it-plugin-not-exists:jar:1.2.3 in maven-core-it \\(http://localhost:.*/repo\\).*" + }, + "pom-plugin.xml"); } finally { if (server != null) { diff --git a/core-it-suite/src/test/resources/mng-3477/pom-plugin.xml b/core-it-suite/src/test/resources/mng-3477/pom-plugin.xml new file mode 100644 index 000000000..b267e306d --- /dev/null +++ b/core-it-suite/src/test/resources/mng-3477/pom-plugin.xml @@ -0,0 +1,49 @@ + + + + 4.0.0 + + org.apache.maven.its.mng3477 + test + 1 + jar + + Maven Integration Test :: MNG-3477 + Tests that dependency resolution errors tell the underlying transport issue. + + + + + org.apache.maven.its.plugins + maven-it-plugin-not-exists + 1.2.3 + + + test + + compile + + validate + + + + + + diff --git a/core-it-suite/src/test/resources/mng-3477/settings-template.xml b/core-it-suite/src/test/resources/mng-3477/settings-template.xml index 0e0938713..5d27e2d5b 100644 --- a/core-it-suite/src/test/resources/mng-3477/settings-template.xml +++ b/core-it-suite/src/test/resources/mng-3477/settings-template.xml @@ -42,6 +42,18 @@ under the License. + + + maven-core-it + http://localhost:@port@/repo + + ignore + + + false + + + From d5963f3a5f8c4b78047d6a0ded117fff59e7d10e Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Tue, 11 Jun 2024 08:03:09 +0200 Subject: [PATCH 3/3] [MNG-7758] Report dependency problems for all repository - extends ITs --- .../it/MavenITmng3477DependencyResolutionErrorMessageTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3477DependencyResolutionErrorMessageTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3477DependencyResolutionErrorMessageTest.java index 653c95034..d530362b7 100644 --- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3477DependencyResolutionErrorMessageTest.java +++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3477DependencyResolutionErrorMessageTest.java @@ -32,6 +32,7 @@ /** * This is a test set for MNG-3477. + * and extends for MNG-7758 */ class MavenITmng3477DependencyResolutionErrorMessageTest extends AbstractMavenIntegrationTestCase {