1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.internal.transformation;
20
21 import javax.inject.Inject;
22
23 import java.net.MalformedURLException;
24 import java.util.List;
25
26 import org.apache.maven.SimpleLookup;
27 import org.apache.maven.execution.DefaultMavenExecutionRequest;
28 import org.apache.maven.execution.DefaultMavenExecutionResult;
29 import org.apache.maven.execution.MavenSession;
30 import org.apache.maven.internal.impl.DefaultRepositoryFactory;
31 import org.apache.maven.internal.impl.DefaultSession;
32 import org.apache.maven.internal.impl.InternalSession;
33 import org.codehaus.plexus.PlexusContainer;
34 import org.codehaus.plexus.testing.PlexusTest;
35 import org.eclipse.aether.DefaultRepositorySystemSession;
36 import org.eclipse.aether.RepositoryListener;
37 import org.eclipse.aether.RepositorySystem;
38 import org.eclipse.aether.RepositorySystemSession;
39 import org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider;
40 import org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager;
41 import org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer;
42 import org.eclipse.aether.repository.LocalRepository;
43 import org.eclipse.aether.repository.RemoteRepository;
44 import org.eclipse.aether.transfer.TransferListener;
45 import org.junit.jupiter.api.BeforeEach;
46 import org.mockito.Mockito;
47
48 import static org.codehaus.plexus.testing.PlexusExtension.getTestFile;
49
50 @PlexusTest
51 public abstract class AbstractRepositoryTestCase {
52 @Inject
53 protected RepositorySystem system;
54
55 @Inject
56 protected PlexusContainer container;
57
58 protected RepositorySystemSession session;
59
60 @BeforeEach
61 public void setUp() throws Exception {
62 session = newMavenRepositorySystemSession(system);
63 }
64
65 protected PlexusContainer getContainer() {
66 return container;
67 }
68
69 public static RepositorySystemSession newMavenRepositorySystemSession(RepositorySystem system) {
70 DefaultRepositorySystemSession rsession = new DefaultRepositorySystemSession(h -> false);
71
72 LocalRepository localRepo = new LocalRepository("target/local-repo");
73 rsession.setLocalRepositoryManager(system.newLocalRepositoryManager(rsession, localRepo));
74
75 rsession.setTransferListener(Mockito.mock(TransferListener.class));
76 rsession.setRepositoryListener(Mockito.mock(RepositoryListener.class));
77
78 DefaultMavenExecutionRequest request = new DefaultMavenExecutionRequest();
79 MavenSession mavenSession = new MavenSession(rsession, request, new DefaultMavenExecutionResult());
80 DefaultSession session = new DefaultSession(
81 mavenSession,
82 null,
83 null,
84 null,
85 new SimpleLookup(List.of(new DefaultRepositoryFactory(new DefaultRemoteRepositoryManager(
86 new DefaultUpdatePolicyAnalyzer(), new DefaultChecksumPolicyProvider())))),
87 null);
88 InternalSession.associate(rsession, session);
89
90 return rsession;
91 }
92
93 public static RemoteRepository newTestRepository() throws MalformedURLException {
94 return new RemoteRepository.Builder(
95 "repo",
96 "default",
97 getTestFile("target/test-classes/repo").toURI().toURL().toString())
98 .build();
99 }
100 }