aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerModule.java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-05-27 17:25:16 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-05-30 09:19:26 +0000
commit6f418edf764a4dad4166ffcde49b0dbbc271214e (patch)
tree5c58d273abd04023ebc3b0617662eaf777c12d08 /src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerModule.java
parent2ce814bf7bb5b43a35dc445c395570e809b44db7 (diff)
Description redacted.
-- MOS_MIGRATED_REVID=123431237
Diffstat (limited to 'src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerModule.java')
-rw-r--r--src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerModule.java82
1 files changed, 50 insertions, 32 deletions
diff --git a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerModule.java b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerModule.java
index 91cfd1d875..5f15524808 100644
--- a/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerModule.java
+++ b/src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerModule.java
@@ -14,61 +14,73 @@
package com.google.testing.junit.runner.junit4;
-import static dagger.Provides.Type.SET;
+import static com.google.inject.multibindings.Multibinder.newSetBinder;
import com.google.common.base.Optional;
import com.google.common.base.Ticker;
+import com.google.common.collect.ImmutableList;
import com.google.common.io.ByteStreams;
+import com.google.inject.AbstractModule;
+import com.google.inject.Provides;
+import com.google.inject.Singleton;
+import com.google.inject.multibindings.Multibinder;
import com.google.testing.junit.runner.internal.SignalHandlers;
import com.google.testing.junit.runner.util.TestNameProvider;
-import dagger.Module;
-import dagger.Provides;
-
import org.junit.runner.notification.RunListener;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.nio.file.Path;
-
-import javax.inject.Singleton;
+import java.util.List;
/**
- * Dagger module for real test runs.
+ * Guice module for real test runs.
*/
-@Module(includes = {JUnit4RunnerBaseModule.class, JUnit4InstanceModules.Config.class})
-public final class JUnit4RunnerModule {
- @Provides
- static Ticker ticker() {
- return Ticker.systemTicker();
+public class JUnit4RunnerModule extends AbstractModule {
+ private final Class<?> suite;
+ private final JUnit4Config config;
+ private final ImmutableList<String> unparsedArgs;
+
+ public static JUnit4RunnerModule create(Class<?> suite, List<String> args) {
+ JUnit4Options options = JUnit4Options.parse(System.getenv(), ImmutableList.copyOf(args));
+ JUnit4Config config = new JUnit4Config(
+ options.getTestIncludeFilter(),
+ options.getTestExcludeFilter(),
+ Optional.<Path>absent());
+ return new JUnit4RunnerModule(suite, config, ImmutableList.copyOf(options.getUnparsedArgs()));
}
- @Provides
- static SignalHandlers.HandlerInstaller signalHandlerInstaller() {
- return SignalHandlers.createRealHandlerInstaller();
+ private JUnit4RunnerModule(
+ Class<?> suite, JUnit4Config config, ImmutableList<String> unparsedArgs) {
+ this.suite = suite;
+ this.config = config;
+ this.unparsedArgs = unparsedArgs;
}
- @Provides(type = SET)
- static RunListener nameListener(JUnit4TestNameListener impl) {
- return impl;
- }
+ @Override
+ protected void configure() {
+ install(new JUnit4RunnerBaseModule(suite));
- @Provides(type = SET)
- static RunListener xmlListener(JUnit4TestXmlListener impl) {
- return impl;
- }
+ // We require explicit bindings so we don't use an unexpected just-in-time binding
+ bind(SignalHandlers.class);
- @Provides(type = SET)
- static RunListener stackTraceListener(JUnit4TestStackTraceListener impl) {
- return impl;
- }
+ // Normal bindings
+ bind(JUnit4Config.class).toInstance(config);
+ bind(Ticker.class).toInstance(Ticker.systemTicker());
+ bind(SignalHandlers.HandlerInstaller.class).toInstance(
+ SignalHandlers.createRealHandlerInstaller());
+ // Bind listeners
+ Multibinder<RunListener> listenerBinder = newSetBinder(binder(), RunListener.class);
+ listenerBinder.addBinding().to(JUnit4TestNameListener.class);
+ listenerBinder.addBinding().to(JUnit4TestXmlListener.class);
+ listenerBinder.addBinding().to(JUnit4TestStackTraceListener.class);
+ }
- @Provides
- @Singleton
- @Xml
- static OutputStream provideXmlStream(JUnit4Config config) {
+ @Provides @Singleton @Xml
+ OutputStream provideXmlStream() {
Optional<Path> path = config.getXmlOutputPath();
if (path.isPresent()) {
@@ -91,10 +103,16 @@ public final class JUnit4RunnerModule {
@Provides @Singleton
SettableCurrentRunningTest provideCurrentRunningTest() {
return new SettableCurrentRunningTest() {
- @Override
void setGlobalTestNameProvider(TestNameProvider provider) {
testNameProvider = provider;
}
};
}
+
+ /**
+ * Gets the list of unparsed command line arguments.
+ */
+ public ImmutableList<String> getUnparsedArgs() {
+ return unparsedArgs;
+ }
}