1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven;
20
21 import java.io.File;
22 import java.nio.file.Files;
23 import java.util.concurrent.atomic.AtomicReference;
24
25 import org.apache.maven.artifact.Artifact;
26 import org.apache.maven.artifact.DefaultArtifact;
27 import org.apache.maven.execution.MavenExecutionRequest;
28 import org.apache.maven.execution.MavenExecutionResult;
29 import org.apache.maven.execution.MavenSession;
30 import org.apache.maven.project.MavenProject;
31 import org.apache.maven.project.MavenProjectHelper;
32 import org.apache.maven.repository.internal.MavenWorkspaceReader;
33 import org.codehaus.plexus.component.annotations.Component;
34
35 import static java.util.Arrays.asList;
36
37 public class DefaultMavenTest extends AbstractCoreMavenComponentTestCase {
38 @Component(role = AbstractMavenLifecycleParticipant.class, hint = "WsrClassCatcher")
39 private static final class WsrClassCatcher extends AbstractMavenLifecycleParticipant {
40 private final AtomicReference<Class<?>> wsrClassRef = new AtomicReference<>(null);
41
42 @Override
43 public void afterProjectsRead(MavenSession session) throws MavenExecutionException {
44 wsrClassRef.set(session.getRepositorySession().getWorkspaceReader().getClass());
45 }
46 }
47
48 public void testEnsureResolverSessionHasMavenWorkspaceReader() throws Exception {
49 WsrClassCatcher wsrClassCatcher =
50 (WsrClassCatcher) getContainer().lookup(AbstractMavenLifecycleParticipant.class, "WsrClassCatcher");
51 Maven maven = getContainer().lookup(Maven.class);
52 MavenExecutionRequest request =
53 createMavenExecutionRequest(getProject("simple")).setGoals(asList("validate"));
54
55 MavenExecutionResult result = maven.execute(request);
56
57 Class<?> wsrClass = wsrClassCatcher.wsrClassRef.get();
58 assertTrue("is null", wsrClass != null);
59 assertTrue(String.valueOf(wsrClass), MavenWorkspaceReader.class.isAssignableFrom(wsrClass));
60 }
61
62 public void testMavenProjectEditArtifacts() throws Exception {
63 MavenProject mavenProject = new MavenProject();
64 DefaultArtifact artifact = new DefaultArtifact("g", "a", "1.0", Artifact.SCOPE_TEST, "jar", "", null);
65 mavenProject.getAttachedArtifacts().add(artifact);
66 mavenProject.getAttachedArtifacts().remove(artifact);
67 }
68
69 public void testThatErrorDuringProjectDependencyGraphCreationAreStored() throws Exception {
70 Maven maven = getContainer().lookup(Maven.class);
71 MavenExecutionRequest request =
72 createMavenExecutionRequest(getProject("cyclic-reference")).setGoals(asList("validate"));
73
74 MavenExecutionResult result = maven.execute(request);
75
76 assertEquals(ProjectCycleException.class, result.getExceptions().get(0).getClass());
77 }
78
79 @Override
80 protected String getProjectsDirectory() {
81 return "src/test/projects/default-maven";
82 }
83
84 public void testMavenProjectNoDuplicateArtifacts() throws Exception {
85 MavenProjectHelper mavenProjectHelper = lookup(MavenProjectHelper.class);
86 MavenProject mavenProject = new MavenProject();
87 mavenProject.setArtifact(new DefaultArtifact("g", "a", "1.0", Artifact.SCOPE_TEST, "jar", "", null));
88 File artifactFile = Files.createTempFile("foo", "tmp").toFile();
89 try {
90 mavenProjectHelper.attachArtifact(mavenProject, "sources", artifactFile);
91 assertEquals(1, mavenProject.getAttachedArtifacts().size());
92 mavenProjectHelper.attachArtifact(mavenProject, "sources", artifactFile);
93 assertEquals(1, mavenProject.getAttachedArtifacts().size());
94 } finally {
95 Files.deleteIfExists(artifactFile.toPath());
96 }
97 }
98 }