-
Notifications
You must be signed in to change notification settings - Fork 124
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
b6f6137
commit 94f6b13
Showing
1 changed file
with
47 additions
and
43 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,56 +1,60 @@ | ||
package com.jcraft.jsch; | ||
|
||
import static org.junit.jupiter.api.Assertions.assertEquals; | ||
|
||
import java.io.PrintWriter; | ||
import java.io.StringWriter; | ||
import java.util.LinkedList; | ||
import java.util.stream.Collectors; | ||
import java.util.ArrayList; | ||
import java.util.Arrays; | ||
import java.util.Collections; | ||
import java.util.List; | ||
import org.junit.jupiter.api.Test; | ||
|
||
class LoggerTest { | ||
|
||
public class LoggerTest { | ||
|
||
private final Exception testException = new Exception("dummy exception"); | ||
|
||
@Test | ||
void testLogWithCause() { | ||
LinkedList<String> messages = new LinkedList<>(); | ||
public void testLogging() { | ||
List<String> actualMessages = new ArrayList<>(); | ||
boolean[] enabledResult = new boolean[1]; | ||
Logger logger = new Logger() { | ||
@Override | ||
public void log(int level, String message) { | ||
messages.add(level + ":" + message); | ||
} | ||
@Override | ||
public boolean isEnabled(int level) { | ||
return enabledResult[0]; | ||
} | ||
}; | ||
|
||
Exception ex = new Exception("dummy exception"); | ||
Logger logger = | ||
new Logger() { | ||
@Override | ||
public void log(int level, String message) { | ||
if (isEnabled(level)) { | ||
actualMessages.add(level + ":" + message); | ||
} | ||
} | ||
|
||
@Override | ||
public boolean isEnabled(int level) { | ||
return enabledResult[0]; | ||
} | ||
}; | ||
|
||
actualMessages.clear(); | ||
enabledResult[0] = false; | ||
logger.log(Logger.ERROR, "debug message"); | ||
logger.log(Logger.ERROR, "debug message with null cause", null); | ||
logger.log(Logger.ERROR, "debug message with cause", testException); | ||
assertEquals(Collections.emptyList(), actualMessages, "mismatch in logged messages"); | ||
|
||
StringWriter sw = new StringWriter(); | ||
PrintWriter pw = new PrintWriter(sw); | ||
ex.printStackTrace(pw); | ||
String expectedTrace = sw.toString(); | ||
|
||
logger.log(Logger.ERROR, "some message", null); | ||
logger.log(Logger.ERROR, "some message with trace", ex); | ||
assertEquals("", getMessageLines(messages), "message mismatch"); | ||
|
||
enabledResult[0] = true; | ||
logger.log(Logger.ERROR, "some message", null); | ||
logger.log(Logger.ERROR, "some message with trace", ex); | ||
assertEquals( | ||
Logger.ERROR + ":some message\r\n" + | ||
Logger.ERROR + ":some message with trace" + System.lineSeparator() + | ||
expectedTrace + | ||
"", getMessageLines(messages), "message mismatch"); | ||
} | ||
|
||
static String getMessageLines(LinkedList<String> messages) { | ||
try { | ||
return messages.stream() | ||
.collect(Collectors.joining("\r\n")); | ||
} | ||
finally { | ||
messages.clear(); | ||
try (PrintWriter pw = new PrintWriter(sw, true)) { | ||
testException.printStackTrace(pw); | ||
} | ||
List<String> expectedMessages = | ||
Arrays.asList( | ||
Logger.ERROR + ":debug message", | ||
Logger.ERROR + ":debug message with null cause", | ||
Logger.ERROR + ":debug message with cause" + System.lineSeparator() + sw); | ||
|
||
actualMessages.clear(); | ||
enabledResult[0] = true; | ||
logger.log(Logger.ERROR, "debug message"); | ||
logger.log(Logger.ERROR, "debug message with null cause", null); | ||
logger.log(Logger.ERROR, "debug message with cause", testException); | ||
assertEquals(expectedMessages, actualMessages, "mismatch in logged messages"); | ||
} | ||
} |