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 }