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.nio.file.Files;
23  
24  import org.junit.jupiter.api.Test;
25  import org.junit.jupiter.api.io.TempDir;
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      void nullOutputFileNoMirror() throws Exception {
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      void nullOutputFileWithMirror() throws Exception {
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      void nullOutputFileWithMirrorWriteByte() throws Exception {
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      void outputFileNoMirror(@TempDir File tempDir) throws Exception {
80          File outputFile = new File(tempDir, "/target/test.log");
81  
82          try (FileLogger fileLogger = new FileLogger(outputFile)) {
83              fileLogger.consumeLine("Test1");
84              fileLogger.getPrintStream().println("Test2");
85              fileLogger.getPrintStream().flush();
86  
87              assertEquals(outputFile, fileLogger.getOutputFile());
88          }
89  
90          assertTrue(outputFile.exists());
91          assertEquals(EXPECTED_LOG, new String(Files.readAllBytes(outputFile.toPath())));
92      }
93  
94      @Test
95      void outputFileWithMirror(@TempDir File tempDir) throws Exception {
96          File outputFile = new File(tempDir, "target/test.log");
97          TestMirrorHandler mirrorHandler = new TestMirrorHandler();
98  
99          try (FileLogger fileLogger = new FileLogger(outputFile, mirrorHandler)) {
100             fileLogger.consumeLine("Test1");
101             fileLogger.getPrintStream().println("Test2");
102             fileLogger.getPrintStream().flush();
103 
104             assertEquals(outputFile, fileLogger.getOutputFile());
105         }
106 
107         assertEquals(EXPECTED_LOG, mirrorHandler.getLoggedMessage());
108 
109         assertTrue(outputFile.exists());
110         assertEquals(EXPECTED_LOG, new String(Files.readAllBytes(outputFile.toPath())));
111     }
112 }