use of com.intellij.execution.configurations.RuntimeConfigurationError in project intellij-plugins by JetBrains.
the class JstdRunConfigurationVerifier method verifyTestCase.
@Nullable
private static TestFileStructurePack verifyTestCase(@NotNull Project project, @NotNull JstdRunSettings runSettings) throws RuntimeConfigurationException {
verifyJSFileType(runSettings);
if (runSettings.getTestCaseName().isEmpty()) {
throw new RuntimeConfigurationError("Test case name is empty.");
}
VirtualFile jsTestVirtualFile = VfsUtil.findFileByIoFile(new File(runSettings.getJsFilePath()), false);
if (jsTestVirtualFile == null) {
throw new RuntimeConfigurationWarning("Can't find JavaScript test file.");
}
JSFile jsFile = ObjectUtils.tryCast(PsiManager.getInstance(project).findFile(jsTestVirtualFile), JSFile.class);
if (jsFile == null) {
throw new RuntimeConfigurationWarning("Wrong JavaScript test file.");
}
TestFileStructurePack pack = TestFileStructureManager.fetchTestFileStructurePackByJsFile(jsFile);
if (pack != null) {
boolean found = pack.contains(runSettings.getTestCaseName(), null, JstdTestMethodNameRefiner.INSTANCE);
if (!found) {
throw new RuntimeConfigurationWarning("Can't find test case with name '" + runSettings.getTestCaseName() + "'.");
}
return pack;
}
return null;
}
use of com.intellij.execution.configurations.RuntimeConfigurationError in project intellij-plugins by JetBrains.
the class DartRemoteDebugConfiguration method checkConfiguration.
public void checkConfiguration() throws RuntimeConfigurationError {
final String path = myParameters.getDartProjectPath();
if (path.isEmpty()) {
throw new RuntimeConfigurationError("Dart project path is not specified");
}
final VirtualFile dir = LocalFileSystem.getInstance().findFileByPath(path);
if (dir == null || !dir.isDirectory()) {
throw new RuntimeConfigurationError("Folder not found: " + FileUtil.toSystemDependentName(path));
}
if (!ProjectRootManager.getInstance(getProject()).getFileIndex().isInContent(dir)) {
throw new RuntimeConfigurationError("Folder is not in project content: " + FileUtil.toSystemDependentName(path));
}
}
use of com.intellij.execution.configurations.RuntimeConfigurationError in project intellij-plugins by JetBrains.
the class FlexUnitPrecompileTask method execute.
public boolean execute(CompileContext context) {
final RunConfiguration runConfiguration = CompileStepBeforeRun.getRunConfiguration(context.getCompileScope());
if (!(runConfiguration instanceof FlexUnitRunConfiguration)) {
return true;
}
final Ref<Boolean> isDumb = new Ref<>(false);
final RuntimeConfigurationException validationError = ApplicationManager.getApplication().runReadAction((NullableComputable<RuntimeConfigurationException>) () -> {
if (DumbService.getInstance(myProject).isDumb()) {
isDumb.set(true);
return null;
}
try {
runConfiguration.checkConfiguration();
return null;
} catch (RuntimeConfigurationException e) {
return e;
}
});
if (isDumb.get()) {
context.addMessage(CompilerMessageCategory.ERROR, FlexBundle.message("dumb.mode.flex.unit.warning"), null, -1, -1);
return false;
}
if (validationError != null) {
context.addMessage(CompilerMessageCategory.ERROR, FlexBundle.message("configuration.not.valid", validationError.getMessage()), null, -1, -1);
return false;
}
int flexUnitPort = ServerConnectionBase.getFreePort(FLEX_UNIT_PORT_START, PORTS_ATTEMPT_NUMBER);
if (flexUnitPort == -1) {
context.addMessage(CompilerMessageCategory.ERROR, FlexBundle.message("no.free.port"), null, -1, -1);
return false;
}
final int socketPolicyPort;
if (SystemInfo.isWindows && ServerConnectionBase.tryPort(SwfPolicyFileConnection.DEFAULT_PORT)) {
socketPolicyPort = SwfPolicyFileConnection.DEFAULT_PORT;
} else {
socketPolicyPort = ServerConnectionBase.getFreePort(SWC_POLICY_PORT_START, PORTS_ATTEMPT_NUMBER);
}
if (socketPolicyPort == -1) {
context.addMessage(CompilerMessageCategory.ERROR, FlexBundle.message("no.free.port"), null, -1, -1);
return false;
}
final FlexUnitRunnerParameters params = ((FlexUnitRunConfiguration) runConfiguration).getRunnerParameters();
params.setPort(flexUnitPort);
params.setSocketPolicyPort(socketPolicyPort);
final Ref<Module> moduleRef = new Ref<>();
final Ref<FlexBuildConfiguration> bcRef = new Ref<>();
final Ref<FlexUnitSupport> supportRef = new Ref<>();
ApplicationManager.getApplication().runReadAction(() -> {
if (DumbService.getInstance(myProject).isDumb())
return;
try {
final Pair<Module, FlexBuildConfiguration> moduleAndBC = params.checkAndGetModuleAndBC(myProject);
moduleRef.set(moduleAndBC.first);
bcRef.set(moduleAndBC.second);
supportRef.set(FlexUnitSupport.getSupport(moduleAndBC.second, moduleAndBC.first));
} catch (RuntimeConfigurationError e) {
// already checked above, can't happen
throw new RuntimeException(e);
}
});
final Module module = moduleRef.get();
final FlexBuildConfiguration bc = bcRef.get();
final FlexUnitSupport support = supportRef.get();
if (bc == null || support == null) {
context.addMessage(CompilerMessageCategory.ERROR, FlexBundle.message("dumb.mode.flex.unit.warning"), null, -1, -1);
return false;
}
final GlobalSearchScope moduleScope = GlobalSearchScope.moduleScope(module);
StringBuilder imports = new StringBuilder();
StringBuilder code = new StringBuilder();
final boolean flexUnit4;
switch(params.getScope()) {
case Class:
{
final Ref<Boolean> isFlexUnit1Suite = new Ref<>();
final Ref<Boolean> isSuite = new Ref<>();
Set<String> customRunners = ApplicationManager.getApplication().runReadAction((NullableComputable<Set<String>>) () -> {
if (DumbService.getInstance(myProject).isDumb())
return null;
Set<String> result = new THashSet<>();
final JSClass clazz = (JSClass) ActionScriptClassResolver.findClassByQNameStatic(params.getClassName(), moduleScope);
collectCustomRunners(result, clazz, support, null);
isFlexUnit1Suite.set(support.isFlexUnit1SuiteSubclass(clazz));
isSuite.set(support.isSuite(clazz));
return result;
});
if (customRunners == null) {
context.addMessage(CompilerMessageCategory.ERROR, FlexBundle.message("dumb.mode.flex.unit.warning"), null, -1, -1);
return false;
}
// FlexUnit4 can't run FlexUnit1 TestSuite subclasses, fallback to FlexUnit1 runner
flexUnit4 = support.flexUnit4Present && !isFlexUnit1Suite.get();
generateImportCode(imports, params.getClassName(), customRunners);
generateTestClassCode(code, params.getClassName(), customRunners, isSuite.get());
}
break;
case Method:
{
Set<String> customRunners = ApplicationManager.getApplication().runReadAction((NullableComputable<Set<String>>) () -> {
if (DumbService.getInstance(myProject).isDumb())
return null;
Set<String> result = new THashSet<>();
final JSClass clazz = (JSClass) ActionScriptClassResolver.findClassByQNameStatic(params.getClassName(), moduleScope);
collectCustomRunners(result, clazz, support, null);
return result;
});
if (customRunners == null) {
context.addMessage(CompilerMessageCategory.ERROR, FlexBundle.message("dumb.mode.flex.unit.warning"), null, -1, -1);
return false;
}
flexUnit4 = support.flexUnit4Present;
generateImportCode(imports, params.getClassName(), customRunners);
generateTestMethodCode(code, params.getClassName(), params.getMethodName(), customRunners);
}
break;
case Package:
{
final Collection<Pair<String, Set<String>>> classes = ApplicationManager.getApplication().runReadAction((NullableComputable<Collection<Pair<String, Set<String>>>>) () -> {
if (DumbService.getInstance(myProject).isDumb())
return null;
final Collection<Pair<String, Set<String>>> result = new ArrayList<>();
JSPackageIndex.processElementsInScopeRecursive(params.getPackageName(), new JSPackageIndex.PackageQualifiedElementsProcessor() {
public boolean process(String qualifiedName, JSPackageIndexInfo.Kind kind, boolean isPublic) {
if (kind == JSPackageIndexInfo.Kind.CLASS) {
PsiElement clazz = ActionScriptClassResolver.findClassByQNameStatic(qualifiedName, moduleScope);
if (clazz instanceof JSClass && support.isTestClass((JSClass) clazz, false)) {
Set<String> customRunners = new THashSet<>();
collectCustomRunners(customRunners, (JSClass) clazz, support, null);
result.add(Pair.create(((JSClass) clazz).getQualifiedName(), customRunners));
}
}
return true;
}
}, moduleScope, myProject);
return result;
});
if (classes == null) {
context.addMessage(CompilerMessageCategory.ERROR, FlexBundle.message("dumb.mode.flex.unit.warning"), null, -1, -1);
return false;
}
if (classes.isEmpty()) {
String message = MessageFormat.format("No tests found in package ''{0}''", params.getPackageName());
context.addMessage(CompilerMessageCategory.WARNING, message, null, -1, -1);
return false;
}
flexUnit4 = support.flexUnit4Present;
for (Pair<String, Set<String>> classAndRunner : classes) {
generateImportCode(imports, classAndRunner.first, classAndRunner.second);
generateTestClassCode(code, classAndRunner.first, classAndRunner.second, false);
}
}
break;
default:
flexUnit4 = false;
assert false : "Unknown scope: " + params.getScope();
}
if (!flexUnit4 && bc.isPureAs()) {
context.addMessage(CompilerMessageCategory.ERROR, FlexBundle.message("cant.execute.flexunit1.for.pure.as.bc"), null, -1, -1);
}
String launcherText;
try {
launcherText = getLauncherTemplate(bc);
} catch (IOException e) {
context.addMessage(CompilerMessageCategory.ERROR, e.getMessage(), null, -1, -1);
return false;
}
final boolean desktop = bc.getTargetPlatform() == TargetPlatform.Desktop;
if (desktop) {
generateImportCode(imports, "flash.desktop.NativeApplication");
}
launcherText = replace(launcherText, "/*imports*/", imports.toString());
launcherText = replace(launcherText, "/*test_runner*/", flexUnit4 ? FlexCommonUtils.FLEXUNIT_4_TEST_RUNNER : FlexCommonUtils.FLEXUNIT_1_TEST_RUNNER);
launcherText = replace(launcherText, "/*code*/", code.toString());
launcherText = replace(launcherText, "/*port*/", String.valueOf(flexUnitPort));
launcherText = replace(launcherText, "/*socketPolicyPort*/", String.valueOf(socketPolicyPort));
launcherText = replace(launcherText, "/*module*/", module.getName());
if (!bc.isPureAs()) {
final FlexUnitRunnerParameters.OutputLogLevel logLevel = params.getOutputLogLevel();
launcherText = replace(launcherText, "/*isLogEnabled*/", logLevel != null ? "1" : "0");
launcherText = replace(launcherText, "/*logLevel*/", logLevel != null ? logLevel.getFlexConstant() : FlexUnitRunnerParameters.OutputLogLevel.All.getFlexConstant());
}
final File tmpDir = new File(getPathToFlexUnitTempDirectory(myProject));
boolean ok = true;
if (tmpDir.isFile())
ok &= FileUtil.delete(tmpDir);
if (!tmpDir.isDirectory())
ok &= tmpDir.mkdirs();
if (!ok) {
final String message = UIBundle.message("create.new.folder.could.not.create.folder.error.message", FileUtil.toSystemDependentName(tmpDir.getPath()));
context.addMessage(CompilerMessageCategory.ERROR, message, null, -1, -1);
return false;
}
final String fileName = FlexCommonUtils.FLEX_UNIT_LAUNCHER + FlexCommonUtils.getFlexUnitLauncherExtension(bc.getNature());
final File launcherFile = new File(tmpDir, fileName);
FileUtil.delete(launcherFile);
try {
FileUtil.writeToFile(launcherFile, launcherText);
} catch (IOException e) {
context.addMessage(CompilerMessageCategory.ERROR, e.getMessage(), null, -1, -1);
return false;
}
context.putUserData(FILES_TO_DELETE, Collections.singletonList(launcherFile.getPath()));
return true;
}
use of com.intellij.execution.configurations.RuntimeConfigurationError in project intellij-plugins by JetBrains.
the class FlashRunnerParameters method reportWarnings.
public void reportWarnings(final Project project) throws RuntimeConfigurationWarning {
try {
final Pair<Module, FlexBuildConfiguration> moduleAndBC = super.checkAndGetModuleAndBC(project);
final Module module = moduleAndBC.first;
final FlexBuildConfiguration bc = moduleAndBC.second;
final Ref<String> errorMessageRef = new Ref<>(null);
final Consumer<FlashProjectStructureProblem> consumer = problem -> errorMessageRef.set(problem.errorMessage);
if (bc.getTargetPlatform() == TargetPlatform.Desktop) {
checkAirVersionIfCustomDescriptor(module, bc.getSdk(), bc.getAirDesktopPackagingOptions(), consumer, true, getBCName());
} else if (bc.getTargetPlatform() == TargetPlatform.Mobile) {
switch(myMobileRunTarget) {
case Emulator:
switch(myAppDescriptorForEmulator) {
case Android:
checkAirVersionIfCustomDescriptor(module, bc.getSdk(), bc.getAndroidPackagingOptions(), consumer, true, getBCName());
break;
case IOS:
checkAirVersionIfCustomDescriptor(module, bc.getSdk(), bc.getIosPackagingOptions(), consumer, true, getBCName());
break;
}
break;
case AndroidDevice:
checkAirVersionIfCustomDescriptor(module, bc.getSdk(), bc.getAndroidPackagingOptions(), consumer, true, getBCName());
break;
case iOSSimulator:
case iOSDevice:
checkAirVersionIfCustomDescriptor(module, bc.getSdk(), bc.getIosPackagingOptions(), consumer, true, getBCName());
break;
}
}
if (!errorMessageRef.isNull()) {
throw new RuntimeConfigurationWarning(errorMessageRef.get());
}
} catch (RuntimeConfigurationError e) {
/* should be already checked somewhere else */
}
}
use of com.intellij.execution.configurations.RuntimeConfigurationError in project intellij-plugins by JetBrains.
the class FlashRunnerParameters method doCheck.
private void doCheck(final Pair<Module, FlexBuildConfiguration> moduleAndBC) throws RuntimeConfigurationError {
final FlexBuildConfiguration bc = moduleAndBC.second;
final Sdk sdk = bc.getSdk();
if (sdk == null) {
throw new RuntimeConfigurationError(FlexCommonBundle.message("sdk.not.set.for.bc.0.of.module.1", bc.getName(), moduleAndBC.first.getName()));
}
if (myOverrideMainClass) {
if (myOverriddenMainClass.isEmpty()) {
throw new RuntimeConfigurationError(FlexBundle.message("main.class.not.set"));
}
PsiElement clazz = ActionScriptClassResolver.findClassByQNameStatic(myOverriddenMainClass, moduleAndBC.first.getModuleScope(true));
if (!(clazz instanceof JSClass)) {
throw new RuntimeConfigurationError(FlexBundle.message("main.class.not.found", myOverriddenMainClass, bc.getName()));
}
if (myOverriddenOutputFileName.isEmpty()) {
throw new RuntimeConfigurationError(FlexBundle.message("output.file.name.not.specified"));
}
if (!myOverriddenOutputFileName.toLowerCase().endsWith(".swf")) {
throw new RuntimeConfigurationError(FlexBundle.message("output.file.must.have.swf.extension"));
}
} else {
if (bc.getOutputType() != OutputType.Application) {
throw new RuntimeConfigurationError(FlexBundle.message("bc.does.not.produce.app", getBCName(), getModuleName()));
}
}
switch(bc.getTargetPlatform()) {
case Web:
if (myLaunchUrl) {
if (myUrl.isEmpty())
throw new RuntimeConfigurationError(FlexBundle.message("flex.run.config.url.not.set"));
try {
if (BrowserUtil.getURL(myUrl) == null)
throw new RuntimeConfigurationError(FlexBundle.message("flex.run.config.incorrect.url"));
} catch (MalformedURLException e) {
throw new RuntimeConfigurationError(FlexBundle.message("flex.run.config.incorrect.url"));
}
//if (myLauncherParameters.getLauncherType() == LauncherParameters.LauncherType.Player) {
// throw new RuntimeConfigurationError(FlexBundle.message("flex.run.config.url.can.not.be.run.with.flash.player"));
//}
}
if (myLauncherParameters.getLauncherType() == LauncherParameters.LauncherType.Player) {
if (StringUtil.isEmptyOrSpaces(myLauncherParameters.getPlayerPath())) {
throw new RuntimeConfigurationError(FlexBundle.message("path.to.flash.player.not.set"));
}
if (!new File(myLauncherParameters.getPlayerPath()).exists()) {
throw new RuntimeConfigurationError(FlexBundle.message("flash.player.not.found", myLauncherParameters.getPresentableText()));
}
}
checkDebuggerSdk();
break;
case Desktop:
checkAdlAndAirRuntime(sdk);
if (bc.getOutputType() == OutputType.Application) {
checkCustomDescriptor(bc.getAirDesktopPackagingOptions(), getBCName(), getModuleName());
}
break;
case Mobile:
switch(myMobileRunTarget) {
case Emulator:
checkAdlAndAirRuntime(sdk);
if (bc.getOutputType() == OutputType.Application) {
switch(myAppDescriptorForEmulator) {
case Android:
checkCustomDescriptor(bc.getAndroidPackagingOptions(), getBCName(), getModuleName());
break;
case IOS:
checkCustomDescriptor(bc.getIosPackagingOptions(), getBCName(), getModuleName());
break;
}
}
break;
case AndroidDevice:
if (bc.getOutputType() == OutputType.Application) {
checkCustomDescriptor(bc.getAndroidPackagingOptions(), getBCName(), getModuleName());
}
break;
case iOSSimulator:
if (bc.getOutputType() == OutputType.Application) {
checkCustomDescriptor(bc.getIosPackagingOptions(), getBCName(), getModuleName());
}
if (!SystemInfo.isMac) {
throw new RuntimeConfigurationError(FlexBundle.message("ios.simulator.on.mac.only.warning"));
}
if (myIOSSimulatorSdkPath.isEmpty()) {
throw new RuntimeConfigurationError(FlexBundle.message("ios.simulator.sdk.not.set"));
} else if (!new File(FileUtil.toSystemDependentName(myIOSSimulatorSdkPath)).isDirectory()) {
throw new RuntimeConfigurationError(FlexBundle.message("ios.simulator.sdk.not.found", FileUtil.toSystemDependentName(myIOSSimulatorSdkPath)));
}
break;
case iOSDevice:
if (bc.getOutputType() == OutputType.Application) {
checkCustomDescriptor(bc.getIosPackagingOptions(), getBCName(), getModuleName());
}
break;
}
break;
}
}
Aggregations