package com.jetbrains.lang.dart.ide.runner.test; import com.intellij.execution.Executor; import com.intellij.execution.configurations.RunConfigurationBase; import com.intellij.execution.configurations.RunProfileState; import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.execution.testframework.actions.AbstractRerunFailedTestsAction; import com.intellij.openapi.module.Module; import com.intellij.openapi.ui.ComponentContainer; import com.jetbrains.lang.dart.ide.runner.base.DartRunConfiguration; import com.jetbrains.lang.dart.ide.runner.server.DartCommandLineRunnerParameters; import org.jetbrains.annotations.NotNull; class DartTestRerunnerAction extends AbstractRerunFailedTestsAction { public DartTestRerunnerAction(@NotNull ComponentContainer componentContainer) { super(componentContainer); } @Override protected MyRunProfile getRunProfile(@NotNull ExecutionEnvironment environment) { final RunConfigurationBase configuration = (RunConfigurationBase)myConsoleProperties.getConfiguration(); final DartTestRerunner runner = new DartTestRerunner(environment, getFailedTests(configuration.getProject())); return new RerunProfile(configuration, runner); } private static class RerunProfile extends MyRunProfile implements DartRunConfiguration { private final DartTestRerunner runner; private RerunProfile(RunConfigurationBase configuration, DartTestRerunner runner) { super(configuration); this.runner = runner; } @NotNull @Override public DartCommandLineRunnerParameters getRunnerParameters() { return ((DartRunConfiguration)runner.getEnvironment().getRunProfile()).getRunnerParameters(); } @Override @NotNull public Module[] getModules() { return runner.getModulesToCompile(); } @Override public RunProfileState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment env) { return runner; } } }