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