1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugin.surefire.extensions;
20
21 import java.io.File;
22 import java.io.PrintStream;
23
24 import org.apache.maven.plugin.surefire.extensions.junit5.JUnit5ConsoleOutputReporter;
25 import org.apache.maven.plugin.surefire.report.ConsoleOutputFileReporter;
26 import org.apache.maven.plugin.surefire.report.DirectConsoleOutput;
27 import org.apache.maven.surefire.extensions.ConsoleOutputReportEventListener;
28 import org.apache.maven.surefire.extensions.ConsoleOutputReporter;
29 import org.junit.Test;
30
31 import static org.assertj.core.api.Assertions.assertThat;
32 import static org.powermock.reflect.Whitebox.getInternalState;
33
34
35
36
37 public class ConsoleOutputReporterTest {
38 @Test
39 public void shouldCloneConsoleReporter() {
40 SurefireConsoleOutputReporter extension = new SurefireConsoleOutputReporter();
41 extension.setDisable(true);
42 extension.setEncoding("ISO-8859-1");
43 ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
44 Object clone = extension.clone(classLoader);
45 assertThat(clone).isNotSameAs(extension);
46 assertThat(clone).isInstanceOf(SurefireConsoleOutputReporter.class);
47 assertThat(clone.toString()).isEqualTo("SurefireConsoleOutputReporter{disable=true, encoding=ISO-8859-1}");
48 assertThat(((SurefireConsoleOutputReporter) clone).isDisable()).isTrue();
49 assertThat(((SurefireConsoleOutputReporter) clone).getEncoding()).isEqualTo("ISO-8859-1");
50 }
51
52 @Test
53 public void shouldAssertToStringConsoleReporter() {
54 SurefireConsoleOutputReporter extension = new SurefireConsoleOutputReporter();
55 assertThat(extension.toString()).isEqualTo("SurefireConsoleOutputReporter{disable=false, encoding=UTF-8}");
56 }
57
58 @Test
59 public void shouldCreateConsoleListener() {
60 ConsoleOutputReporter extension = new SurefireConsoleOutputReporter();
61
62 ConsoleOutputReportEventListener listener1 = extension.createListener(System.out, System.err);
63 assertThat(listener1).isInstanceOf(DirectConsoleOutput.class);
64 assertThat((PrintStream) getInternalState(listener1, "out")).isSameAs(System.out);
65 assertThat((PrintStream) getInternalState(listener1, "err")).isSameAs(System.err);
66
67 File target = new File(System.getProperty("user.dir"), "target");
68 File reportsDirectory = new File(target, "surefire-reports");
69 String reportNameSuffix = "suffix";
70 boolean usePhrasedFileName = false;
71 Integer forkNumber = 1;
72 String encoding = "ISO-8859-2";
73 extension.setEncoding(encoding);
74 ConsoleOutputReportEventListener listener2 =
75 extension.createListener(reportsDirectory, reportNameSuffix, forkNumber);
76 assertThat(listener2).isInstanceOf(ConsoleOutputFileReporter.class);
77 assertThat((File) getInternalState(listener2, "reportsDirectory")).isSameAs(reportsDirectory);
78 assertThat((String) getInternalState(listener2, "reportNameSuffix")).isSameAs(reportNameSuffix);
79 assertThat((boolean) getInternalState(listener2, "usePhrasedFileName")).isEqualTo(usePhrasedFileName);
80 assertThat((Integer) getInternalState(listener2, "forkNumber")).isSameAs(forkNumber);
81 assertThat((String) getInternalState(listener2, "encoding")).isSameAs(encoding);
82 assertThat((String) getInternalState(listener2, "reportEntryName")).isNull();
83 }
84
85 @Test
86 public void shouldCloneJUnit5ConsoleReporter() {
87 JUnit5ConsoleOutputReporter extension = new JUnit5ConsoleOutputReporter();
88 extension.setDisable(true);
89 extension.setEncoding("ISO-8859-1");
90 extension.setUsePhrasedFileName(true);
91 ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
92 Object clone = extension.clone(classLoader);
93 assertThat(clone).isNotSameAs(extension);
94 assertThat(clone).isInstanceOf(JUnit5ConsoleOutputReporter.class);
95 assertThat(clone.toString())
96 .isEqualTo("JUnit5ConsoleOutputReporter{disable=true, encoding=ISO-8859-1, usePhrasedFileName=true}");
97 assertThat(((JUnit5ConsoleOutputReporter) clone).isDisable()).isTrue();
98 assertThat(((JUnit5ConsoleOutputReporter) clone).getEncoding()).isEqualTo("ISO-8859-1");
99 assertThat(((JUnit5ConsoleOutputReporter) clone).isUsePhrasedFileName()).isTrue();
100 }
101
102 @Test
103 public void shouldAssertToStringJUnit5ConsoleReporter() {
104 JUnit5ConsoleOutputReporter extension = new JUnit5ConsoleOutputReporter();
105 assertThat(extension.toString())
106 .isEqualTo("JUnit5ConsoleOutputReporter{disable=false, encoding=UTF-8, usePhrasedFileName=false}");
107 }
108
109 @Test
110 public void shouldCreateJUnit5ConsoleListener() {
111 JUnit5ConsoleOutputReporter extension = new JUnit5ConsoleOutputReporter();
112
113 ConsoleOutputReportEventListener listener1 = extension.createListener(System.out, System.err);
114 assertThat(listener1).isInstanceOf(DirectConsoleOutput.class);
115 assertThat((PrintStream) getInternalState(listener1, "out")).isSameAs(System.out);
116 assertThat((PrintStream) getInternalState(listener1, "err")).isSameAs(System.err);
117
118 File target = new File(System.getProperty("user.dir"), "target");
119 File reportsDirectory = new File(target, "surefire-reports");
120 String reportNameSuffix = "suffix";
121 boolean usePhrasedFileName = true;
122 Integer forkNumber = 1;
123 String encoding = "ISO-8859-1";
124 extension.setEncoding(encoding);
125 extension.setUsePhrasedFileName(usePhrasedFileName);
126 ConsoleOutputReportEventListener listener2 =
127 extension.createListener(reportsDirectory, reportNameSuffix, forkNumber);
128 assertThat(listener2).isInstanceOf(ConsoleOutputFileReporter.class);
129 assertThat((File) getInternalState(listener2, "reportsDirectory")).isSameAs(reportsDirectory);
130 assertThat((String) getInternalState(listener2, "reportNameSuffix")).isSameAs(reportNameSuffix);
131 assertThat((boolean) getInternalState(listener2, "usePhrasedFileName")).isEqualTo(usePhrasedFileName);
132 assertThat((Integer) getInternalState(listener2, "forkNumber")).isSameAs(forkNumber);
133 assertThat((String) getInternalState(listener2, "encoding")).isSameAs(encoding);
134 assertThat((String) getInternalState(listener2, "reportEntryName")).isNull();
135 }
136 }