From 3301f1f614101836cd33a3ab8b6c4b6212386f9e Mon Sep 17 00:00:00 2001 From: Natalia Ukhorskaya Date: Tue, 5 Apr 2016 13:58:50 +0300 Subject: [PATCH] Configure Kotlin: do not show notification when apply directive contains double quotes --- .../KotlinWithGradleConfigurator.java | 13 +++++++--- .../gradle/plugin_present_after.gradle | 26 +++++++++++++++++++ .../gradle/plugin_present_before.gradle | 21 +++++++++++++++ ...ureProjectByChangingFileTestGenerated.java | 6 +++++ 4 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 idea/testData/configuration/gradle/plugin_present_after.gradle create mode 100644 idea/testData/configuration/gradle/plugin_present_before.gradle diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.java b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.java index 084dc058306..25e5c00290e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.java +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.java @@ -81,7 +81,13 @@ public abstract class KotlinWithGradleConfigurator implements KotlinProjectConfi private boolean isFileConfigured(GroovyFile projectGradleFile) { String fileText = projectGradleFile.getText(); - return fileText.contains(getApplyPluginDirective()) && fileText.contains(LIBRARY); + return containsDirective(fileText, getApplyPluginDirective()) && fileText.contains(LIBRARY); + } + + private static boolean containsDirective(@NotNull String fileText, @NotNull String directive) { + return fileText.contains(directive) + || fileText.contains(directive.replace("\"", "'")) + || fileText.contains(directive.replace("'", "\"")); } @Override @@ -160,7 +166,8 @@ public abstract class KotlinWithGradleConfigurator implements KotlinProjectConfi String dependencyString = String.format( "%s \"%s:%s:%s\"", - groovyScope, libraryDescriptor.getLibraryGroupId(), libraryDescriptor.getLibraryArtifactId(), libraryDescriptor.getMaxVersion()); + groovyScope, libraryDescriptor.getLibraryGroupId(), libraryDescriptor.getLibraryArtifactId(), + libraryDescriptor.getMaxVersion()); GrClosableBlock dependenciesBlock = getDependenciesBlock(gradleFile); addLastExpressionInBlockIfNeeded(dependencyString, dependenciesBlock); @@ -228,7 +235,7 @@ public abstract class KotlinWithGradleConfigurator implements KotlinProjectConfi protected boolean addElementsToModuleFile(@NotNull GroovyFile file, @NotNull String version) { boolean wasModified = false; - if (!file.getText().contains(getApplyPluginDirective())) { + if (!containsDirective(file.getText(), getApplyPluginDirective())) { GrExpression apply = GroovyPsiElementFactory.getInstance(file.getProject()).createExpressionFromText(getApplyPluginDirective()); GrApplicationStatement applyStatement = getApplyStatement(file); if (applyStatement != null) { diff --git a/idea/testData/configuration/gradle/plugin_present_after.gradle b/idea/testData/configuration/gradle/plugin_present_after.gradle new file mode 100644 index 00000000000..e166c49802b --- /dev/null +++ b/idea/testData/configuration/gradle/plugin_present_after.gradle @@ -0,0 +1,26 @@ +apply plugin: "java" +apply plugin: "kotlin" + +sourceCompatibility = 1.5 +version = '1.0' + +dependencies { + testCompile group: 'junit', name: 'junit', version: '4.11' + compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" +} + +buildscript { + ext.kotlin_version = '$VERSION$' + repositories { + mavenCentral() + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} +sourceSets { + main.java.srcDirs += 'src/main/kotlin' +} +repositories { + mavenCentral() +} diff --git a/idea/testData/configuration/gradle/plugin_present_before.gradle b/idea/testData/configuration/gradle/plugin_present_before.gradle new file mode 100644 index 00000000000..9da7df5a6ee --- /dev/null +++ b/idea/testData/configuration/gradle/plugin_present_before.gradle @@ -0,0 +1,21 @@ +apply plugin: "java" +apply plugin: "kotlin" + +sourceCompatibility = 1.5 +version = '1.0' + +dependencies { + testCompile group: 'junit', name: 'junit', version: '4.11' +} + +buildscript { + repositories { + mavenCentral() + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} +sourceSets { + main.java.srcDirs += 'src/main/kotlin' +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureProjectByChangingFileTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureProjectByChangingFileTestGenerated.java index ed35fd5ad5f..475fad293f7 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureProjectByChangingFileTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureProjectByChangingFileTestGenerated.java @@ -48,6 +48,12 @@ public class ConfigureProjectByChangingFileTestGenerated extends AbstractConfigu String fileName = KotlinTestUtils.navigationMetadata("idea/testData/configuration/gradle/missedLibrary_before.gradle"); doTestGradle(fileName); } + + @TestMetadata("plugin_present_before.gradle") + public void testPlugin_present() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/configuration/gradle/plugin_present_before.gradle"); + doTestGradle(fileName); + } } @TestMetadata("idea/testData/configuration/maven")