1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.internal.impl;
20
21 import org.eclipse.aether.DefaultRepositorySystemSession;
22 import org.eclipse.aether.artifact.Artifact;
23 import org.eclipse.aether.artifact.DefaultArtifact;
24 import org.eclipse.aether.internal.test.util.TestUtils;
25 import org.eclipse.aether.metadata.DefaultMetadata;
26 import org.eclipse.aether.metadata.Metadata;
27 import org.eclipse.aether.repository.RemoteRepository;
28 import org.junit.jupiter.api.Test;
29
30 import static org.junit.jupiter.api.Assertions.*;
31
32
33
34
35 public class DefaultLocalPathPrefixComposerFactoryTest {
36 private final Artifact releaseArtifact = new DefaultArtifact("org.group:artifact:1.0");
37
38 private final Artifact snapshotArtifact = new DefaultArtifact("org.group:artifact:1.0-20220228.180000-1");
39
40 private final Metadata releaseMetadata = new DefaultMetadata(
41 "org.group", "artifact", "1.0", "maven-metadata.xml", Metadata.Nature.RELEASE_OR_SNAPSHOT);
42
43 private final Metadata snapshotMetadata = new DefaultMetadata(
44 "org.group", "artifact", "1.0-SNAPSHOT", "maven-metadata.xml", Metadata.Nature.RELEASE_OR_SNAPSHOT);
45
46 private final Metadata gaMetadata = new DefaultMetadata(
47 "org.group", "artifact", null, "maven-metadata.xml", Metadata.Nature.RELEASE_OR_SNAPSHOT);
48
49 private final Metadata gMetadata =
50 new DefaultMetadata("org.group", null, null, "maven-metadata.xml", Metadata.Nature.RELEASE_OR_SNAPSHOT);
51
52 private final RemoteRepository repository =
53 new RemoteRepository.Builder("my-repo", "default", "https://repo.maven.apache.org/maven2/").build();
54
55 @Test
56 void defaultConfigNoSplitAllNulls() {
57 DefaultRepositorySystemSession session = TestUtils.newSession();
58
59 LocalPathPrefixComposerFactory factory = new DefaultLocalPathPrefixComposerFactory();
60 LocalPathPrefixComposer composer = factory.createComposer(session);
61 assertNotNull(composer);
62
63 String prefix;
64 prefix = composer.getPathPrefixForLocalArtifact(releaseArtifact);
65 assertNull(prefix);
66
67 prefix = composer.getPathPrefixForLocalMetadata(releaseMetadata);
68 assertNull(prefix);
69
70 prefix = composer.getPathPrefixForRemoteArtifact(releaseArtifact, repository);
71 assertNull(prefix);
72
73 prefix = composer.getPathPrefixForRemoteMetadata(releaseMetadata, repository);
74 assertNull(prefix);
75 }
76
77 @Test
78 void splitEnabled() {
79 DefaultRepositorySystemSession session = TestUtils.newSession();
80 session.setConfigProperty(DefaultLocalPathPrefixComposerFactory.CONFIG_PROP_SPLIT, Boolean.TRUE.toString());
81
82 LocalPathPrefixComposerFactory factory = new DefaultLocalPathPrefixComposerFactory();
83 LocalPathPrefixComposer composer = factory.createComposer(session);
84 assertNotNull(composer);
85
86 String prefix;
87 prefix = composer.getPathPrefixForLocalArtifact(releaseArtifact);
88 assertNotNull(prefix);
89 assertEquals("installed", prefix);
90
91 prefix = composer.getPathPrefixForLocalMetadata(releaseMetadata);
92 assertNotNull(prefix);
93 assertEquals("installed", prefix);
94
95 prefix = composer.getPathPrefixForRemoteArtifact(releaseArtifact, repository);
96 assertNotNull(prefix);
97 assertEquals("cached", prefix);
98
99 prefix = composer.getPathPrefixForRemoteMetadata(releaseMetadata, repository);
100 assertNotNull(prefix);
101 assertEquals("cached", prefix);
102 }
103
104 @Test
105 void saneConfig() {
106 DefaultRepositorySystemSession session = TestUtils.newSession();
107 session.setConfigProperty(DefaultLocalPathPrefixComposerFactory.CONFIG_PROP_SPLIT, Boolean.TRUE.toString());
108 session.setConfigProperty(
109 DefaultLocalPathPrefixComposerFactory.CONFIG_PROP_SPLIT_LOCAL, Boolean.TRUE.toString());
110 session.setConfigProperty(
111 DefaultLocalPathPrefixComposerFactory.CONFIG_PROP_SPLIT_REMOTE_REPOSITORY, Boolean.TRUE.toString());
112
113 LocalPathPrefixComposerFactory factory = new DefaultLocalPathPrefixComposerFactory();
114 LocalPathPrefixComposer composer = factory.createComposer(session);
115 assertNotNull(composer);
116
117 String prefix;
118 prefix = composer.getPathPrefixForLocalArtifact(releaseArtifact);
119 assertNotNull(prefix);
120 assertEquals("installed/releases", prefix);
121
122 prefix = composer.getPathPrefixForLocalArtifact(snapshotArtifact);
123 assertNotNull(prefix);
124 assertEquals("installed/snapshots", prefix);
125
126 prefix = composer.getPathPrefixForLocalMetadata(releaseMetadata);
127 assertNotNull(prefix);
128 assertEquals("installed/releases", prefix);
129
130 prefix = composer.getPathPrefixForLocalMetadata(snapshotMetadata);
131 assertNotNull(prefix);
132 assertEquals("installed/snapshots", prefix);
133
134 prefix = composer.getPathPrefixForLocalMetadata(gaMetadata);
135 assertNotNull(prefix);
136 assertEquals("installed/releases", prefix);
137
138 prefix = composer.getPathPrefixForLocalMetadata(gMetadata);
139 assertNotNull(prefix);
140 assertEquals("installed/releases", prefix);
141
142 prefix = composer.getPathPrefixForRemoteArtifact(releaseArtifact, repository);
143 assertNotNull(prefix);
144 assertEquals("cached/my-repo", prefix);
145
146 prefix = composer.getPathPrefixForRemoteArtifact(snapshotArtifact, repository);
147 assertNotNull(prefix);
148 assertEquals("cached/my-repo", prefix);
149
150 prefix = composer.getPathPrefixForRemoteMetadata(releaseMetadata, repository);
151 assertNotNull(prefix);
152 assertEquals("cached/my-repo", prefix);
153
154 prefix = composer.getPathPrefixForRemoteMetadata(snapshotMetadata, repository);
155 assertNotNull(prefix);
156 assertEquals("cached/my-repo", prefix);
157
158 prefix = composer.getPathPrefixForRemoteMetadata(gaMetadata, repository);
159 assertNotNull(prefix);
160 assertEquals("cached/my-repo", prefix);
161
162 prefix = composer.getPathPrefixForRemoteMetadata(gMetadata, repository);
163 assertNotNull(prefix);
164 assertEquals("cached/my-repo", prefix);
165 }
166
167 @Test
168 void fullConfig() {
169 DefaultRepositorySystemSession session = TestUtils.newSession();
170 session.setConfigProperty(DefaultLocalPathPrefixComposerFactory.CONFIG_PROP_SPLIT, Boolean.TRUE.toString());
171 session.setConfigProperty(
172 DefaultLocalPathPrefixComposerFactory.CONFIG_PROP_SPLIT_LOCAL, Boolean.TRUE.toString());
173 session.setConfigProperty(
174 DefaultLocalPathPrefixComposerFactory.CONFIG_PROP_SPLIT_REMOTE, Boolean.TRUE.toString());
175 session.setConfigProperty(
176 DefaultLocalPathPrefixComposerFactory.CONFIG_PROP_SPLIT_REMOTE_REPOSITORY, Boolean.TRUE.toString());
177
178 LocalPathPrefixComposerFactory factory = new DefaultLocalPathPrefixComposerFactory();
179 LocalPathPrefixComposer composer = factory.createComposer(session);
180 assertNotNull(composer);
181
182 String prefix;
183 prefix = composer.getPathPrefixForLocalArtifact(releaseArtifact);
184 assertNotNull(prefix);
185 assertEquals("installed/releases", prefix);
186
187 prefix = composer.getPathPrefixForLocalArtifact(snapshotArtifact);
188 assertNotNull(prefix);
189 assertEquals("installed/snapshots", prefix);
190
191 prefix = composer.getPathPrefixForLocalMetadata(releaseMetadata);
192 assertNotNull(prefix);
193 assertEquals("installed/releases", prefix);
194
195 prefix = composer.getPathPrefixForLocalMetadata(snapshotMetadata);
196 assertNotNull(prefix);
197 assertEquals("installed/snapshots", prefix);
198
199 prefix = composer.getPathPrefixForLocalMetadata(gaMetadata);
200 assertNotNull(prefix);
201 assertEquals("installed/releases", prefix);
202
203 prefix = composer.getPathPrefixForLocalMetadata(gMetadata);
204 assertNotNull(prefix);
205 assertEquals("installed/releases", prefix);
206
207 prefix = composer.getPathPrefixForRemoteArtifact(releaseArtifact, repository);
208 assertNotNull(prefix);
209 assertEquals("cached/my-repo/releases", prefix);
210
211 prefix = composer.getPathPrefixForRemoteArtifact(snapshotArtifact, repository);
212 assertNotNull(prefix);
213 assertEquals("cached/my-repo/snapshots", prefix);
214
215 prefix = composer.getPathPrefixForRemoteMetadata(releaseMetadata, repository);
216 assertNotNull(prefix);
217 assertEquals("cached/my-repo/releases", prefix);
218
219 prefix = composer.getPathPrefixForRemoteMetadata(snapshotMetadata, repository);
220 assertNotNull(prefix);
221 assertEquals("cached/my-repo/snapshots", prefix);
222
223 prefix = composer.getPathPrefixForRemoteMetadata(gaMetadata, repository);
224 assertNotNull(prefix);
225 assertEquals("cached/my-repo/releases", prefix);
226
227 prefix = composer.getPathPrefixForRemoteMetadata(gMetadata, repository);
228 assertNotNull(prefix);
229 assertEquals("cached/my-repo/releases", prefix);
230 }
231 }