package net.sourceforge.seqware.pipeline.runner; //import org.aspectj.weaver.ast.Test; import java.io.File; import java.security.Permission; import java.util.Arrays; import java.util.Collection; import net.sourceforge.seqware.common.util.Log; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; /** * Testing the runner class. * <p/> * Created by IntelliJ IDEA. User: xiao Date: 7/21/11 Time: 3:22 PM To change this template use File | Settings | File Templates. * * @author boconnor * @version $Id: $Id * @since 0.13.3 */ @RunWith(Parameterized.class) public class RunnerTest { private String testArgs; private int expected; private static File rscDir; class NoExitSecurityManager extends SecurityManager { @Override public void checkPermission(Permission permission) { // allow anything } @Override public void checkPermission(Permission permission, Object o) { // allow everything } @Override public void checkExit(int status) { super.checkExit(status); throw new ExitException(status); } } class ExitException extends SecurityException { public final int status; public ExitException(int st) { super("No exit"); status = st; } } /** * <p> * setUpClassProperty. * </p> */ @BeforeClass public static void setUpClassProperty() { rscDir = new File(RunnerTest.class.getResource(".").getPath()); } /** * <p> * setup. * </p> */ @Before public void setup() { System.setSecurityManager(new NoExitSecurityManager()); } /** * <p> * teardown. * </p> */ @After public void teardown() { System.setSecurityManager(null); } /** * <p> * arguments. * </p> * * @return an array of {@link java.lang.Object} objects. */ @Parameters public static Collection<Object[]> arguments() { Log.info("rscDir = " + rscDir); String stdoutFile = new File(rscDir, "runnertest.out").getAbsolutePath(); String stderrFile = new File(rscDir, "runnertest.err").getAbsolutePath(); String basic = "--no-metadata --module net.sourceforge.seqware.pipeline.module.TestModule"; Log.info("stdoutFile = " + stdoutFile); Log.info("stderrFile = " + stderrFile); Object[][] data = new Object[][] { { basic, 0 }, { basic + " --output " + stdoutFile, 0 }, { basic + " --output " + stdoutFile + " --stderr " + stderrFile, 0 } }; return Arrays.asList(data); } /** * <p> * testRunner. * </p> * * @param args * a {@link java.lang.String} object. * @param expected * a int. */ public RunnerTest(String args, int expected) { this.expected = expected; this.testArgs = args; } @Test public void executeParameterizedTest() { try { Runner.main(testArgs.split("\\s")); } catch (ExitException e) { Assert.assertEquals(e.status, expected); } } }