1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.project;
20
21 import java.io.File;
22 import java.io.IOException;
23 import java.util.List;
24 import java.util.Map;
25
26 import org.apache.maven.model.DependencyManagement;
27 import org.apache.maven.model.Model;
28 import org.apache.maven.model.Parent;
29 import org.apache.maven.model.Profile;
30
31 public class MavenProjectTest extends AbstractMavenProjectTestCase {
32
33 public void testShouldInterpretChildPathAdjustmentBasedOnModulePaths() throws IOException {
34 Model parentModel = new Model();
35 parentModel.addModule("../child");
36
37 MavenProject parentProject = new MavenProject(parentModel);
38
39 Model childModel = new Model();
40 childModel.setArtifactId("artifact");
41
42 MavenProject childProject = new MavenProject(childModel);
43
44 File childFile = new File(
45 System.getProperty("java.io.tmpdir"),
46 "maven-project-tests" + System.currentTimeMillis() + "/child/pom.xml");
47
48 childProject.setFile(childFile);
49
50 String adjustment = parentProject.getModulePathAdjustment(childProject);
51
52 assertNotNull(adjustment);
53
54 assertEquals("..", adjustment);
55 }
56
57 public void testIdentityProtoInheritance() {
58 Parent parent = new Parent();
59
60 parent.setGroupId("test-group");
61 parent.setVersion("1000");
62 parent.setArtifactId("test-artifact");
63
64 Model model = new Model();
65
66 model.setParent(parent);
67 model.setArtifactId("real-artifact");
68
69 MavenProject project = new MavenProject(model);
70
71 assertEquals("groupId proto-inheritance failed.", "test-group", project.getGroupId());
72 assertEquals("artifactId is masked.", "real-artifact", project.getArtifactId());
73 assertEquals("version proto-inheritance failed.", "1000", project.getVersion());
74
75
76 project.getId();
77 }
78
79 public void testEmptyConstructor() {
80 MavenProject project = new MavenProject();
81
82 assertEquals(
83 MavenProject.EMPTY_PROJECT_GROUP_ID + ":" + MavenProject.EMPTY_PROJECT_ARTIFACT_ID + ":jar:"
84 + MavenProject.EMPTY_PROJECT_VERSION,
85 project.getId());
86 }
87
88 public void testClone() throws Exception {
89 File f = getFileForClasspathResource("canonical-pom.xml");
90 MavenProject projectToClone = getProject(f);
91
92 MavenProject clonedProject = projectToClone.clone();
93 assertEquals("maven-core", clonedProject.getArtifactId());
94 Map<?, ?> clonedMap = clonedProject.getManagedVersionMap();
95 assertNotNull("ManagedVersionMap not copied", clonedMap);
96 assertTrue("ManagedVersionMap is not empty", clonedMap.isEmpty());
97 }
98
99 public void testCloneWithDependencyManagement() throws Exception {
100 File f = getFileForClasspathResource("dependencyManagement-pom.xml");
101 MavenProject projectToClone = getProjectWithDependencies(f);
102 DependencyManagement dep = projectToClone.getDependencyManagement();
103 assertNotNull("No dependencyManagement", dep);
104 List<?> list = dep.getDependencies();
105 assertNotNull("No dependencies", list);
106 assertTrue("Empty dependency list", !list.isEmpty());
107
108 Map<?, ?> map = projectToClone.getManagedVersionMap();
109 assertNotNull("No ManagedVersionMap", map);
110 assertTrue("ManagedVersionMap is empty", !map.isEmpty());
111
112 MavenProject clonedProject = projectToClone.clone();
113 assertEquals("maven-core", clonedProject.getArtifactId());
114 Map<?, ?> clonedMap = clonedProject.getManagedVersionMap();
115 assertNotNull("ManagedVersionMap not copied", clonedMap);
116 assertTrue("ManagedVersionMap is empty", !clonedMap.isEmpty());
117 assertTrue("ManagedVersionMap does not contain test key", clonedMap.containsKey("maven-test:maven-test-b:jar"));
118 }
119
120 public void testGetModulePathAdjustment() throws IOException {
121 Model moduleModel = new Model();
122
123 MavenProject module = new MavenProject(moduleModel);
124 module.setFile(new File("module-dir/pom.xml"));
125
126 Model parentModel = new Model();
127 parentModel.addModule("../module-dir");
128
129 MavenProject parent = new MavenProject(parentModel);
130 parent.setFile(new File("parent-dir/pom.xml"));
131
132 String pathAdjustment = parent.getModulePathAdjustment(module);
133
134 assertEquals("..", pathAdjustment);
135 }
136
137 public void testCloneWithDistributionManagement() throws Exception {
138
139 File f = getFileForClasspathResource("distributionManagement-pom.xml");
140 MavenProject projectToClone = getProject(f);
141
142 MavenProject clonedProject = projectToClone.clone();
143 assertNotNull(
144 "clonedProject - distributionManagement", clonedProject.getDistributionManagementArtifactRepository());
145 }
146
147 public void testCloneWithActiveProfile() throws Exception {
148
149 File f = getFileForClasspathResource("withActiveByDefaultProfile-pom.xml");
150 MavenProject projectToClone = getProject(f);
151 List<Profile> activeProfilesOrig = projectToClone.getActiveProfiles();
152
153 assertEquals("Expecting 1 active profile", 1, activeProfilesOrig.size());
154
155 MavenProject clonedProject = projectToClone.clone();
156
157 List<Profile> activeProfilesClone = clonedProject.getActiveProfiles();
158
159 assertEquals("Expecting 1 active profile", 1, activeProfilesClone.size());
160
161 assertNotSame(
162 "The list of active profiles should have been cloned too but is same",
163 activeProfilesOrig,
164 activeProfilesClone);
165 }
166
167 public void testCloneWithBaseDir() throws Exception {
168 File f = getFileForClasspathResource("canonical-pom.xml");
169 MavenProject projectToClone = getProject(f);
170 projectToClone.setPomFile(new File(new File(f.getParentFile(), "target"), "flattened.xml"));
171 MavenProject clonedProject = projectToClone.clone();
172 assertEquals("POM file is preserved across clone", projectToClone.getFile(), clonedProject.getFile());
173 assertEquals(
174 "Base directory is preserved across clone", projectToClone.getBasedir(), clonedProject.getBasedir());
175 }
176
177 public void testUndefinedOutputDirectory() throws Exception {
178 MavenProject p = new MavenProject();
179 assertNoNulls(p.getCompileClasspathElements());
180 assertNoNulls(p.getSystemClasspathElements());
181 assertNoNulls(p.getRuntimeClasspathElements());
182 assertNoNulls(p.getTestClasspathElements());
183 }
184
185 public void testAddDotFile() {
186 MavenProject project = new MavenProject();
187
188 File basedir = new File(System.getProperty("java.io.tmpdir"));
189 project.setFile(new File(basedir, "file"));
190
191 project.addCompileSourceRoot(basedir.getAbsolutePath());
192 project.addCompileSourceRoot(".");
193
194 assertEquals(1, project.getCompileSourceRoots().size());
195 }
196
197 private void assertNoNulls(List<String> elements) {
198 assertFalse(elements.contains(null));
199 }
200 }