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