package org.jboss.shrinkwrap.resolver.impl.maven.embedded; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import org.jboss.shrinkwrap.resolver.api.maven.embedded.EmbeddedMaven; import org.junit.After; import org.junit.Before; import org.junit.Test; import static org.jboss.shrinkwrap.resolver.impl.maven.embedded.Utils.pathToJarSamplePom; import static org.junit.Assert.assertEquals; /** * @author <a href="mailto:mjobanek@redhat.com">Matous Jobanek</a> */ public class BuildOutputTestCase { private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); private final ByteArrayOutputStream errContent = new ByteArrayOutputStream(); @Before public void setUpStreams() { System.setOut(new PrintStream(outContent)); System.setErr(new PrintStream(errContent)); } @Test public void testJarSampleBuild() { EmbeddedMaven .forProject(pathToJarSamplePom) .setGoals("clean", "verify") .useDefaultDistribution() .build(); verifyStatuses(); verifyBuildContent(true); } @Test public void testJarSampleBuildInQuietMode() { EmbeddedMaven .forProject(pathToJarSamplePom) .setGoals("clean", "verify") .setQuiet() .useDefaultDistribution() .build(); verifyStatuses(); verifyBuildContent(false); } private void verifyStatuses(){ assertBuildStdoutContains("Embedded Maven build started: jar-sample/pom.xml", true); assertBuildStdoutContains("Embedded Maven build stopped: jar-sample/pom.xml", true); } private void verifyBuildContent(boolean shouldContain) { assertBuildStdoutContains("Building ShrinkWrap Resolver Embedded Maven Integration Tests", shouldContain); assertBuildStdoutContains("BUILD SUCCESS", shouldContain); assertBuildStdoutContains("INFO", shouldContain); } private void assertBuildStdoutContains(String expectedString, boolean shouldContain){ StringBuffer assertWarn = new StringBuffer("The build output printed on stdout should "); if (!shouldContain){ assertWarn.append("NOT "); } assertWarn.append("contain: ").append(expectedString); assertEquals(assertWarn.toString(), shouldContain,outContent.toString().contains(expectedString)); } @After public void cleanUpStreams() { System.setOut(null); System.setErr(null); } }