This is an automated email from the ASF dual-hosted git repository. sjaranowski pushed a commit to branch MNG-7758-3.9.x in repository https://gitbox.apache.org/repos/asf/maven-integration-testing.git
commit c1fd06129527b588529ffa5aec52b9bed5657f0e Author: Slawomir Jaranowski <[email protected]> AuthorDate: Wed Jun 12 09:48:43 2024 +0200 [MNG-7758] Report dependency problems for all repository - extends ITs (cherry picked from commit aaf6d01bf23b0c739f0daf970307d61a39e5b276) --- ...ng3477DependencyResolutionErrorMessageTest.java | 113 ++++++++++++++++++--- .../mng-3477/{settings.xml => pom-plugin.xml} | 59 ++++++----- .../{settings.xml => settings-template.xml} | 16 ++- 3 files changed, 143 insertions(+), 45 deletions(-) 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..746e3311e 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,20 +19,25 @@ 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 <a href="https://issues.apache.org/jira/browse/MNG-3477">MNG-3477</a>. + * and extends for <a href="https://issues.apache.org/jira/browse/MNG-7758">MNG-7758</a> */ -public class MavenITmng3477DependencyResolutionErrorMessageTest extends AbstractMavenIntegrationTestCase { +class MavenITmng3477DependencyResolutionErrorMessageTest extends AbstractMavenIntegrationTestCase { public MavenITmng3477DependencyResolutionErrorMessageTest() { - super("[2.1.0,3.0-alpha-1),[3.0-beta-1,)"); + super("[3.9.8,)"); } /** @@ -40,29 +45,111 @@ public class MavenITmng3477DependencyResolutionErrorMessageTest extends Abstract * * @throws Exception in case of failure */ - @Test - public void testit() throws Exception { + void testit(int port, String[] logExpectPatterns, String projectFile) throws Exception { File testDir = ResourceExtractor.simpleExtractResources(getClass(), "/mng-3477"); Verifier verifier = newVerifier(testDir.getAbsolutePath()); + + Map<String, String> 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("--settings"); - verifier.addCliArgument("settings.xml"); + verifier.addCliArgument("-U"); + verifier.addCliArguments("--settings", "settings.xml"); + verifier.addCliArguments("-f", projectFile); + verifier.addCliArgument("validate"); + verifier.setLogFileName("log-" + projectFile + "-" + port + ".txt"); try { - verifier.addCliArgument("validate"); verifier.execute(); fail("Build should have failed to resolve dependency"); } catch (VerificationException e) { - boolean foundCause = false; List<String> 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.*"}, "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 .* \\(http://localhost:.*/repo\\): Connect.* .*refused.*" + }, + "pom-plugin.xml"); + } + + @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\\).*" + }, + "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) { + 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/pom-plugin.xml similarity index 50% copy from core-it-suite/src/test/resources/mng-3477/settings.xml copy to core-it-suite/src/test/resources/mng-3477/pom-plugin.xml index f55f2d030..b267e306d 100644 --- a/core-it-suite/src/test/resources/mng-3477/settings.xml +++ b/core-it-suite/src/test/resources/mng-3477/pom-plugin.xml @@ -1,5 +1,4 @@ <?xml version="1.0" encoding="UTF-8"?> - <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file @@ -18,33 +17,33 @@ KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> +<project> + <modelVersion>4.0.0</modelVersion> + + <groupId>org.apache.maven.its.mng3477</groupId> + <artifactId>test</artifactId> + <version>1</version> + <packaging>jar</packaging> + + <name>Maven Integration Test :: MNG-3477</name> + <description>Tests that dependency resolution errors tell the underlying transport issue.</description> -<settings> - <mirrors> - <mirror> - <id>central</id> - <url>http://localhost:54312/repo</url> - <mirrorOf>central</mirrorOf> - </mirror> - </mirrors> - <profiles> - <profile> - <id>maven-core-it-repo</id> - <repositories> - <repository> - <id>maven-core-it</id> - <url>http://localhost:54312/repo</url> - <releases> - <checksumPolicy>ignore</checksumPolicy> - </releases> - <snapshots> - <enabled>false</enabled> - </snapshots> - </repository> - </repositories> - </profile> - </profiles> - <activeProfiles> - <activeProfile>maven-core-it-repo</activeProfile> - </activeProfiles> -</settings> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.its.plugins</groupId> + <artifactId>maven-it-plugin-not-exists</artifactId> + <version>1.2.3</version> + <executions> + <execution> + <id>test</id> + <goals> + <goal>compile</goal> + </goals> + <phase>validate</phase> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> 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 75% 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..5d27e2d5b 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. <mirrors> <mirror> <id>central</id> - <url>http://localhost:54312/repo</url> + <url>http://localhost:@port@/repo</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> @@ -33,7 +33,7 @@ under the License. <repositories> <repository> <id>maven-core-it</id> - <url>http://localhost:54312/repo</url> + <url>http://localhost:@port@/repo</url> <releases> <checksumPolicy>ignore</checksumPolicy> </releases> @@ -42,6 +42,18 @@ under the License. </snapshots> </repository> </repositories> + <pluginRepositories> + <pluginRepository> + <id>maven-core-it</id> + <url>http://localhost:@port@/repo</url> + <releases> + <checksumPolicy>ignore</checksumPolicy> + </releases> + <snapshots> + <enabled>false</enabled> + </snapshots> + </pluginRepository> + </pluginRepositories> </profile> </profiles> <activeProfiles>
