package org.jboss.windup.tests.bootstrap; import org.apache.commons.io.output.TeeOutputStream; import org.jboss.windup.bootstrap.Bootstrap; import org.junit.After; import org.junit.Before; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.io.UnsupportedEncodingException; public abstract class AbstractBootstrapTest { // see tests/pom.xml protected static final String ADDON_REPOSITORY = "target/forge-addons-for-bootstrap-tests"; private PrintStream originalStdout; private PrintStream originalStderr; private ByteArrayOutputStream capturedOutputBytes; @Before public final void captureStdout() { originalStdout = System.out; originalStderr = System.err; capturedOutputBytes = new ByteArrayOutputStream(); System.setOut(new PrintStream(new TeeOutputStream(originalStdout, capturedOutputBytes))); System.setErr(new PrintStream(new TeeOutputStream(originalStderr, capturedOutputBytes))); } @After public final void restoreStdout() { System.out.flush(); System.err.flush(); System.setOut(originalStdout); System.setErr(originalStderr); } protected final String capturedOutput() { try { return capturedOutputBytes.toString("UTF-8"); } catch (UnsupportedEncodingException e) { throw new AssertionError("UTF-8 must be supported"); } } protected final void bootstrap(String... args) { int newArgumentsCount = 3; String[] realArgs = new String[args.length + newArgumentsCount]; realArgs[0] = "--batchMode"; realArgs[1] = "--immutableAddonDir"; realArgs[2] = ADDON_REPOSITORY; System.arraycopy(args, 0, realArgs, newArgumentsCount, args.length); Bootstrap.main(realArgs); } }