You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

135 lines
3.5 KiB

package foundation.pEp.pitytest;
import foundation.pEp.pitytest.utils.TestUtils;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import static foundation.pEp.pitytest.utils.TestUtils.*;
public class TestLogger {
static {
init();
}
// options
private static boolean logEnabled;
private static int lineWidth;
// constants
private static int threadStrLen;
private static String threadSeparator;
private static boolean initialized;
private static void init() {
if (!initialized) {
logEnabled = true;
threadStrLen = 10;
lineWidth = 120;
threadSeparator = ": ";
// TODO: Disabled term size detection, not working anymore on macOS at least.... grmpl
// tryDetermineTermSize();
initialized = true;
}
}
private static void tryDetermineTermSize() {
int nrCols = lineWidth;
try {
Process p = Runtime.getRuntime().exec("tput cols");
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
String cmdOutput = "";
String buf = null;
while ((buf = stdInput.readLine()) != null) {
cmdOutput += buf;
}
nrCols = Integer.valueOf(cmdOutput);
setLineWidth(clip(nrCols, 40, 2000));
} catch (Exception e) {
// something went wrong
}
}
public static void setLoggingEnabled(boolean enabled) {
logEnabled = enabled;
}
public static boolean isLoggingEnabled() {
return logEnabled;
}
public static int getLineWidth() {
return lineWidth;
}
public static int getMsgWidth() {
return lineWidth - threadStrLen - threadSeparator.length();
}
public static void setLineWidth(int width) {
lineWidth = width;
}
// Log
public static void log(String msg) {
if (logEnabled) {
String threadStr = padOrClipString(Thread.currentThread().getName(), " ", threadStrLen, Alignment.Left, "");
int indentStrLen = threadStrLen + threadSeparator.length();
String indent = repeatString(" ", indentStrLen);
msg = msg.replace("\n", "\n" + indent);
String logStr = threadStr + threadSeparator + msg;
System.out.println(logStr);
}
}
public static void log(String msg, TermColor color) {
setTermColor(color);
log(msg);
setTermColor(TermColor.RESET);
}
// LogH1
public static void logH1(String msg) {
log(TestUtils.padOrClipString(msg, "=", lineWidth - threadSeparator.length() - threadStrLen, TestUtils.Alignment.Center, null));
}
public static void logH1(String msg, TermColor color) {
setTermColor(color);
logH1(msg);
setTermColor(TermColor.RESET);
}
// LogH2
public static void logH2(String msg) {
log(TestUtils.padOrClipString(msg, "-", lineWidth - threadSeparator.length() - threadStrLen, TestUtils.Alignment.Center, null));
}
public static void logH2(String msg, TermColor color) {
setTermColor(color);
logH2(msg);
setTermColor(TermColor.RESET);
}
// LogRaw
public static void logRaw(String msg) {
System.out.print(msg);
}
public static void logRaw(String msg, TermColor color) {
setTermColor(color);
logRaw(msg);
setTermColor(TermColor.RESET);
}
public static void setTermColor(TermColor c) {
logRaw(c.toString());
}
}