package org.elixir_lang.mix.runner.exunit;
import com.intellij.execution.ExecutionException;
import com.intellij.execution.Executor;
import com.intellij.execution.configurations.RunConfiguration;
import com.intellij.execution.configurations.RunProfileState;
import com.intellij.execution.runners.ExecutionEnvironment;
import com.intellij.openapi.options.SettingsEditor;
import com.intellij.openapi.project.Project;
import org.elixir_lang.mix.runner.MixRunConfigurationBase;
import org.elixir_lang.mix.settings.MixSettings;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public final class MixExUnitRunConfiguration extends MixRunConfigurationBase {
MixExUnitRunConfiguration(@NotNull String name, @NotNull Project project){
super(name, project, MixExUnitRunConfigurationFactory.getInstance());
}
@NotNull
@Override
public SettingsEditor<? extends RunConfiguration> getConfigurationEditor() {
return new MixExUnitRunConfigurationEditorForm();
}
@NotNull
@Override
public RunProfileState getState(@NotNull Executor executor,
@NotNull ExecutionEnvironment environment) throws ExecutionException {
return new MixExUnitRunningState(environment, this);
}
@NotNull
public List<String> getMixArgs() {
List<String> params = super.getMixArgs();
MixSettings mixSettings = MixSettings.getInstance(getProject());
String task = mixSettings.getSupportsFormatterOption() ? "test" : "test_with_formatter";
ArrayList<String> mixArgs = new ArrayList<>();
mixArgs.addAll(Arrays.asList(task, "--formatter", "TeamCityExUnitFormatter"));
mixArgs.addAll(params);
return mixArgs;
}
}