blob: 00ab61cb9623c15555c059d65d363414d8123e9f [file]
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package org.jetbrains.plugins.gradle.dsl
import com.intellij.psi.PsiMethod
import com.intellij.testFramework.RunAll
import groovy.transform.CompileStatic
import org.jetbrains.plugins.gradle.highlighting.GradleHighlightingBaseTest
import org.jetbrains.plugins.groovy.util.ResolveTest
import org.junit.Test
import static org.jetbrains.plugins.gradle.service.resolve.GradleCommonClassNames.*
@CompileStatic
class GradleDependenciesTest extends GradleHighlightingBaseTest implements ResolveTest {
@Override
protected List<String> getParentCalls() {
return []
}
@Test
void dependenciesTest() {
importProject("apply plugin: 'java'")
new RunAll().append {
'dependencies delegate'()
} append {
'add external module dependency delegate'()
} append {
'add self resolving dependency delegate'()
} append {
'add project dependency delegate'()
} append {
'add delegate method setter'()
} append {
'module delegate'()
} append {
'module delegate method setter'()
} append {
'components delegate'()
} append {
'modules delegate'()
} append {
'modules module delegate'()
} append {
'classpath configuration'()
} append {
'compile configuration'()
} append {
'buildscript classpath configuration'()
} append {
'buildscript compile configuration'()
} run()
}
void 'dependencies delegate'() {
doTest('dependencies { <caret> }') {
closureDelegateTest(GRADLE_API_DEPENDENCY_HANDLER, 1)
}
}
void 'add external module dependency delegate'() {
def data = [
'dependencies { add("compile", name: 42) { <caret> } }',
'dependencies { add("compile", [name:42]) { <caret> } }',
'dependencies { add("compile", ":42") { <caret> } }',
'dependencies { compile(name: 42) { <caret> } }',
'dependencies { compile([name:42]) { <caret> } }',
'dependencies { compile(":42") { <caret> } }',
'dependencies.add("compile", name: 42) { <caret> }',
'dependencies.add("compile", [name:42]) { <caret> }',
'dependencies.add("compile", ":42") { <caret> }',
'dependencies.compile(name: 42) { <caret> }',
'dependencies.compile([name:42]) { <caret> }',
'dependencies.compile(":42") { <caret> }',
]
doTest(data) {
closureDelegateTest(GRADLE_API_ARTIFACTS_EXTERNAL_MODULE_DEPENDENCY, 1)
}
}
void 'add self resolving dependency delegate'() {
def data = [
'dependencies { add("compile", files()) { <caret> } }',
'dependencies { add("compile", fileTree("libs")) { <caret> } }',
'dependencies { compile(files()) { <caret> } }',
'dependencies { compile(fileTree("libs")) { <caret> } }',
'dependencies.add("compile", files()) { <caret> }',
'dependencies.add("compile", fileTree("libs")) { <caret> }',
'dependencies.compile(files()) { <caret> }',
'dependencies.compile(fileTree("libs")) { <caret> }',
]
doTest(data) {
closureDelegateTest(GRADLE_API_ARTIFACTS_SELF_RESOLVING_DEPENDENCY, 1)
}
}
void 'add project dependency delegate'() {
def data = [
'dependencies { add("compile", project(":")) { <caret> } }',
'dependencies { compile(project(":")) { <caret> } }',
'dependencies.add("compile", project(":")) { <caret> }',
'dependencies.compile(project(":")) { <caret> }',
]
doTest(data) {
closureDelegateTest(GRADLE_API_ARTIFACTS_PROJECT_DEPENDENCY, 1)
}
}
void 'add delegate method setter'() {
doTest('dependencies { add("compile", "notation") { <caret>transitive(false) } }') {
setterMethodTest('transitive', 'setTransitive', GRADLE_API_ARTIFACTS_MODULE_DEPENDENCY)
}
}
void 'module delegate'() {
doTest('dependencies { module(":") {<caret>} }') {
closureDelegateTest(GRADLE_API_ARTIFACTS_CLIENT_MODULE_DEPENDENCY, 1)
}
}
void 'module delegate method setter'() {
doTest('dependencies { module(":") { <caret>changing(true) } }') {
setterMethodTest('changing', 'setChanging', GRADLE_API_ARTIFACTS_EXTERNAL_MODULE_DEPENDENCY)
}
}
void 'components delegate'() {
doTest('dependencies { components {<caret>} }') {
closureDelegateTest(GRADLE_API_COMPONENT_METADATA_HANDLER, 1)
}
}
void 'modules delegate'() {
doTest('dependencies { modules {<caret>} }') {
closureDelegateTest(GRADLE_API_COMPONENT_MODULE_METADATA_HANDLER, 1)
}
}
void 'modules module delegate'() {
doTest('dependencies { modules { module(":") { <caret> } } }') {
closureDelegateTest(GRADLE_API_COMPONENT_MODULE_METADATA_DETAILS, 1)
}
}
void 'classpath configuration'() {
doTest('dependencies { <caret>classpath("hi") }') {
resolveTest(null)
}
}
void 'compile configuration'() {
doTest('dependencies { <caret>compile("hi") }') {
methodTest(resolveTest(PsiMethod), "compile", GRADLE_API_DEPENDENCY_HANDLER)
}
}
void 'compile confiduration via property'() {
doTest('dependencies.<caret>testCompile("hi")') {
methodTest(resolveTest(PsiMethod), "testCompile", GRADLE_API_DEPENDENCY_HANDLER)
}
}
void 'buildscript classpath configuration'() {
doTest('buildscript { dependencies { <caret>classpath("hi") } }') {
methodTest(resolveTest(PsiMethod), "classpath", GRADLE_API_DEPENDENCY_HANDLER)
}
}
void 'buildscript compile configuration'() {
doTest('buildscript { dependencies { <caret>compile("hi") } }') {
resolveTest(null)
}
}
}