Author: jdcasey
Date: Wed Feb 20 10:11:15 2008
New Revision: 629549

URL: http://svn.apache.org/viewvc?rev=629549&view=rev
Log:
Tests to verify that SCM inheritance calculations are correct, using both 
project builder directly and the embedder's readProject(..) method.

Added:
    
maven/components/trunk/maven-embedder/src/test/projects/readProject-withScmInheritance/
    
maven/components/trunk/maven-embedder/src/test/projects/readProject-withScmInheritance/modules/
    
maven/components/trunk/maven-embedder/src/test/projects/readProject-withScmInheritance/modules/child1/
    
maven/components/trunk/maven-embedder/src/test/projects/readProject-withScmInheritance/modules/child1/pom.xml
   (with props)
    
maven/components/trunk/maven-embedder/src/test/projects/readProject-withScmInheritance/pom.xml
   (with props)
    
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t12scm/
    
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t12scm/ProjectInheritanceTest.java
   (with props)
    
maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t12scm/
    
maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t12scm/p0/
    
maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t12scm/p0/modules/
    
maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t12scm/p0/modules/p1/
    
maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t12scm/p0/modules/p1/pom.xml
   (with props)
    
maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t12scm/p0/pom.xml
   (with props)
Modified:
    
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java

Modified: 
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java?rev=629549&r1=629548&r2=629549&view=diff
==============================================================================
--- 
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
 (original)
+++ 
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
 Wed Feb 20 10:11:15 2008
@@ -19,8 +19,6 @@
  * under the License.
  */
 
-import junit.framework.TestCase;
-import org.apache.maven.settings.SettingsConfigurationException;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.execution.DefaultMavenExecutionRequest;
 import org.apache.maven.execution.MavenExecutionRequest;
@@ -32,6 +30,7 @@
 import org.apache.maven.settings.Profile;
 import org.apache.maven.settings.Repository;
 import org.apache.maven.settings.Settings;
+import org.apache.maven.settings.SettingsConfigurationException;
 import org.apache.maven.settings.io.xpp3.SettingsXpp3Reader;
 import org.apache.maven.settings.io.xpp3.SettingsXpp3Writer;
 import org.codehaus.plexus.util.FileUtils;
@@ -49,6 +48,8 @@
 import java.util.List;
 import java.util.Set;
 
