/* * Copyright 2016-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.buck.intellij.ideabuck.configurations; import com.facebook.buck.intellij.ideabuck.build.BuckBuildManager; import com.intellij.execution.ExecutionException; import com.intellij.execution.Executor; import com.intellij.execution.configurations.ConfigurationFactory; import com.intellij.execution.configurations.LocatableConfigurationBase; import com.intellij.execution.configurations.RunConfiguration; import com.intellij.execution.configurations.RunProfileState; import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.execution.runners.RunConfigurationWithSuppressedDefaultRunAction; import com.intellij.notification.Notification; import com.intellij.notification.NotificationType; import com.intellij.notification.Notifications; import com.intellij.openapi.options.SettingsEditor; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.DefaultJDOMExternalizer; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.WriteExternalException; import org.jdom.Element; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class TestConfiguration extends LocatableConfigurationBase implements RunConfigurationWithSuppressedDefaultRunAction { public final Data data = new Data(); protected TestConfiguration(Project project, @NotNull ConfigurationFactory factory, String name) { super(project, factory, name); } @NotNull @Override public SettingsEditor<? extends RunConfiguration> getConfigurationEditor() { return new TestConfigurationEditor(); } @Nullable @Override public RunProfileState getState( @NotNull Executor executor, @NotNull ExecutionEnvironment environment) throws ExecutionException { final BuckBuildManager buildManager = BuckBuildManager.getInstance(getProject()); if (buildManager.isBuilding()) { final Notification notification = new Notification( "", "Can't run test. Buck is already running!", "", NotificationType.ERROR); Notifications.Bus.notify(notification); return null; } return new TestExecutionState(this, getProject()); } @Override public void readExternal(Element element) throws InvalidDataException { super.readExternal(element); DefaultJDOMExternalizer.readExternal(data, element); } @Override public void writeExternal(Element element) throws WriteExternalException { super.writeExternal(element); DefaultJDOMExternalizer.writeExternal(data, element); } public static class Data { public String target = ""; public String additionalParams = ""; public String testSelectors = ""; } }