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.shared.scriptinterpreter;
20  
21  import java.io.File;
22  import java.io.IOException;
23  import java.nio.file.Files;
24  
25  import org.junit.jupiter.api.Test;
26  
27  import static org.junit.jupiter.api.Assertions.assertEquals;
28  import static org.junit.jupiter.api.Assertions.assertNull;
29  import static org.junit.jupiter.api.Assertions.assertTrue;
30  
31  /**
32   * FileLoggerTest
33   */
34  public class FileLoggerTest {
35  
36      public static final String EXPECTED_LOG = "Test1" + System.lineSeparator() + "Test2" + System.lineSeparator();
37  
38      @Test
39      public void nullOutputFileNoMirror() throws IOException {
40          try (FileLogger fileLogger = new FileLogger(null)) {
41              fileLogger.consumeLine("Test1");
42              fileLogger.getPrintStream().println("Test2");
43              fileLogger.getPrintStream().flush();
44  
45              assertNull(fileLogger.getOutputFile());
46          }
47      }
48  
49      @Test
50      public void nullOutputFileWithMirror() throws IOException {
51          TestMirrorHandler mirrorHandler = new TestMirrorHandler();
52  
53          try (FileLogger fileLogger = new FileLogger(null, mirrorHandler)) {
54              fileLogger.consumeLine("Test1");
55              fileLogger.getPrintStream().println("Test2");
56              fileLogger.getPrintStream().flush();
57  
58              assertNull(fileLogger.getOutputFile());
59          }
60  
61          assertEquals(EXPECTED_LOG, mirrorHandler.getLoggedMessage());
62      }
63  
64      @Test
65      public void nullOutputFileWithMirrorWriteByte() throws IOException {
66          TestMirrorHandler mirrorHandler = new TestMirrorHandler();
67  
68          try (FileLogger fileLogger = new FileLogger(null, mirrorHandler)) {
69              fileLogger.getPrintStream().write('A');
70              fileLogger.getPrintStream().flush();
71  
72              assertNull(fileLogger.getOutputFile());
73          }
74  
75          assertEquals("A" + System.lineSeparator(), mirrorHandler.getLoggedMessage());
76      }
77  
78      @Test
79      public void outputFileNoMirror() throws IOException {
80          File outputFile = new File("target/test.log");
81          if (outputFile.exists()) {
82              outputFile.delete();
83          }
84  
85          try (FileLogger fileLogger = new FileLogger(outputFile)) {
86              fileLogger.consumeLine("Test1");
87              fileLogger.getPrintStream().println("Test2");
88              fileLogger.getPrintStream().flush();
89  
90              assertEquals(outputFile, fileLogger.getOutputFile());
91          }
92  
93          assertTrue(outputFile.exists());
94          assertEquals(EXPECTED_LOG, new String(Files.readAllBytes(outputFile.toPath())));
95      }
96  
97      @Test
98      public void outputFileWithMirror() throws IOException {
99          File outputFile = new File("target/test.log");
100         if (outputFile.exists()) {
101             outputFile.delete();
102         }
103         TestMirrorHandler mirrorHandler = new TestMirrorHandler();
104 
105         try (FileLogger fileLogger = new FileLogger(outputFile, mirrorHandler)) {
106             fileLogger.consumeLine("Test1");
107             fileLogger.getPrintStream().println("Test2");
108             fileLogger.getPrintStream().flush();
109 
110             assertEquals(outputFile, fileLogger.getOutputFile());
111         }
112 
113         assertEquals(EXPECTED_LOG, mirrorHandler.getLoggedMessage());
114 
115         assertTrue(outputFile.exists());
116         assertEquals(EXPECTED_LOG, new String(Files.readAllBytes(outputFile.toPath())));
117     }
118 }