+import junit.framework.TestCase;
+
 public class MavenEmbedderTest
     extends TestCase
 {
@@ -206,7 +207,7 @@
 
     /**
      * Test that two executions of the embedder don't share data that has 
changed, see MNG-3013
-     * 
+     *
      * @throws Exception
      */
     public void testTwoExecutionsDoNotCacheChangedData()
@@ -323,6 +324,18 @@
         assertEquals( 1, artifacts.size() );
 
         artifacts.iterator().next();
+    }
+
+    public void testProjectReading_FromChildLevel_ScmInheritanceCalculations()
+        throws Exception
+    {
+        File pomFile = new File( basedir, 
"src/test/projects/readProject-withScmInheritance/modules/child1/pom.xml" );
+
+        MavenProject project = maven.readProject( pomFile );
+
+        assertEquals( "http://host/viewer?path=/trunk/parent/modules/child1";, 
project.getScm().getUrl() );
+        assertEquals( "scm:svn:http://host/trunk/parent/modules/child1";, 
project.getScm().getConnection() );
+        assertEquals( "scm:svn:https://host/trunk/parent/modules/child1";, 
project.getScm().getDeveloperConnection() );
     }
 
     /*

Added: 
maven/components/trunk/maven-embedder/src/test/projects/readProject-withScmInheritance/modules/child1/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/test/projects/readProject-withScmInheritance/modules/child1/pom.xml?rev=629549&view=auto
==============================================================================
--- 
maven/components/trunk/maven-embedder/src/test/projects/readProject-withScmInheritance/modules/child1/pom.xml
 (added)
+++ 
maven/components/trunk/maven-embedder/src/test/projects/readProject-withScmInheritance/modules/child1/pom.xml
 Wed Feb 20 10:11:15 2008
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?><project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>scm.inherit</groupId>
+    <artifactId>parent</artifactId>
+    <version>1</version>
+    <relativePath>../../pom.xml</relativePath>
+  </parent>
+
+  <artifactId>child1</artifactId>
+
+</project>
\ No newline at end of file

Propchange: 
maven/components/trunk/maven-embedder/src/test/projects/readProject-withScmInheritance/modules/child1/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/components/trunk/maven-embedder/src/test/projects/readProject-withScmInheritance/modules/child1/pom.xml
------------------------------------------------------------------------------
    svn:executable = *

Propchange: 
maven/components/trunk/maven-embedder/src/test/projects/readProject-withScmInheritance/modules/child1/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/components/trunk/maven-embedder/src/test/projects/readProject-withScmInheritance/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/test/projects/readProject-withScmInheritance/pom.xml?rev=629549&view=auto
==============================================================================
--- 
maven/components/trunk/maven-embedder/src/test/projects/readProject-withScmInheritance/pom.xml
 (added)
+++ 
maven/components/trunk/maven-embedder/src/test/projects/readProject-withScmInheritance/pom.xml
 Wed Feb 20 10:11:15 2008
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?><project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>scm.inherit</groupId>
+  <artifactId>parent</artifactId>
+  <version>1</version>
+  <packaging>pom</packaging>
+  
+  <scm>
+    <connection>scm:svn:http://host/trunk/parent</connection>
+    
<developerConnection>scm:svn:https://host/trunk/parent</developerConnection>
+    <url>http://host/viewer?path=/trunk/parent</url>
+  </scm>
+  
+  <modules>
+    <module>modules/child1</module>
+  </modules>
+
+</project>
\ No newline at end of file

Propchange: 
maven/components/trunk/maven-embedder/src/test/projects/readProject-withScmInheritance/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/components/trunk/maven-embedder/src/test/projects/readProject-withScmInheritance/pom.xml
------------------------------------------------------------------------------
    svn:executable = *

Propchange: 
maven/components/trunk/maven-embedder/src/test/projects/readProject-withScmInheritance/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t12scm/ProjectInheritanceTest.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t12scm/ProjectInheritanceTest.java?rev=629549&view=auto
==============================================================================
--- 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t12scm/ProjectInheritanceTest.java
 (added)
+++ 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t12scm/ProjectInheritanceTest.java
 Wed Feb 20 10:11:15 2008
@@ -0,0 +1,100 @@
+package org.apache.maven.project.inheritance.t12scm;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.inheritance.AbstractProjectInheritanceTestCase;
+
+import java.io.File;
+
+/**
+ * Verifies SCM inheritance uses modules statement from parent.
+ *
+ * @author jdcasey
+ * @version $Id$
+ */
+public class ProjectInheritanceTest
+    extends AbstractProjectInheritanceTestCase
+{
+    // ----------------------------------------------------------------------
+    //
+    // p1 inherits from p0
+    // p0 inhertis from super model
+    //
+    // or we can show it graphically as:
+    //
+    // p1 ---> p0 --> super model
+    //
+    // ----------------------------------------------------------------------
+
+    public void testScmInfoCalculatedCorrectlyOnParentAndChildRead()
+        throws Exception
+    {
+        File localRepo = getLocalRepositoryPath();
+
+        File pom0 = new File( localRepo, "p0/pom.xml" );
+        File pom0Basedir = pom0.getParentFile();
+        File pom1 = new File( pom0Basedir, "modules/p1/pom.xml" );
+
+        // load the child project, which inherits from p0...
+        MavenProject project0 = getProject( pom0 );
+        MavenProject project1 = getProject( pom1 );
+
+        System.out.println( "\n\n" );
+        System.out.println( "Parent SCM URL is: " + project0.getScm().getUrl() 
);
+        System.out.println( "Child SCM URL is: " + project1.getScm().getUrl() 
);
+        System.out.println();
+        System.out.println( "Parent SCM connection is: " + 
project0.getScm().getConnection() );
+        System.out.println( "Child SCM connection is: " + 
project1.getScm().getConnection() );
+        System.out.println();
+        System.out.println( "Parent SCM developer connection is: "
+                            + project0.getScm().getDeveloperConnection() );
+        System.out.println( "Child SCM developer connection is: "
+                            + project1.getScm().getDeveloperConnection() );
+
+        assertEquals( project1.getScm().getUrl(), project0.getScm().getUrl() + 
"/modules/p1" );
+        assertEquals( project1.getScm().getConnection(), 
project0.getScm().getConnection()
+                                                         + "/modules/p1" );
+        assertEquals( project1.getScm().getDeveloperConnection(), 
project0.getScm()
+                                                                          
.getDeveloperConnection()
+                                                                  + 
"/modules/p1" );
+    }
+
+    public void testScmInfoCalculatedCorrectlyOnChildOnlyRead()
+        throws Exception
+    {
+        File localRepo = getLocalRepositoryPath();
+
+        File pom1 = new File( localRepo, "p0/modules/p1/pom.xml" );
+
+        // load the child project, which inherits from p0...
+        MavenProject project1 = getProject( pom1 );
+
+        System.out.println( "\n\n" );
+        System.out.println( "Child SCM URL is: " + project1.getScm().getUrl() 
);
+        System.out.println( "Child SCM connection is: " + 
project1.getScm().getConnection() );
+        System.out.println( "Child SCM developer connection is: "
+                            + project1.getScm().getDeveloperConnection() );
+
+        assertEquals( project1.getScm().getUrl(), 
"http://host/viewer?path=/p0/modules/p1"; );
+        assertEquals( project1.getScm().getConnection(), 
"scm:svn:http://host/p0/modules/p1"; );
+        assertEquals( project1.getScm().getDeveloperConnection(), 
"scm:svn:https://host/p0/modules/p1"; );
+    }
+}

