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