diff --git a/junit-console/src/main/java/org/junit/gen5/console/options/CommandLineOptions.java b/junit-console/src/main/java/org/junit/gen5/console/options/CommandLineOptions.java index 920df23e756..47bd9269d70 100644 --- a/junit-console/src/main/java/org/junit/gen5/console/options/CommandLineOptions.java +++ b/junit-console/src/main/java/org/junit/gen5/console/options/CommandLineOptions.java @@ -10,27 +10,93 @@ package org.junit.gen5.console.options; +import static java.util.Collections.emptyList; + import java.util.List; import java.util.Optional; -public interface CommandLineOptions { +public class CommandLineOptions { + + private boolean displayHelp; + private boolean exitCodeEnabled; + private boolean ansiColorOutputDisabled; + private boolean runAllTests; + private boolean hideDetails; + private String classnameFilter; + private List tagsFilter = emptyList(); + private List additionalClasspathEntries = emptyList(); + private List arguments = emptyList(); + + public boolean isDisplayHelp() { + return displayHelp; + } + + public void setDisplayHelp(boolean displayHelp) { + this.displayHelp = displayHelp; + } + + public boolean isExitCodeEnabled() { + return exitCodeEnabled; + } + + public void setExitCodeEnabled(boolean exitCodeEnabled) { + this.exitCodeEnabled = exitCodeEnabled; + } + + public boolean isAnsiColorOutputDisabled() { + return ansiColorOutputDisabled; + } + + public void setAnsiColorOutputDisabled(boolean ansiColorOutputDisabled) { + this.ansiColorOutputDisabled = ansiColorOutputDisabled; + } + + public boolean isRunAllTests() { + return runAllTests; + } + + public void setRunAllTests(boolean runAllTests) { + this.runAllTests = runAllTests; + } + + public boolean isHideDetails() { + return hideDetails; + } - boolean isDisplayHelp(); + public void setHideDetails(boolean hideDetails) { + this.hideDetails = hideDetails; + } - boolean isExitCodeEnabled(); + public Optional getClassnameFilter() { + return Optional.ofNullable(classnameFilter); + } - boolean isAnsiColorOutputDisabled(); + public void setClassnameFilter(String classnameFilter) { + this.classnameFilter = classnameFilter; + } - boolean isRunAllTests(); + public List getTagsFilter() { + return tagsFilter; + } - boolean isHideDetails(); + public void setTagsFilter(List tagsFilter) { + this.tagsFilter = tagsFilter; + } - Optional getClassnameFilter(); + public List getAdditionalClasspathEntries() { + return additionalClasspathEntries; + } - List getTagsFilter(); + public void setAdditionalClasspathEntries(List additionalClasspathEntries) { + this.additionalClasspathEntries = additionalClasspathEntries; + } - List getArguments(); + public List getArguments() { + return arguments; + } - List getAdditionalClasspathEntries(); + public void setArguments(List arguments) { + this.arguments = arguments; + } } diff --git a/junit-console/src/main/java/org/junit/gen5/console/options/JOptSimpleCommandLineOptions.java b/junit-console/src/main/java/org/junit/gen5/console/options/JOptSimpleCommandLineOptions.java deleted file mode 100644 index 3fb3c6e0dcc..00000000000 --- a/junit-console/src/main/java/org/junit/gen5/console/options/JOptSimpleCommandLineOptions.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2015 the original author or authors. - * - * All rights reserved. This program and the accompanying materials are - * made available under the terms of the Eclipse Public License v1.0 which - * accompanies this distribution and is available at - * - * http://www.eclipse.org/legal/epl-v10.html - */ - -package org.junit.gen5.console.options; - -import java.util.List; -import java.util.Optional; - -import joptsimple.OptionSet; - -class JOptSimpleCommandLineOptions implements CommandLineOptions { - - private final AvailableOptions options; - private final OptionSet detectedOptions; - - JOptSimpleCommandLineOptions(AvailableOptions options, OptionSet detectedOptions) { - this.options = options; - this.detectedOptions = detectedOptions; - } - - @Override - public boolean isDisplayHelp() { - return detectedOptions.has(options.help); - } - - @Override - public boolean isExitCodeEnabled() { - return detectedOptions.has(options.enableExitCode); - } - - @Override - public boolean isAnsiColorOutputDisabled() { - return detectedOptions.has(options.disableAnsiColors); - } - - @Override - public boolean isRunAllTests() { - return detectedOptions.has(options.runAllTests); - } - - @Override - public boolean isHideDetails() { - return detectedOptions.has(options.hideDetails); - } - - @Override - public Optional getClassnameFilter() { - return Optional.ofNullable(detectedOptions.valueOf(options.classnameFilter)); - } - - @Override - public List getTagsFilter() { - return detectedOptions.valuesOf(options.tagFilter); - } - - @Override - public List getAdditionalClasspathEntries() { - return detectedOptions.valuesOf(options.additionalClasspathEntries); - } - - @Override - public List getArguments() { - return detectedOptions.valuesOf(options.arguments); - } - -} diff --git a/junit-console/src/main/java/org/junit/gen5/console/options/JOptSimpleCommandLineOptionsParser.java b/junit-console/src/main/java/org/junit/gen5/console/options/JOptSimpleCommandLineOptionsParser.java index f1b6b0c623a..f1cf7b959f2 100644 --- a/junit-console/src/main/java/org/junit/gen5/console/options/JOptSimpleCommandLineOptionsParser.java +++ b/junit-console/src/main/java/org/junit/gen5/console/options/JOptSimpleCommandLineOptionsParser.java @@ -23,8 +23,8 @@ public class JOptSimpleCommandLineOptionsParser implements CommandLineOptionsPar public CommandLineOptions parse(String... arguments) { AvailableOptions availableOptions = getAvailableOptions(); OptionParser parser = availableOptions.getParser(); - OptionSet optionSet = parser.parse(arguments); - return new JOptSimpleCommandLineOptions(availableOptions, optionSet); + OptionSet detectedOptions = parser.parse(arguments); + return toCommandLineOptions(availableOptions, detectedOptions); } @Override @@ -39,6 +39,20 @@ public void printHelp(Writer writer) { } } + private CommandLineOptions toCommandLineOptions(AvailableOptions options, OptionSet detectedOptions) { + CommandLineOptions result = new CommandLineOptions(); + result.setDisplayHelp(detectedOptions.has(options.help)); + result.setExitCodeEnabled(detectedOptions.has(options.enableExitCode)); + result.setAnsiColorOutputDisabled(detectedOptions.has(options.disableAnsiColors)); + result.setRunAllTests(detectedOptions.has(options.runAllTests)); + result.setHideDetails(detectedOptions.has(options.hideDetails)); + result.setClassnameFilter(detectedOptions.valueOf(options.classnameFilter)); + result.setTagsFilter(detectedOptions.valuesOf(options.tagFilter)); + result.setAdditionalClasspathEntries(detectedOptions.valuesOf(options.additionalClasspathEntries)); + result.setArguments(detectedOptions.valuesOf(options.arguments)); + return result; + } + private AvailableOptions getAvailableOptions() { return new AvailableOptions(); } diff --git a/junit-tests/src/test/java/org/junit/gen5/console/options/CommandLineOptionsStubs.java b/junit-tests/src/test/java/org/junit/gen5/console/options/CommandLineOptionsStubs.java deleted file mode 100644 index 98b596c37e8..00000000000 --- a/junit-tests/src/test/java/org/junit/gen5/console/options/CommandLineOptionsStubs.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2015 the original author or authors. - * - * All rights reserved. This program and the accompanying materials are - * made available under the terms of the Eclipse Public License v1.0 which - * accompanies this distribution and is available at - * - * http://www.eclipse.org/legal/epl-v10.html - */ - -package org.junit.gen5.console.options; - -import static java.util.Collections.emptyList; -import static org.mockito.Mockito.*; - -import java.util.Optional; - -public class CommandLineOptionsStubs { - - public static CommandLineOptions runAllTestCommandLineOptions() { - CommandLineOptions options = validCommandLineOptions(); - when(options.isRunAllTests()).thenReturn(true); - return options; - } - - public static CommandLineOptions validCommandLineOptions() { - CommandLineOptions options = mock(CommandLineOptions.class); - when(options.getClassnameFilter()).thenReturn(Optional.empty()); - when(options.getTagsFilter()).thenReturn(emptyList()); - when(options.getArguments()).thenReturn(emptyList()); - return options; - } -} diff --git a/junit-tests/src/test/java/org/junit/gen5/console/tasks/ExecuteTestsTaskTest.java b/junit-tests/src/test/java/org/junit/gen5/console/tasks/ExecuteTestsTaskTest.java index 769f4bde24d..753776aacc3 100644 --- a/junit-tests/src/test/java/org/junit/gen5/console/tasks/ExecuteTestsTaskTest.java +++ b/junit-tests/src/test/java/org/junit/gen5/console/tasks/ExecuteTestsTaskTest.java @@ -13,10 +13,8 @@ import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.gen5.api.Assertions.*; -import static org.junit.gen5.console.options.CommandLineOptionsStubs.runAllTestCommandLineOptions; import static org.junit.gen5.engine.DummyTestEngine.TestResult.*; import static org.junit.gen5.launcher.LauncherFactory.createLauncher; -import static org.mockito.Mockito.when; import java.io.PrintWriter; import java.io.StringWriter; @@ -31,7 +29,9 @@ public class ExecuteTestsTaskTest { @Test public void executeWithoutExitCode() throws Exception { StringWriter stringWriter = new StringWriter(); - CommandLineOptions options = runAllTestCommandLineOptions(); + + CommandLineOptions options = new CommandLineOptions(); + options.setRunAllTests(true); DummyTestEngine dummyTestEngine = new DummyTestEngine(); dummyTestEngine.addTest("succeedingTest", SUCCESS, noOp()); @@ -46,8 +46,9 @@ public void executeWithoutExitCode() throws Exception { @Test public void executeWithExitCode() throws Exception { - CommandLineOptions options = runAllTestCommandLineOptions(); - when(options.isExitCodeEnabled()).thenReturn(true); + CommandLineOptions options = new CommandLineOptions(); + options.setRunAllTests(true); + options.setExitCodeEnabled(true); DummyTestEngine dummyTestEngine = new DummyTestEngine(); dummyTestEngine.addTest("succeedingTest", SUCCESS, noOp()); @@ -62,9 +63,9 @@ public void executeWithExitCode() throws Exception { @Test public void executeWithCustomClassLoader() throws Exception { StringWriter stringWriter = new StringWriter(); - - CommandLineOptions options = runAllTestCommandLineOptions(); - when(options.getAdditionalClasspathEntries()).thenReturn(singletonList(".")); + CommandLineOptions options = new CommandLineOptions(); + options.setRunAllTests(true); + options.setAdditionalClasspathEntries(singletonList(".")); ClassLoader oldClassLoader = ReflectionUtils.getDefaultClassLoader(); DummyTestEngine dummyTestEngine = new DummyTestEngine(); @@ -82,8 +83,9 @@ public void executeWithCustomClassLoader() throws Exception { public void executeWithHiddenDetails() throws Exception { StringWriter stringWriter = new StringWriter(); - CommandLineOptions options = runAllTestCommandLineOptions(); - when(options.isHideDetails()).thenReturn(true); + CommandLineOptions options = new CommandLineOptions(); + options.setRunAllTests(true); + options.setHideDetails(true); DummyTestEngine dummyTestEngine = new DummyTestEngine(); dummyTestEngine.addTest("failingTest", FAILURE, noOp()); diff --git a/junit-tests/src/test/java/org/junit/gen5/console/tasks/TestPlanSpecificationCreatorTest.java b/junit-tests/src/test/java/org/junit/gen5/console/tasks/TestPlanSpecificationCreatorTest.java index 093e49a438e..a185ca285a6 100644 --- a/junit-tests/src/test/java/org/junit/gen5/console/tasks/TestPlanSpecificationCreatorTest.java +++ b/junit-tests/src/test/java/org/junit/gen5/console/tasks/TestPlanSpecificationCreatorTest.java @@ -14,13 +14,11 @@ import static java.util.Collections.*; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.gen5.api.Assertions.*; -import static org.junit.gen5.console.options.CommandLineOptionsStubs.validCommandLineOptions; import static org.mockito.Matchers.notNull; import static org.mockito.Mockito.*; import java.io.File; import java.lang.reflect.Method; -import java.util.Optional; import org.junit.Test; import org.junit.gen5.console.options.CommandLineOptions; @@ -31,13 +29,13 @@ public class TestPlanSpecificationCreatorTest { - private CommandLineOptions options = validCommandLineOptions(); + private CommandLineOptions options = new CommandLineOptions(); private TestPlanSpecificationElementVisitor visitor = mock(TestPlanSpecificationElementVisitor.class); @Test public void convertsClassArgument() { Class testClass = getClass(); - when(options.getArguments()).thenReturn(singletonList(testClass.getName())); + options.setArguments(singletonList(testClass.getName())); convertAndVisit(); @@ -49,7 +47,7 @@ public void convertsMethodArgument() throws Exception { Class testClass = getClass(); // TODO #39 Use @TestName Method testMethod = testClass.getDeclaredMethod("convertsMethodArgument"); - when(options.getArguments()).thenReturn(singletonList(testClass.getName() + "#" + testMethod.getName())); + options.setArguments(singletonList(testClass.getName() + "#" + testMethod.getName())); convertAndVisit(); @@ -59,7 +57,7 @@ public void convertsMethodArgument() throws Exception { @Test public void convertsPackageArgument() { String packageName = getClass().getPackage().getName(); - when(options.getArguments()).thenReturn(singletonList(packageName)); + options.setArguments(singletonList(packageName)); convertAndVisit(); @@ -68,7 +66,7 @@ public void convertsPackageArgument() { @Test public void convertsAllOptionWithoutExplicitRootDirectories() { - when(options.isRunAllTests()).thenReturn(true); + options.setRunAllTests(true); convertAndVisit(); @@ -77,8 +75,8 @@ public void convertsAllOptionWithoutExplicitRootDirectories() { @Test public void convertsAllOptionWithExplicitRootDirectories() { - when(options.isRunAllTests()).thenReturn(true); - when(options.getArguments()).thenReturn(asList(".", "..")); + options.setRunAllTests(true); + options.setArguments(asList(".", "..")); convertAndVisit(); @@ -89,8 +87,8 @@ public void convertsAllOptionWithExplicitRootDirectories() { @Test public void convertsClassnameFilterOption() { - when(options.isRunAllTests()).thenReturn(true); - when(options.getClassnameFilter()).thenReturn(Optional.of(".*Test")); + options.setRunAllTests(true); + options.setClassnameFilter(".*Test"); TestPlanSpecification specification = convert(); @@ -100,8 +98,8 @@ public void convertsClassnameFilterOption() { @Test public void convertsTagFilterOption() { - when(options.isRunAllTests()).thenReturn(true); - when(options.getTagsFilter()).thenReturn(asList("fast", "slow")); + options.setRunAllTests(true); + options.setTagsFilter(asList("fast", "slow")); TestPlanSpecification specification = convert();