1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.toolchain;
20
21 import java.util.ArrayList;
22 import java.util.HashMap;
23 import java.util.List;
24 import java.util.Map;
25
26 import org.apache.maven.execution.DefaultMavenExecutionRequest;
27 import org.apache.maven.execution.MavenExecutionRequest;
28 import org.apache.maven.execution.MavenSession;
29 import org.apache.maven.toolchain.model.ToolchainModel;
30 import org.junit.jupiter.api.BeforeEach;
31 import org.junit.jupiter.api.Test;
32 import org.mockito.InjectMocks;
33 import org.mockito.Mock;
34 import org.mockito.MockitoAnnotations;
35 import org.slf4j.Logger;
36
37 import static org.junit.jupiter.api.Assertions.assertEquals;
38 import static org.mockito.ArgumentMatchers.anyString;
39 import static org.mockito.Mockito.mock;
40 import static org.mockito.Mockito.never;
41 import static org.mockito.Mockito.verify;
42 import static org.mockito.Mockito.when;
43
44 class DefaultToolchainManagerPrivateTest {
45
46 @Mock
47 private Logger logger;
48
49 @InjectMocks
50 private DefaultToolchainManagerPrivate toolchainManager;
51
52 @Mock
53 private ToolchainFactory toolchainFactory_basicType;
54
55 @Mock
56 private ToolchainFactory toolchainFactory_rareType;
57
58 @BeforeEach
59 void setUp() {
60
61 MockitoAnnotations.initMocks(this);
62
63 Map<String, ToolchainFactory> factories = new HashMap<>();
64 factories.put("basic", toolchainFactory_basicType);
65 factories.put("rare", toolchainFactory_rareType);
66 toolchainManager = new DefaultToolchainManagerPrivate(factories, logger);
67 }
68
69 @Test
70 void testToolchainsForAvailableType() throws Exception {
71
72 MavenSession session = mock(MavenSession.class);
73 MavenExecutionRequest req = new DefaultMavenExecutionRequest();
74 when(session.getRequest()).thenReturn(req);
75
76 ToolchainPrivate basicToolchain = mock(ToolchainPrivate.class);
77 when(toolchainFactory_basicType.createDefaultToolchain()).thenReturn(basicToolchain);
78 ToolchainPrivate rareToolchain = mock(ToolchainPrivate.class);
79 when(toolchainFactory_rareType.createDefaultToolchain()).thenReturn(rareToolchain);
80
81
82 ToolchainPrivate[] toolchains = toolchainManager.getToolchainsForType("basic", session);
83
84
85 verify(logger, never()).error(anyString());
86 assertEquals(1, toolchains.length);
87 }
88
89 @Test
90 void testToolchainsForUnknownType() throws Exception {
91
92 MavenSession session = mock(MavenSession.class);
93 MavenExecutionRequest req = new DefaultMavenExecutionRequest();
94 when(session.getRequest()).thenReturn(req);
95
96 ToolchainPrivate basicToolchain = mock(ToolchainPrivate.class);
97 when(toolchainFactory_basicType.createDefaultToolchain()).thenReturn(basicToolchain);
98 ToolchainPrivate rareToolchain = mock(ToolchainPrivate.class);
99 when(toolchainFactory_rareType.createDefaultToolchain()).thenReturn(rareToolchain);
100
101
102 ToolchainPrivate[] toolchains = toolchainManager.getToolchainsForType("unknown", session);
103
104
105 verify(logger).error("Missing toolchain factory for type: unknown. Possibly caused by misconfigured project.");
106 assertEquals(0, toolchains.length);
107 }
108
109 @Test
110 void testToolchainsForConfiguredType() throws Exception {
111
112 MavenSession session = mock(MavenSession.class);
113 MavenExecutionRequest req = new DefaultMavenExecutionRequest();
114 when(session.getRequest()).thenReturn(req);
115 Map<String, List<ToolchainModel>> groupedToolchains = new HashMap<>();
116 req.setToolchains(groupedToolchains);
117
118 List<ToolchainModel> basicToolchains = new ArrayList<>();
119 ToolchainModel basicToolchainModel = new ToolchainModel();
120 basicToolchainModel.setType("basic");
121 basicToolchains.add(basicToolchainModel);
122 basicToolchains.add(basicToolchainModel);
123 groupedToolchains.put("basic", basicToolchains);
124
125 List<ToolchainModel> rareToolchains = new ArrayList<>();
126 ToolchainModel rareToolchainModel = new ToolchainModel();
127 rareToolchainModel.setType("rare");
128 rareToolchains.add(rareToolchainModel);
129 groupedToolchains.put("rare", rareToolchains);
130
131
132 ToolchainPrivate[] toolchains = toolchainManager.getToolchainsForType("basic", session);
133
134
135 verify(logger, never()).error(anyString());
136 assertEquals(2, toolchains.length);
137 }
138
139 @Test
140 void testMisconfiguredToolchain() throws Exception {
141
142 MavenSession session = mock(MavenSession.class);
143 MavenExecutionRequest req = new DefaultMavenExecutionRequest();
144 when(session.getRequest()).thenReturn(req);
145
146
147 ToolchainPrivate[] basics = toolchainManager.getToolchainsForType("basic", session);
148
149
150 assertEquals(0, basics.length);
151 }
152 }