-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathbuild.gradle.kts
90 lines (72 loc) · 2.96 KB
/
build.gradle.kts
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
@file:Suppress("UnstableApiUsage", "HttpUrlsUsage")
plugins {
id("groovy")
id("jvm-test-suite")
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(8)
vendor = JvmVendorSpec.AZUL
}
}
val gradleScripts = configurations.dependencyScope("gradleScripts") {
attributes.attribute(Usage.USAGE_ATTRIBUTE, objects.named("gradle-build-validation-scripts"))
}.get()
val gradleScriptsResolvable = configurations.resolvable("${gradleScripts.name}Resolvable") {
extendsFrom(gradleScripts)
attributes.attribute(Usage.USAGE_ATTRIBUTE, objects.named("gradle-build-validation-scripts"))
}
val mavenScripts = configurations.dependencyScope("mavenScripts") {
attributes.attribute(Usage.USAGE_ATTRIBUTE, objects.named("maven-build-validation-scripts"))
}.get()
val mavenScriptsResolvable = configurations.resolvable("${mavenScripts.name}Resolvable") {
extendsFrom(mavenScripts)
attributes.attribute(Usage.USAGE_ATTRIBUTE, objects.named("maven-build-validation-scripts"))
}
repositories {
mavenCentral()
}
dependencies {
gradleScripts(project(":"))
mavenScripts(project(":"))
}
val test by testing.suites.getting(JvmTestSuite::class) {
useSpock()
dependencies {
implementation(gradleTestKit())
}
targets.configureEach {
testTask {
val develocityKeysFile = gradle.gradleUserHomeDir.resolve("develocity/keys.properties")
val develocityKeysEnv = providers.environmentVariable("DEVELOCITY_ACCESS_KEY")
val testDevelocityServer = providers.gradleProperty("buildValidationTestDevelocityServer")
onlyIf("has credentials for Develocity testing server") {
val testDevelocityServerHost = testDevelocityServer.get().removePrefix("https://").removePrefix("http://")
(develocityKeysFile.exists() && develocityKeysFile.readText().contains(testDevelocityServerHost))
|| develocityKeysEnv.map { it.contains(testDevelocityServerHost) }.getOrElse(false)
}
jvmArgumentProviders.add(objects.newInstance<BuildValidationTestConfigurationProvider>().apply {
develocityServer = testDevelocityServer
jdk8HomeDirectory = javaLauncher.map { it.metadata.installationPath.asFile.absolutePath }
})
}
}
}
tasks.processTestResources {
from(gradleScriptsResolvable)
from(mavenScriptsResolvable)
}
abstract class BuildValidationTestConfigurationProvider : CommandLineArgumentProvider {
@get:Input
abstract val develocityServer: Property<String>
// JDK version is already an input to the test task.
// Its location on disk doesn't matter.
@get:Internal
abstract val jdk8HomeDirectory: Property<String>
override fun asArguments(): List<String> {
return listOf(
"-Dbuild-validation.test.develocity.server=${develocityServer.get()}",
"-Dbuild-validation.test.jdk8-home=${jdk8HomeDirectory.get()}"
)
}
}