1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugins.dependency;
20
21 import java.io.File;
22 import java.io.IOException;
23 import java.nio.file.Files;
24
25 import org.apache.commons.io.FileUtils;
26 import org.apache.maven.artifact.Artifact;
27 import org.apache.maven.plugin.LegacySupport;
28 import org.apache.maven.plugin.MojoExecutionException;
29 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
30 import org.apache.maven.plugins.dependency.testUtils.DependencyArtifactStubFactory;
31 import org.apache.maven.plugins.dependency.utils.CopyUtil;
32 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
33 import org.eclipse.aether.DefaultRepositorySystemSession;
34 import org.eclipse.aether.RepositorySystem;
35 import org.eclipse.aether.RepositorySystemSession;
36 import org.eclipse.aether.repository.LocalRepository;
37 import org.eclipse.aether.repository.LocalRepositoryManager;
38 import org.sonatype.plexus.build.incremental.DefaultBuildContext;
39
40 public abstract class AbstractDependencyMojoTestCase extends AbstractMojoTestCase {
41
42 protected File testDir;
43
44 protected DependencyArtifactStubFactory stubFactory;
45
46
47
48
49
50
51
52
53
54 protected void setUp() throws Exception {
55
56 super.setUp();
57
58 testDir = Files.createTempDirectory(getTestDirectoryName()).toFile();
59 testDir.deleteOnExit();
60
61 stubFactory = new DependencyArtifactStubFactory(testDir, shouldCreateFiles(), shouldUseFlattenedPath());
62 }
63
64
65
66
67
68
69 protected String getTestDirectoryName() {
70 return "test-dir";
71 }
72
73
74
75
76
77
78 protected boolean shouldCreateFiles() {
79 return true;
80 }
81
82
83
84
85
86
87 protected boolean shouldUseFlattenedPath() {
88 return true;
89 }
90
91
92
93
94
95
96
97 @Override
98 protected void tearDown() throws Exception {
99 if (testDir != null) {
100 FileUtils.deleteDirectory(testDir);
101 assertFalse("Test directory should not exist after cleanup", testDir.exists());
102 }
103 super.tearDown();
104 }
105
106 protected void copyArtifactFile(Artifact sourceArtifact, File destFile) throws MojoExecutionException, IOException {
107 new CopyUtil(new DefaultBuildContext()).copyArtifactFile(sourceArtifact, destFile);
108 }
109
110 protected void installLocalRepository(LegacySupport legacySupport) throws ComponentLookupException {
111 DefaultRepositorySystemSession repoSession =
112 (DefaultRepositorySystemSession) legacySupport.getRepositorySession();
113 RepositorySystem system = lookup(RepositorySystem.class);
114 String directory = stubFactory.getWorkingDir().toString();
115 LocalRepository localRepository = new LocalRepository(directory);
116 LocalRepositoryManager manager = system.newLocalRepositoryManager(repoSession, localRepository);
117 repoSession.setLocalRepositoryManager(manager);
118 }
119
120 protected void installLocalRepository(RepositorySystemSession repoSession) throws ComponentLookupException {
121 RepositorySystem system = lookup(RepositorySystem.class);
122 String directory = stubFactory.getWorkingDir().toString();
123 LocalRepository localRepository = new LocalRepository(directory);
124 LocalRepositoryManager manager = system.newLocalRepositoryManager(repoSession, localRepository);
125 ((DefaultRepositorySystemSession) repoSession).setLocalRepositoryManager(manager);
126 }
127 }