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>

Reply via email to