blob: 065f7bf3b8140dcd067943a481ce5f19a24200de [file] [log] [blame]
package org.junit.runner;
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.hasItems;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import java.util.List;
import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.categories.IncludeCategories;
import org.junit.rules.ExpectedException;
import org.junit.runner.manipulation.Filter;
public class JUnitCommandLineParseResultTest {
@Rule
public ExpectedException expectedException = ExpectedException.none();
private final JUnitCommandLineParseResult jUnitCommandLineParseResult = new JUnitCommandLineParseResult();
@Test
public void shouldStopParsingOptionsUponDoubleHyphenArg() throws Exception {
String[] restOfArgs = jUnitCommandLineParseResult.parseOptions(
"--0", "--1", "--", "--2", "--3");
assertThat(restOfArgs, is(new String[]{"--2", "--3"}));
}
@Test
public void shouldParseFilterArgWithEqualsSyntax() throws Exception {
String value= IncludeCategories.class.getName() + "=" + DummyCategory0.class.getName();
jUnitCommandLineParseResult.parseOptions("--filter=" + value);
List<String> specs= jUnitCommandLineParseResult.getFilterSpecs();
assertThat(specs, hasItems(value));
}
@Test
public void shouldCreateFailureUponBaldFilterOptionNotFollowedByValue() {
jUnitCommandLineParseResult.parseOptions("--filter");
Runner runner = jUnitCommandLineParseResult.createRequest(new Computer()).getRunner();
Description description = runner.getDescription().getChildren().get(0);
assertThat(description.toString(), containsString("initializationError"));
}
@Test
public void shouldParseFilterArgInWhichValueIsASeparateArg() throws Exception {
String value= IncludeCategories.class.getName() + "=" + DummyCategory0.class.getName();
jUnitCommandLineParseResult.parseOptions("--filter", value);
List<String> specs= jUnitCommandLineParseResult.getFilterSpecs();
assertThat(specs, hasItems(value));
}
@Test
public void shouldStopParsingOptionsUponNonOption() throws Exception {
String[] restOfArgs = jUnitCommandLineParseResult.parseOptions(new String[]{
"--0", "--1", "2", "3"
});
assertThat(restOfArgs, is(new String[]{"2", "3"}));
}
@Test
public void shouldCreateFailureUponUnknownOption() throws Exception {
String unknownOption = "--unknown-option";
jUnitCommandLineParseResult.parseOptions(new String[]{
unknownOption
});
Runner runner = jUnitCommandLineParseResult.createRequest(new Computer()).getRunner();
Description description = runner.getDescription().getChildren().get(0);
assertThat(description.toString(), containsString("initializationError"));
}
@Test
public void shouldCreateFailureUponUncreatedFilter() throws Exception {
jUnitCommandLineParseResult.parseOptions(new String[]{
"--filter=" + FilterFactoryStub.class.getName()
});
Runner runner = jUnitCommandLineParseResult.createRequest(new Computer()).getRunner();
Description description = runner.getDescription().getChildren().get(0);
assertThat(description.toString(), containsString("initializationError"));
}
@Test
public void shouldCreateFailureUponUnfoundFilterFactory() throws Exception {
String nonExistentFilterFactory = "NonExistentFilterFactory";
jUnitCommandLineParseResult.parseOptions(new String[]{
"--filter=" + nonExistentFilterFactory
});
Runner runner = jUnitCommandLineParseResult.createRequest(new Computer()).getRunner();
Description description = runner.getDescription().getChildren().get(0);
assertThat(description.toString(), containsString("initializationError"));
}
@Test
public void shouldAddToClasses() {
jUnitCommandLineParseResult.parseParameters(new String[]{
DummyTest.class.getName()
});
List<Class<?>> classes = jUnitCommandLineParseResult.getClasses();
Class<?> testClass = classes.get(0);
assertThat(testClass.getName(), is(DummyTest.class.getName()));
}
@Test
public void shouldCreateFailureUponUnknownTestClass() throws Exception {
String unknownTestClass = "UnknownTestClass";
jUnitCommandLineParseResult.parseParameters(new String[]{
unknownTestClass
});
Runner runner = jUnitCommandLineParseResult.createRequest(new Computer()).getRunner();
Description description = runner.getDescription().getChildren().get(0);
assertThat(description.toString(), containsString("initializationError"));
}
public static class FilterFactoryStub implements FilterFactory {
public Filter createFilter(FilterFactoryParams params) throws FilterNotCreatedException {
throw new FilterNotCreatedException(new Exception("stub"));
}
}
public static interface DummyCategory0 {
}
public static class DummyTest {
@Test
public void dummyTest() {
}
}
}