-
Notifications
You must be signed in to change notification settings - Fork 293
/
Copy pathtest-suites.gradle
76 lines (69 loc) · 2.06 KB
/
test-suites.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import org.gradle.api.plugins.jvm.JvmTestSuite
ext.addTestSuiteExtendingForDir = (String testSuiteName, String parentSuiteName, String dirName) -> {
testing {
suites {
create(testSuiteName, JvmTestSuite, {
sources {
java {
srcDirs = ["src/$dirName/java"]
}
resources {
srcDirs = ["src/$dirName/resources"]
}
if (project.plugins.hasPlugin('groovy')) {
groovy {
srcDirs = ["src/$dirName/groovy"]
}
}
if (project.plugins.hasPlugin('kotlin')) {
kotlin {
srcDirs = ["src/$dirName/kotlin"]
}
}
if (project.plugins.hasPlugin('scala')) {
scala {
srcDirs = ["src/$dirName/scala"]
}
}
}
dependencies {
implementation project(project.path)
}
})
}
}
configurations {
def extendConf = {
String suffix ->
def config = named("${testSuiteName}${suffix}")
def parentConfig = named("${parentSuiteName}${suffix}")
if (parentConfig.present) {
config.configure {
extendsFrom(parentConfig.get())
}
}
if (testSuiteName ==~ /.*ForkedTest\z/) {
def nonForkedBaseConfName = testSuiteName - ~/Forked/
def nonForkedConfig = maybeCreate("${nonForkedBaseConfName}${suffix}")
config.configure {
extendsFrom(nonForkedConfig)
}
}
}
extendConf('CompileOnly')
extendConf('Implementation')
extendConf('RuntimeOnly')
extendConf('AnnotationProcessor')
}
tasks.register("${testSuiteName}Jar", Jar) {
dependsOn(tasks.named("${testSuiteName}Classes").get())
from(sourceSets.named(testSuiteName).get().output)
archiveClassifier = testSuiteName
}
}
ext.addTestSuiteForDir = (String testSuiteName, String dirName) -> {
ext.addTestSuiteExtendingForDir(testSuiteName, 'test', dirName)
}
ext.addTestSuite = (String testSuiteName) -> {
ext.addTestSuiteForDir(testSuiteName, testSuiteName)
}