refactors

This commit is contained in:
Chris Frohoff
2019-04-25 08:20:07 -07:00
parent 4543487154
commit 7adb3cfe63
@@ -3,6 +3,7 @@ package ysoserial.test.payloads;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File; import java.io.File;
import java.io.OutputStream;
import java.io.PrintStream; import java.io.PrintStream;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
@@ -17,7 +18,6 @@ import java.util.concurrent.Callable;
import org.jboss.shrinkwrap.resolver.api.maven.Maven; import org.jboss.shrinkwrap.resolver.api.maven.Maven;
import org.junit.Assume; import org.junit.Assume;
import org.junit.Test; import org.junit.Test;
import org.junit.internal.TextListener;
import org.junit.runner.Description; import org.junit.runner.Description;
import org.junit.runner.JUnitCore; import org.junit.runner.JUnitCore;
import org.junit.runner.Result; import org.junit.runner.Result;
@@ -253,6 +253,7 @@ public class PayloadsTest {
} }
public static void main(String[] args) { public static void main(String[] args) {
JUnitCore junit = new JUnitCore(); JUnitCore junit = new JUnitCore();
PayloadListener listener = new PayloadListener(); PayloadListener listener = new PayloadListener();
junit.addListener(listener); junit.addListener(listener);
@@ -260,23 +261,53 @@ public class PayloadsTest {
System.exit(result.wasSuccessful() ? 0 : 1); System.exit(result.wasSuccessful() ? 0 : 1);
} }
public static class StdIo {
private static final PrintStream realOut = System.out;
private static final PrintStream realErr = System.err;
public static void restoreStreams() {
setStreams(realOut, realErr);
}
public static void setStreams(PrintStream out, PrintStream err) {
System.setOut(out);
System.setErr(err);
}
public static void setStreams(OutputStream out, OutputStream err) {
setStreams(new PrintStream(out), new PrintStream(err));
}
}
public static class PayloadListener extends RunListener { public static class PayloadListener extends RunListener {
private static PrintStream realOut = System.out; public enum Status {
private static PrintStream realErr = System.err; SUCCESS,
FAILURE,
IGNORE,
ASSUMPTION_FAILURE
}
private Map<Description, ByteArrayOutputStream> outs = new HashMap<Description, ByteArrayOutputStream>(); private Map<Description, ByteArrayOutputStream> outs = new HashMap<Description, ByteArrayOutputStream>();
//private Map<Description, ByteArrayOutputStream> errs = new HashMap<Description, ByteArrayOutputStream>(); private Map<Description, ByteArrayOutputStream> errs = new HashMap<Description, ByteArrayOutputStream>();
private Map<Description, Status> statuses = new HashMap<Description, Status>();
private Map<Description, Failure> failures = new HashMap<Description, Failure>();
@Override @Override
public void testStarted(Description description) throws Exception { public void testStarted(Description description) throws Exception {
System.out.println(getPayload(description.getDisplayName()) + ": STARTED");
statuses.put(description, Status.SUCCESS);
ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream();
// ByteArrayOutputStream err = new ByteArrayOutputStream(); // ByteArrayOutputStream err = new ByteArrayOutputStream();
outs.put(description, out); outs.put(description, out);
// errs.put(description, err); // errs.put(description, err);
setStreams(new PrintStream(out), new PrintStream(out)); StdIo.setStreams(out, out);
//System.setErr(new PrintStream((err)));
} }
@Override @Override
@@ -284,39 +315,28 @@ public class PayloadsTest {
outs.get(description).close(); outs.get(description).close();
//errs.get(description).close(); //errs.get(description).close();
restoreStreams(); StdIo.restoreStreams();
}
private void restoreStreams() { Status status = statuses.get(description);
setStreams(realOut, realErr); System.out.println(getPayload(description.getDisplayName()) + ": " + status);
} if (status == Status.FAILURE) System.err.println(outs.get(description).toString());
private void setStreams(PrintStream realOut, PrintStream realErr) {
System.setOut(realOut);
System.setErr(realErr);
} }
@Override @Override
public void testFailure(Failure failure) throws Exception { public void testFailure(Failure failure) throws Exception {
restoreStreams(); statuses.put(failure.getDescription(), Status.FAILURE);
System.out.println(failure.getDescription().getDisplayName() + ": TEST-FAILED"); failures.put(failure.getDescription(), failure);
System.err.println(outs.get(failure.getDescription()).toString());
} }
@Override @Override
public void testAssumptionFailure(Failure failure) { public void testAssumptionFailure(Failure failure) {
restoreStreams(); statuses.put(failure.getDescription(), Status.ASSUMPTION_FAILURE);
System.out.println(failure.getDescription().getDisplayName() + ": ASSUMPTION-FAILED"); failures.put(failure.getDescription(), failure);
} }
@Override // testPayload[payloadClass: class ysoserial.payloads.JavassistWeld1](ysoserial.test.payloads.PayloadsTest)
public void testIgnored(Description description) throws Exception { public static String getPayload(String displayName) {
restoreStreams(); return displayName.replaceAll(".*\\[\\S+: class (\\w+\\.)+(\\w+)\\].*", "$2");
System.out.println(description.getDisplayName() + ": TEST-IGNORED");
} }
} }
} }