diff options
author | Googler <noreply@google.com> | 2016-05-27 17:25:16 +0000 |
---|---|---|
committer | Dmitry Lomov <dslomov@google.com> | 2016-05-30 09:19:26 +0000 |
commit | 6f418edf764a4dad4166ffcde49b0dbbc271214e (patch) | |
tree | 5c58d273abd04023ebc3b0617662eaf777c12d08 /src/java_tools/junitrunner/java/com/google/testing/junit/runner/junit4/JUnit4RunnerModule.java | |
parent | 2ce814bf7bb5b43a35dc445c395570e809b44db7 (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.java | 82 |
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; + } } |