You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2021/03/01 21:08:44 UTC

[maven-integration-testing] branch MNG-6772_2 created (now 5bc2e70)

This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a change to branch MNG-6772_2
in repository https://gitbox.apache.org/repos/asf/maven-integration-testing.git.


      at 5bc2e70  [MNG-6772] Project repositories should only be used by direct dependencies, not transitive dependencies

This branch includes the following new commits:

     new 5bc2e70  [MNG-6772] Project repositories should only be used by direct dependencies, not transitive dependencies

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[maven-integration-testing] 01/01: [MNG-6772] Project repositories should only be used by direct dependencies, not transitive dependencies

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch MNG-6772_2
in repository https://gitbox.apache.org/repos/asf/maven-integration-testing.git

commit 5bc2e70acce4026ab1fcc5a72c9bef860abc9dd9
Author: rfscholte <rf...@apache.org>
AuthorDate: Sat Jan 16 14:41:17 2021 +0100

    [MNG-6772] Project repositories should only be used by direct dependencies, not transitive dependencies
---
 ...mng6772NestedImportScopeRepositoryOverride.java | 94 +++++++++++++++++++---
 1 file changed, 84 insertions(+), 10 deletions(-)

diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng6772NestedImportScopeRepositoryOverride.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng6772NestedImportScopeRepositoryOverride.java
index 398da08..65a9933 100644
--- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng6772NestedImportScopeRepositoryOverride.java
+++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng6772NestedImportScopeRepositoryOverride.java
@@ -1,7 +1,5 @@
 package org.apache.maven.it;
 
-import java.io.File;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -21,8 +19,17 @@ import java.io.File;
  * under the License.
  */
 
+import java.io.File;
+import java.nio.file.Files;
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.maven.it.util.ResourceExtractor;
 
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.endsWith;
+import static org.hamcrest.Matchers.startsWith;
+
 /**
  * This is a test set for <a href="https://issues.apache.org/jira/browse/MNG-6772">MNG-6772</a>:
  *
@@ -39,7 +46,7 @@ public class MavenITmng6772NestedImportScopeRepositoryOverride
 
     public MavenITmng6772NestedImportScopeRepositoryOverride()
     {
-        super( "(,4.0.0-alpha-1),[4.0.0-alpha-1,)" );
+        super( "[3.0,)" );
     }
 
     // This will test the behavior using ProjectModelResolver
@@ -49,13 +56,39 @@ public class MavenITmng6772NestedImportScopeRepositoryOverride
         final File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-6772-override-in-project" );
 
         final Verifier verifier = newVerifier( testDir.getAbsolutePath(), null );
-        overrideGlobalSettings( testDir, verifier );
+        overrideSettings( testDir, verifier );
         verifier.deleteArtifacts( "org.apache.maven.its.mng6772" );
 
         verifier.filterFile( "pom-template.xml", "pom.xml", "UTF-8", verifier.newDefaultFilterProperties() );
 
-        verifier.executeGoal( "validate" );
-        verifier.verifyErrorFreeLog();
+        try
+        {
+            verifier.executeGoal( "validate" );
+            fail( "Shouldn't be able to find b-0.1.pom in Central " );
+        }
+        catch( VerificationException e )
+        {
+        }
+
+        List<String> logLines = Files.readAllLines( testDir.toPath().resolve( verifier.getLogFileName() ) );
+
+        List<String> downloadLines = new ArrayList<>( 3 );
+        for ( String line : logLines )
+        {
+            if ( line.startsWith( "[INFO] Downloading from central:" ) )
+            {
+                downloadLines.add( line );
+            }
+        }
+
+        assertEquals( 2, downloadLines.size() );
+
+        assertThat( downloadLines.get( 0 ), endsWith( "/a-0.1.pom" ) );
+        assertThat( downloadLines.get( 0 ), startsWith( "[INFO] Downloading from central: file" ) );
+
+        assertThat( downloadLines.get( 1 ), endsWith( "/b-0.1.pom" ) );
+        assertThat( downloadLines.get( 1 ), startsWith( "[INFO] Downloading from central: http" ) );
+
         verifier.resetStreams();
     }
 
@@ -66,21 +99,52 @@ public class MavenITmng6772NestedImportScopeRepositoryOverride
         final File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-6772-override-in-dependency" );
 
         final Verifier verifier = newVerifier( testDir.getAbsolutePath(), null );
-        overrideGlobalSettings( testDir, verifier );
+        overrideSettings( testDir, verifier );
         verifier.deleteArtifacts( "org.apache.maven.its.mng6772" );
 
         verifier.filterFile( "pom-template.xml", "pom.xml", "UTF-8", verifier.newDefaultFilterProperties() );
 
-        verifier.executeGoal( "compile" );
-        verifier.verifyErrorFreeLog();
+        try
+        {
+            verifier.executeGoal( "compile" );
+            fail( "Shouldn't be able to find b-0.1.pom in Central " );
+        }
+        catch( VerificationException e )
+        {
+        }
+
+        List<String> logLines = Files.readAllLines( testDir.toPath().resolve( verifier.getLogFileName() ) );
+
+        List<String> downloadLines = new ArrayList<>( 3 );
+        for ( String line : logLines )
+        {
+            if ( line.startsWith( "[INFO] Downloading from central:" ) )
+            {
+                downloadLines.add( line );
+            }
+        }
+
+        assertEquals( 3, downloadLines.size() );
+
+        assertThat( downloadLines.get( 0 ), endsWith( "/dependency-0.1.pom" ) );
+        assertThat( downloadLines.get( 0 ), startsWith( "[INFO] Downloading from central: file" ) );
+
+        // this might be a bug, shouldn't it be using the repository defined in dependency-0.1.pom, even though it is a BOM
+        assertThat( downloadLines.get( 1 ), endsWith( "/a-0.1.pom" ) );
+        assertThat( downloadLines.get( 1 ), startsWith( "[INFO] Downloading from central: file" ) );
+
+        assertThat( downloadLines.get( 2 ), endsWith( "/b-0.1.pom" ) );
+        assertThat( downloadLines.get( 2 ), startsWith( "[INFO] Downloading from central: http" ) );
+
         verifier.resetStreams();
     }
 
     // central must not be defined in any settings.xml or super POM will never be in play.
-    private void overrideGlobalSettings( final File testDir, final Verifier verifier )
+    private void overrideSettings( final File testDir, final Verifier verifier )
     {
         final File settingsFile = new File( testDir, "settings-override.xml" );
         final String path = settingsFile.getAbsolutePath();
+
         verifier.getCliOptions().add( "--global-settings" );
         if ( path.indexOf( ' ' ) < 0 )
         {
@@ -90,6 +154,16 @@ public class MavenITmng6772NestedImportScopeRepositoryOverride
         {
             verifier.getCliOptions().add( '"' + path + '"' );
         }
+
+        verifier.getCliOptions().add( "--settings" );
+        if ( path.indexOf( ' ' ) < 0 )
+        {
+            verifier.getCliOptions().add( path );
+        }
+        else
+        {
+            verifier.getCliOptions().add( '"' + path + '"' );
+        }
     }
 
 }