1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.lifecycle;
20
21 import javax.inject.Inject;
22
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 import java.util.stream.Collectors;
29
30 import org.apache.maven.internal.impl.DefaultLifecycleRegistry;
31 import org.apache.maven.internal.impl.DefaultLookup;
32 import org.codehaus.plexus.PlexusContainer;
33 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
34 import org.codehaus.plexus.testing.PlexusTest;
35 import org.junit.jupiter.api.Test;
36
37 import static org.hamcrest.MatcherAssert.assertThat;
38 import static org.hamcrest.Matchers.arrayWithSize;
39 import static org.hamcrest.Matchers.hasSize;
40 import static org.hamcrest.Matchers.is;
41 import static org.mockito.Mockito.mock;
42 import static org.mockito.Mockito.when;
43
44
45
46 @PlexusTest
47 class DefaultLifecyclesTest {
48 @Inject
49 private DefaultLifecycles defaultLifeCycles;
50
51 @Test
52 void testDefaultLifecycles() {
53 final List<Lifecycle> lifecycles = defaultLifeCycles.getLifeCycles();
54 assertThat(lifecycles, hasSize(4));
55 assertThat(DefaultLifecycles.STANDARD_LIFECYCLES, arrayWithSize(4));
56 }
57
58 @Test
59 void testDefaultLifecycle() {
60 final Lifecycle lifecycle = getLifeCycleById("default");
61 assertThat(lifecycle.getId(), is("default"));
62 assertThat(lifecycle.getPhases(), hasSize(23));
63 }
64
65 @Test
66 void testCleanLifecycle() {
67 final Lifecycle lifecycle = getLifeCycleById("clean");
68 assertThat(lifecycle.getId(), is("clean"));
69 assertThat(lifecycle.getPhases(), hasSize(3));
70 }
71
72 @Test
73 void testSiteLifecycle() {
74 final Lifecycle lifecycle = getLifeCycleById("site");
75 assertThat(lifecycle.getId(), is("site"));
76 assertThat(lifecycle.getPhases(), hasSize(4));
77 }
78
79 @Test
80 void testWrapperLifecycle() {
81 final Lifecycle lifecycle = getLifeCycleById("wrapper");
82 assertThat(lifecycle.getId(), is("wrapper"));
83 assertThat(lifecycle.getPhases(), hasSize(1));
84 }
85
86 @Test
87 void testCustomLifecycle() throws ComponentLookupException {
88 List<Lifecycle> myLifecycles = new ArrayList<>();
89 Lifecycle myLifecycle =
90 new Lifecycle("etl", Arrays.asList("extract", "transform", "load"), Collections.emptyMap());
91 myLifecycles.add(myLifecycle);
92 myLifecycles.addAll(defaultLifeCycles.getLifeCycles());
93
94 Map<String, Lifecycle> lifeCycles = myLifecycles.stream().collect(Collectors.toMap(Lifecycle::getId, l -> l));
95 PlexusContainer mockedPlexusContainer = mock(PlexusContainer.class);
96 when(mockedPlexusContainer.lookupMap(Lifecycle.class)).thenReturn(lifeCycles);
97
98 DefaultLifecycles dl = new DefaultLifecycles(
99 new DefaultLifecycleRegistry(
100 List.of(new DefaultLifecycleRegistry.LifecycleWrapperProvider(mockedPlexusContainer))),
101 new DefaultLookup(mockedPlexusContainer));
102
103 assertThat(dl.getLifeCycles().get(0).getId(), is("clean"));
104 assertThat(dl.getLifeCycles().get(1).getId(), is("default"));
105 assertThat(dl.getLifeCycles().get(2).getId(), is("site"));
106 assertThat(dl.getLifeCycles().get(3).getId(), is("wrapper"));
107 assertThat(dl.getLifeCycles().get(4).getId(), is("etl"));
108 }
109
110 private Lifecycle getLifeCycleById(String id) {
111 return defaultLifeCycles.getLifeCycles().stream()
112 .filter(l -> id.equals(l.getId()))
113 .findFirst()
114 .orElseThrow(IllegalArgumentException::new);
115 }
116 }