View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.plugin.surefire.booterclient;
20  
21  import java.util.ArrayList;
22  import java.util.List;
23  import java.util.concurrent.atomic.AtomicInteger;
24  
25  import org.apache.maven.surefire.api.report.ReportEntry;
26  import org.apache.maven.surefire.api.report.TestOutputReportEntry;
27  import org.apache.maven.surefire.api.report.TestReportListener;
28  import org.apache.maven.surefire.api.report.TestSetReportEntry;
29  
30  /**
31   * Internal tests use only.
32   */
33  public class MockReporter implements TestReportListener<TestOutputReportEntry> {
34      private final List<String> events = new ArrayList<>();
35  
36      private final List<Object> data = new ArrayList<>();
37  
38      public static final String SET_STARTING = "SET_STARTED";
39  
40      public static final String SET_COMPLETED = "SET_COMPLETED";
41  
42      public static final String TEST_STARTING = "TEST_STARTED";
43  
44      public static final String TEST_SUCCEEDED = "TEST_COMPLETED";
45  
46      public static final String TEST_FAILED = "TEST_FAILED";
47  
48      public static final String TEST_ERROR = "TEST_ERROR";
49  
50      public static final String TEST_SKIPPED = "TEST_SKIPPED";
51  
52      public static final String TEST_ASSUMPTION_FAIL = "TEST_ASSUMPTION_SKIPPED";
53  
54      public static final String CONSOLE_INFO = "CONSOLE_INFO";
55  
56      public static final String CONSOLE_WARN = "CONSOLE_WARN";
57  
58      public static final String CONSOLE_DEBUG = "CONSOLE_DEBUG";
59  
60      public static final String CONSOLE_ERR = "CONSOLE_ERR";
61  
62      public static final String STDOUT = "STDOUT";
63  
64      public static final String STDERR = "STDERR";
65  
66      private final AtomicInteger testSucceeded = new AtomicInteger();
67  
68      private final AtomicInteger testIgnored = new AtomicInteger();
69  
70      private final AtomicInteger testFailed = new AtomicInteger();
71  
72      @Override
73      public void testSetStarting(TestSetReportEntry report) {
74          events.add(SET_STARTING);
75          data.add(report);
76      }
77  
78      @Override
79      public void testSetCompleted(TestSetReportEntry report) {
80          events.add(SET_COMPLETED);
81          data.add(report);
82      }
83  
84      @Override
85      public void testStarting(ReportEntry report) {
86          events.add(TEST_STARTING);
87          data.add(report);
88      }
89  
90      @Override
91      public void testSucceeded(ReportEntry report) {
92          events.add(TEST_SUCCEEDED);
93          testSucceeded.incrementAndGet();
94          data.add(report);
95      }
96  
97      @Override
98      public void testError(ReportEntry report) {
99          events.add(TEST_ERROR);
100         data.add(report);
101         testFailed.incrementAndGet();
102     }
103 
104     @Override
105     public void testFailed(ReportEntry report) {
106         events.add(TEST_FAILED);
107         data.add(report);
108         testFailed.incrementAndGet();
109     }
110 
111     @Override
112     public void testSkipped(ReportEntry report) {
113         events.add(TEST_SKIPPED);
114         data.add(report);
115         testIgnored.incrementAndGet();
116     }
117 
118     @Override
119     public void testExecutionSkippedByUser() {}
120 
121     public List<String> getEvents() {
122         return events;
123     }
124 
125     public List getData() {
126         return data;
127     }
128 
129     public String getFirstEvent() {
130         return events.get(0);
131     }
132 
133     public ReportEntry getFirstData() {
134         return (ReportEntry) data.get(0);
135     }
136 
137     @Override
138     public void testAssumptionFailure(ReportEntry report) {
139         events.add(TEST_ASSUMPTION_FAIL);
140         data.add(report);
141         testIgnored.incrementAndGet();
142     }
143 
144     @Override
145     public boolean isDebugEnabled() {
146         return true;
147     }
148 
149     @Override
150     public void debug(String message) {
151         events.add(CONSOLE_DEBUG);
152         data.add(message);
153     }
154 
155     @Override
156     public boolean isInfoEnabled() {
157         return true;
158     }
159 
160     @Override
161     public void info(String message) {
162         events.add(CONSOLE_INFO);
163         data.add(message);
164     }
165 
166     @Override
167     public boolean isWarnEnabled() {
168         return true;
169     }
170 
171     @Override
172     public void warning(String message) {
173         events.add(CONSOLE_WARN);
174         data.add(message);
175     }
176 
177     @Override
178     public boolean isErrorEnabled() {
179         return true;
180     }
181 
182     @Override
183     public void error(String message) {
184         events.add(CONSOLE_ERR);
185         data.add(message);
186     }
187 
188     @Override
189     public void error(String message, Throwable t) {
190         error(message);
191     }
192 
193     @Override
194     public void error(Throwable t) {
195         error(t.getLocalizedMessage());
196     }
197 
198     @Override
199     public void writeTestOutput(TestOutputReportEntry reportEntry) {
200         events.add(reportEntry.isStdOut() ? STDOUT : STDERR);
201         String output = reportEntry.getLog();
202         data.add(reportEntry.isNewLine() ? output + "\n" : output);
203     }
204 }