Propchange: 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t12scm/ProjectInheritanceTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t12scm/ProjectInheritanceTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t12scm/p0/modules/p1/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t12scm/p0/modules/p1/pom.xml?rev=629549&view=auto
==============================================================================
--- 
maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t12scm/p0/modules/p1/pom.xml
 (added)
+++ 
maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t12scm/p0/modules/p1/pom.xml
 Wed Feb 20 10:11:15 2008
@@ -0,0 +1,11 @@
+<project>
+  <parent>
+    <artifactId>p0</artifactId>
+    <groupId>maven</groupId>
+    <version>1.0</version>
+    <relativePath>../../pom.xml</relativePath>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>p1</artifactId>
+  
+</project>

Propchange: 
maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t12scm/p0/modules/p1/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t12scm/p0/modules/p1/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t12scm/p0/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t12scm/p0/pom.xml?rev=629549&view=auto
==============================================================================
--- 
maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t12scm/p0/pom.xml
 (added)
+++ 
maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t12scm/p0/pom.xml
 Wed Feb 20 10:11:15 2008
@@ -0,0 +1,18 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>maven</groupId>
+  <artifactId>p0</artifactId>
+  <packaging>pom</packaging>
+  <version>1.0</version>
+  
+  <scm>
+    <connection>scm:svn:http://host/p0</connection>
+    <developerConnection>scm:svn:https://host/p0</developerConnection>
+    <url>http://host/viewer?path=/p0</url>
+  </scm>
+  
+  <modules>
+    <module>modules/p1</module>
+  </modules>
+
+</project>

Propchange: 
maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t12scm/p0/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/components/trunk/maven-project/src/test/resources/inheritance-repo/t12scm/p0/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"


Reply via email to