1 package org.apache.maven.plugin.surefire.report;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.PrintStream;
23 import java.nio.CharBuffer;
24 import java.nio.charset.CharacterCodingException;
25 import java.nio.charset.Charset;
26
27 import org.apache.maven.surefire.report.ReportEntry;
28
29 import static java.nio.ByteBuffer.wrap;
30 import static java.nio.charset.Charset.defaultCharset;
31 import static java.util.Objects.requireNonNull;
32
33
34
35
36
37
38
39
40
41 public class DirectConsoleOutput
42 implements TestcycleConsoleOutputReceiver
43 {
44 private static final Charset STANDARD_CHARSET = defaultCharset();
45
46 private final PrintStream sout;
47
48 private final PrintStream serr;
49
50 public DirectConsoleOutput( PrintStream sout, PrintStream serr )
51 {
52 this.sout = requireNonNull( sout );
53 this.serr = requireNonNull( serr );
54 }
55
56 @Override
57 public void writeTestOutput( byte[] buf, int off, int len, boolean stdout )
58 {
59 PrintStream stream = stdout ? sout : serr;
60
61 synchronized ( stream )
62 {
63 try
64 {
65 CharBuffer decode = STANDARD_CHARSET.newDecoder().decode( wrap( buf, off, len ) );
66 stream.append( decode );
67 }
68 catch ( CharacterCodingException e )
69 {
70 stream.write( buf, off, len );
71 }
72 }
73 }
74
75 @Override
76 public void testSetStarting( ReportEntry reportEntry )
77 {
78 }
79
80 @Override
81 public void testSetCompleted( ReportEntry report )
82 {
83 }
84
85 @Override
86 public void close()
87 {
88 }
89 }