mirror of
https://github.com/frohoff/ysoserial.git
synced 2026-09-27 01:11:53 +08:00
refactors
This commit is contained in:
@@ -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");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user