1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugins.invoker;
20
21 import java.io.File;
22 import java.io.IOException;
23 import java.util.ArrayList;
24 import java.util.Arrays;
25 import java.util.Collections;
26 import java.util.List;
27 import java.util.Map;
28
29 import org.apache.maven.plugins.invoker.AbstractInvokerMojo.ToolchainPrivateManager;
30 import org.apache.maven.toolchain.ToolchainPrivate;
31 import org.junit.Test;
32
33 import static org.assertj.core.api.Assertions.assertThat;
34 import static org.assertj.core.api.Assertions.assertThatCode;
35 import static org.junit.Assert.assertEquals;
36 import static org.junit.Assert.assertFalse;
37 import static org.junit.Assert.assertTrue;
38 import static org.mockito.Mockito.isA;
39 import static org.mockito.Mockito.mock;
40 import static org.mockito.Mockito.when;
41
42
43
44
45
46
47 public class SelectorUtilsTest {
48
49 @Test
50 public void testParseList() {
51 List<String> includes = new ArrayList<>();
52 List<String> excludes = new ArrayList<>();
53
54 SelectorUtils.parseList(null, includes, excludes);
55
56 SelectorUtils.parseList(" 1.5, !1.4, 1.6+ ", includes, excludes);
57 assertEquals(Arrays.asList("1.5", "1.6+"), includes);
58 assertEquals(Collections.singletonList("1.4"), excludes);
59 }
60
61 @Test
62 public void testParseVersion() {
63 assertEquals(Arrays.asList(1, 6, 0, 12), SelectorUtils.parseVersion("1.6.0_12"));
64
65 assertEquals(Arrays.asList(1, 6, 0, 12), SelectorUtils.parseVersion("1.6.0_12+"));
66 assertEquals(Arrays.asList(1, 6, 0, 12), SelectorUtils.parseVersion("1.6.0_12-"));
67 }
68
69 @Test
70 public void testCompareVersions() {
71 assertTrue(SelectorUtils.compareVersions(Arrays.asList(1, 6), Arrays.asList(1, 6)) == 0);
72
73 assertTrue(SelectorUtils.compareVersions(Arrays.asList(1, 5), Arrays.asList(1, 6)) < 0);
74 assertTrue(SelectorUtils.compareVersions(Arrays.asList(1, 6), Arrays.asList(1, 5)) > 0);
75
76 assertTrue(SelectorUtils.compareVersions(Collections.singletonList(1), Arrays.asList(1, 6)) < 0);
77 assertTrue(SelectorUtils.compareVersions(Arrays.asList(1, 6), Collections.singletonList(1)) > 0);
78 }
79
80 @Test
81 public void testIsMatchingJre() {
82
83 assertFalse(SelectorUtils.isJreVersion(Arrays.asList(1, 4, 2, 8), "1.5"));
84 assertTrue(SelectorUtils.isJreVersion(Arrays.asList(1, 5), "1.5"));
85 assertTrue(SelectorUtils.isJreVersion(Arrays.asList(1, 5, 9), "1.5"));
86 assertFalse(SelectorUtils.isJreVersion(Arrays.asList(1, 6), "1.5"));
87
88 assertFalse(SelectorUtils.isJreVersion(Arrays.asList(1, 4, 2, 8), "1.5+"));
89 assertTrue(SelectorUtils.isJreVersion(Arrays.asList(1, 5), "1.5+"));
90 assertTrue(SelectorUtils.isJreVersion(Arrays.asList(1, 5, 9), "1.5+"));
91 assertTrue(SelectorUtils.isJreVersion(Arrays.asList(1, 6), "1.5+"));
92
93 assertTrue(SelectorUtils.isJreVersion(Arrays.asList(1, 4, 2, 8), "1.5-"));
94 assertFalse(SelectorUtils.isJreVersion(Arrays.asList(1, 5), "1.5-"));
95 assertFalse(SelectorUtils.isJreVersion(Arrays.asList(1, 5, 9), "1.5-"));
96 assertFalse(SelectorUtils.isJreVersion(Arrays.asList(1, 6), "1.5-"));
97
98 assertTrue(SelectorUtils.isJreVersion((String) null, "1.5"));
99 assertTrue(SelectorUtils.isJreVersion("", "1.5"));
100 }
101
102 @Test
103 public void testIsMatchingToolchain() throws Exception {
104 InvokerToolchain openJdk9 = new InvokerToolchain("jdk");
105 openJdk9.addProvides("version", "9");
106 openJdk9.addProvides("vendor", "openJDK");
107
108 InvokerToolchain maven360 = new InvokerToolchain("maven");
109 openJdk9.addProvides("version", "3.6.0");
110
111 ToolchainPrivateManager toolchainPrivateManager = mock(ToolchainPrivateManager.class);
112 ToolchainPrivate jdkMatching = mock(ToolchainPrivate.class);
113 when(jdkMatching.matchesRequirements(isA(Map.class))).thenReturn(true);
114 when(jdkMatching.getType()).thenReturn("jdk");
115
116 ToolchainPrivate jdkMismatch = mock(ToolchainPrivate.class);
117 when(jdkMismatch.getType()).thenReturn("jdk");
118
119 when(toolchainPrivateManager.getToolchainPrivates("jdk")).thenReturn(new ToolchainPrivate[] {jdkMatching});
120 assertTrue(SelectorUtils.isToolchain(toolchainPrivateManager, Collections.singleton(openJdk9)));
121
122 when(toolchainPrivateManager.getToolchainPrivates("jdk")).thenReturn(new ToolchainPrivate[] {jdkMismatch});
123 assertFalse(SelectorUtils.isToolchain(toolchainPrivateManager, Collections.singleton(openJdk9)));
124
125 when(toolchainPrivateManager.getToolchainPrivates("jdk"))
126 .thenReturn(new ToolchainPrivate[] {jdkMatching, jdkMismatch, jdkMatching});
127 assertTrue(SelectorUtils.isToolchain(toolchainPrivateManager, Collections.singleton(openJdk9)));
128
129 when(toolchainPrivateManager.getToolchainPrivates("jdk")).thenReturn(new ToolchainPrivate[0]);
130 assertFalse(SelectorUtils.isToolchain(toolchainPrivateManager, Collections.singleton(openJdk9)));
131
132 when(toolchainPrivateManager.getToolchainPrivates("jdk")).thenReturn(new ToolchainPrivate[] {jdkMatching});
133 when(toolchainPrivateManager.getToolchainPrivates("maven")).thenReturn(new ToolchainPrivate[0]);
134 assertFalse(SelectorUtils.isToolchain(toolchainPrivateManager, Arrays.asList(openJdk9, maven360)));
135 }
136
137 @Test
138 public void mavenVersionForNotExistingMavenHomeThrowException() {
139 File mavenHome = new File("not-existing-path");
140
141 assertThatCode(() -> SelectorUtils.getMavenVersion(mavenHome))
142 .isExactlyInstanceOf(IllegalArgumentException.class)
143 .hasMessage("Invalid Maven home installation directory: not-existing-path");
144 }
145
146 @Test
147 public void mavenVersionFromMavenHome() throws IOException {
148 File mavenHome = new File(System.getProperty("maven.home"));
149
150 String mavenVersion = SelectorUtils.getMavenVersion(mavenHome);
151
152 assertThat(mavenVersion).isNotBlank();
153 }
154 }