View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
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 }