001: package org.apache.maven.project;
002:
003: /*
004: * Licensed to the Apache Software Foundation (ASF) under one
005: * or more contributor license agreements. See the NOTICE file
006: * distributed with this work for additional information
007: * regarding copyright ownership. The ASF licenses this file
008: * to you under the Apache License, Version 2.0 (the
009: * "License"); you may not use this file except in compliance
010: * with the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017: * KIND, either express or implied. See the License for the
018: * specific language governing permissions and limitations
019: * under the License.
020: */
021:
022: import org.apache.maven.model.Model;
023: import org.apache.maven.model.Parent;
024: import org.apache.maven.model.DependencyManagement;
025: import org.apache.maven.model.Dependency;
026: import org.apache.maven.artifact.versioning.ManagedVersionMap;
027:
028: import java.io.File;
029: import java.io.IOException;
030: import java.util.Map;
031: import java.util.Iterator;
032: import java.util.List;
033:
034: public class MavenProjectTest extends AbstractMavenProjectTestCase {
035:
036: public void testShouldInterpretChildPathAdjustmentBasedOnModulePaths()
037: throws IOException {
038: Model parentModel = new Model();
039: parentModel.addModule("../child");
040:
041: MavenProject parentProject = new MavenProject(parentModel);
042:
043: Model childModel = new Model();
044: childModel.setArtifactId("artifact");
045:
046: MavenProject childProject = new MavenProject(childModel);
047:
048: File childFile = new File(System.getProperty("java.io.tmpdir"),
049: "maven-project-tests" + System.currentTimeMillis()
050: + "/child/pom.xml");
051:
052: childProject.setFile(childFile);
053:
054: String adjustment = parentProject
055: .getModulePathAdjustment(childProject);
056:
057: assertNotNull(adjustment);
058:
059: assertEquals("..", adjustment);
060: }
061:
062: public void testIdentityProtoInheritance() {
063: Parent parent = new Parent();
064:
065: parent.setGroupId("test-group");
066: parent.setVersion("1000");
067: parent.setArtifactId("test-artifact");
068:
069: Model model = new Model();
070:
071: model.setParent(parent);
072: model.setArtifactId("real-artifact");
073:
074: MavenProject project = new MavenProject(model);
075:
076: assertEquals("groupId proto-inheritance failed.", "test-group",
077: project.getGroupId());
078: assertEquals("artifactId is masked.", "real-artifact", project
079: .getArtifactId());
080: assertEquals("version proto-inheritance failed.", "1000",
081: project.getVersion());
082:
083: // draw the NPE.
084: project.getId();
085: }
086:
087: public void testEmptyConstructor() {
088: MavenProject project = new MavenProject();
089:
090: assertEquals(MavenProject.EMPTY_PROJECT_GROUP_ID + ":"
091: + MavenProject.EMPTY_PROJECT_ARTIFACT_ID + ":jar:"
092: + MavenProject.EMPTY_PROJECT_VERSION, project.getId());
093: }
094:
095: public void testCopyConstructor() throws Exception {
096: File f = getFileForClasspathResource("canonical-pom.xml");
097: MavenProject projectToClone = getProject(f);
098:
099: MavenProject clonedProject = new MavenProject(projectToClone);
100: assertEquals("maven-core", clonedProject.getArtifactId());
101: Map clonedMap = clonedProject.getManagedVersionMap();
102: assertNotNull("ManagedVersionMap not copied", clonedMap);
103: assertTrue("ManagedVersionMap is not empty", clonedMap
104: .isEmpty());
105: }
106:
107: public void testCopyConstructorWithDependencyManagement()
108: throws Exception {
109: File f = getFileForClasspathResource("dependencyManagement-pom.xml");
110: MavenProject projectToClone = getProjectWithDependencies(f);
111: DependencyManagement dep = projectToClone
112: .getDependencyManagement();
113: assertNotNull("No dependencyManagement", dep);
114: List list = dep.getDependencies();
115: assertNotNull("No dependencies", list);
116: assertTrue("Empty dependency list", !list.isEmpty());
117:
118: Map map = projectToClone.getManagedVersionMap();
119: assertNotNull("No ManagedVersionMap", map);
120: assertTrue("ManagedVersionMap is empty", !map.isEmpty());
121:
122: MavenProject clonedProject = new MavenProject(projectToClone);
123: assertEquals("maven-core", clonedProject.getArtifactId());
124: Map clonedMap = clonedProject.getManagedVersionMap();
125: assertNotNull("ManagedVersionMap not copied", clonedMap);
126: assertTrue("ManagedVersionMap is empty", !clonedMap.isEmpty());
127: assertTrue("Not a ManagedVersionMap",
128: clonedMap instanceof ManagedVersionMap);
129: assertTrue("ManagedVersionMap does not contain test key",
130: clonedMap.containsKey("maven-test:maven-test-b:jar"));
131: }
132:
133: public void testGetModulePathAdjustment() throws IOException {
134: Model moduleModel = new Model();
135:
136: MavenProject module = new MavenProject(moduleModel);
137: module.setFile(new File("module-dir/pom.xml"));
138:
139: Model parentModel = new Model();
140: parentModel.addModule("../module-dir");
141:
142: MavenProject parent = new MavenProject(parentModel);
143: parent.setFile(new File("parent-dir/pom.xml"));
144:
145: String pathAdjustment = parent.getModulePathAdjustment(module);
146:
147: assertEquals("..", pathAdjustment);
148: }
149:
150: public void testCopyConstructorWithDistributionManagement()
151: throws Exception {
152:
153: File f = getFileForClasspathResource("distributionManagement-pom.xml");
154: MavenProject projectToClone = getProject(f);
155:
156: MavenProject clonedProject = new MavenProject(projectToClone);
157: assertNotNull("clonedProject - distributionManagement",
158: clonedProject
159: .getDistributionManagementArtifactRepository());
160: }
161: }
|