Skip to content

Commit ca4f3a3

Browse files
authored
Run gradle integration tests with configuration cache enabled by default (#88148)
This changes AbstractGradleFuncTest to run with configuration cache enabled by default. That gives us better test coverage on how our build logic works with configuration cache enabled and makes it explicit which parts are not yet working. We fixed some minor configuration cache related issues in our code.
1 parent 3e1242b commit ca4f3a3

27 files changed

+161
-108
lines changed

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/fixtures/LocalRepositoryFixture.groovy

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,20 @@ class LocalRepositoryFixture extends ExternalResource{
1717

1818
private TemporaryFolder temporaryFolder
1919

20-
LocalRepositoryFixture(TemporaryFolder temporaryFolder){
21-
this.temporaryFolder = temporaryFolder
20+
LocalRepositoryFixture(){
21+
this.temporaryFolder = new TemporaryFolder()
22+
}
23+
24+
@Override
25+
protected void before() throws Throwable {
26+
super.before()
27+
temporaryFolder.before()
28+
}
29+
30+
@Override
31+
protected void after() {
32+
super.after()
33+
temporaryFolder.after()
2234
}
2335

2436
void generateJar(String group, String module, String version, String... clazzNames){

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/BuildPluginFuncTest.groovy

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@ package org.elasticsearch.gradle.internal
1010

1111
import org.apache.commons.io.IOUtils
1212
import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest
13+
import org.elasticsearch.gradle.fixtures.LocalRepositoryFixture
1314
import org.gradle.testkit.runner.TaskOutcome
15+
import org.junit.ClassRule
16+
import org.junit.rules.TemporaryFolder
17+
import spock.lang.Shared
1418

1519
import java.nio.charset.StandardCharsets
1620
import java.util.zip.ZipEntry
@@ -20,6 +24,10 @@ import static org.elasticsearch.gradle.fixtures.TestClasspathUtils.setupJarHellJ
2024

2125
class BuildPluginFuncTest extends AbstractGradleFuncTest {
2226

27+
@Shared
28+
@ClassRule
29+
public LocalRepositoryFixture repository = new LocalRepositoryFixture()
30+
2331
def EXAMPLE_LICENSE = """\
2432
Redistribution and use in source and binary forms, with or without
2533
modification, are permitted provided that the following conditions
@@ -120,6 +128,8 @@ class BuildPluginFuncTest extends AbstractGradleFuncTest {
120128

121129
def "applies checks"() {
122130
given:
131+
repository.generateJar("org.elasticsearch", "build-conventions", "unspecified", 'org.acme.CheckstyleStuff')
132+
repository.configureBuild(buildFile)
123133
setupJarHellJar(dir('local-repo/org/elasticsearch/elasticsearch-core/current/'))
124134
file("licenses/hamcrest-core-1.3.jar.sha1").text = "42a25dc3219429f0e5d060061f71acb49bf010a0"
125135
file("licenses/hamcrest-core-LICENSE.txt").text = EXAMPLE_LICENSE

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchJavaPluginFuncTest.groovy

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,22 @@
88

99
package org.elasticsearch.gradle.internal
1010

11-
import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest
11+
import org.elasticsearch.gradle.fixtures.AbstractGradleInternalPluginFuncTest
12+
import org.gradle.api.Plugin
1213

13-
class ElasticsearchJavaPluginFuncTest extends AbstractGradleFuncTest {
14+
class ElasticsearchJavaPluginFuncTest extends AbstractGradleInternalPluginFuncTest {
15+
16+
Class<? extends Plugin> pluginClassUnderTest = ElasticsearchJavaPlugin.class
1417

1518
def "compatibility options are resolved from from build params minimum runtime version"() {
1619
when:
17-
buildFile.text = """
18-
plugins {
19-
id 'elasticsearch.global-build-info'
20-
}
20+
buildFile.text << """
2121
import org.elasticsearch.gradle.Architecture
2222
import org.elasticsearch.gradle.internal.info.BuildParams
2323
BuildParams.init { it.setMinimumRuntimeVersion(JavaVersion.VERSION_1_10) }
2424
25-
apply plugin:'elasticsearch.java'
26-
27-
assert compileJava.sourceCompatibility == JavaVersion.VERSION_1_10.toString()
28-
assert compileJava.targetCompatibility == JavaVersion.VERSION_1_10.toString()
25+
assert tasks.named('compileJava').get().sourceCompatibility == JavaVersion.VERSION_1_10.toString()
26+
assert tasks.named('compileJava').get().targetCompatibility == JavaVersion.VERSION_1_10.toString()
2927
"""
3028

3129
then:
@@ -34,14 +32,10 @@ class ElasticsearchJavaPluginFuncTest extends AbstractGradleFuncTest {
3432

3533
def "compile option --release is configured from targetCompatibility"() {
3634
when:
37-
buildFile.text = """
38-
plugins {
39-
id 'elasticsearch.java'
40-
}
41-
42-
compileJava.targetCompatibility = "1.10"
35+
buildFile.text << """
36+
tasks.named('compileJava').get().targetCompatibility = "1.10"
4337
afterEvaluate {
44-
assert compileJava.options.release.get() == 10
38+
assert tasks.named('compileJava').get().options.release.get() == 10
4539
}
4640
"""
4741
then:

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalBwcGitPluginFuncTest.groovy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import org.gradle.testkit.runner.TaskOutcome
1414
class InternalBwcGitPluginFuncTest extends AbstractGitAwareGradleFuncTest {
1515

1616
def setup() {
17+
// using LoggedExec is not cc compatible
18+
configurationCacheCompatible = false
1719
internalBuild()
1820
buildFile << """
1921
import org.elasticsearch.gradle.Version;

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPluginFuncTest.groovy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import spock.lang.Unroll
2222
class InternalDistributionBwcSetupPluginFuncTest extends AbstractGitAwareGradleFuncTest {
2323

2424
def setup() {
25+
// used LoggedExec task is not configuration cache compatible and
26+
configurationCacheCompatible = false
2527
internalBuild()
2628
buildFile << """
2729
apply plugin: 'elasticsearch.internal-distribution-bwc-setup'

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/JdkDownloadPluginFuncTest.groovy

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest {
147147
plugins {
148148
id 'elasticsearch.jdk-download'
149149
}
150+
import org.elasticsearch.gradle.internal.Jdk
150151
apply plugin: 'base'
151152
apply plugin: 'elasticsearch.jdk-download'
152153
@@ -158,11 +159,18 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest {
158159
architecture = "x64"
159160
}
160161
}
161-
162-
tasks.register("getJdk") {
162+
163+
tasks.register("getJdk", PrintJdk) {
163164
dependsOn jdks.myJdk
164-
doLast {
165-
println "JDK HOME: " + jdks.myJdk
165+
jdkPath = jdks.myJdk.getPath()
166+
}
167+
168+
class PrintJdk extends DefaultTask {
169+
@Input
170+
String jdkPath
171+
172+
@TaskAction void print() {
173+
println "JDK HOME: " + jdkPath
166174
}
167175
}
168176
"""

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/PublishPluginFuncTest.groovy

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,8 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
250250

251251
def "generates artifacts for shadowed elasticsearch plugin"() {
252252
given:
253+
// we use the esplugin plugin in this test that is not configuration cache compatible yet
254+
configurationCacheCompatible = false
253255
file('license.txt') << "License file"
254256
file('notice.txt') << "Notice file"
255257
buildFile << """
@@ -334,6 +336,8 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
334336

335337
def "generates pom for elasticsearch plugin"() {
336338
given:
339+
// we use the esplugin plugin in this test that is not configuration cache compatible yet
340+
configurationCacheCompatible = false
337341
file('license.txt') << "License file"
338342
file('notice.txt') << "Notice file"
339343
buildFile << """

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/distibution/ElasticsearchDistributionPluginFuncTest.groovy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ class ElasticsearchDistributionPluginFuncTest extends AbstractGradleFuncTest {
1515

1616
def "copied modules are resolved from explodedBundleZip"() {
1717
given:
18+
// we use the esplugin plugin in this test that is not configuration cache compatible yet
19+
configurationCacheCompatible = false
1820
moduleSubProject()
1921

2022
buildFile << """plugins {

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/precommit/LicenseHeadersPrecommitPluginFuncTest.groovy

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ class LicenseHeadersPrecommitPluginFuncTest extends AbstractGradleInternalPlugin
1818
Class<? extends PrecommitPlugin> pluginClassUnderTest = LicenseHeadersPrecommitPlugin.class
1919

2020
def setup() {
21-
configurationCacheCompatible = true
2221
buildFile << """
2322
apply plugin:'java'
2423
"""

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/precommit/TestingConventionsPrecommitPluginFuncTest.groovy

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,9 @@ class TestingConventionsPrecommitPluginFuncTest extends AbstractGradleInternalPl
2424

2525
Class<? extends PrecommitPlugin> pluginClassUnderTest = TestingConventionsPrecommitPlugin.class
2626

27-
@ClassRule
28-
@Shared
29-
public TemporaryFolder repoFolder = new TemporaryFolder()
30-
3127
@Shared
3228
@ClassRule
33-
public LocalRepositoryFixture repository = new LocalRepositoryFixture(repoFolder)
29+
public LocalRepositoryFixture repository = new LocalRepositoryFixture()
3430

3531
def setupSpec() {
3632
repository.generateJar('org.apache.lucene', 'tests.util', "1.0",
@@ -45,7 +41,6 @@ class TestingConventionsPrecommitPluginFuncTest extends AbstractGradleInternalPl
4541
}
4642

4743
def setup() {
48-
configurationCacheCompatible = true
4944
repository.configureBuild(buildFile)
5045
}
5146

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditTaskFuncTest.groovy

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,24 @@ import net.bytebuddy.dynamic.DynamicType
1515
import net.bytebuddy.implementation.FixedValue
1616
import org.apache.logging.log4j.LogManager
1717
import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest
18+
import org.elasticsearch.gradle.fixtures.AbstractGradleInternalPluginFuncTest
19+
import org.elasticsearch.gradle.internal.conventions.precommit.LicenseHeadersPrecommitPlugin
20+
import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin
1821
import org.gradle.testkit.runner.TaskOutcome
1922

2023

2124
import static org.elasticsearch.gradle.fixtures.TestClasspathUtils.setupJarJdkClasspath
2225

23-
class ThirdPartyAuditTaskFuncTest extends AbstractGradleFuncTest {
26+
class ThirdPartyAuditTaskFuncTest extends AbstractGradleInternalPluginFuncTest {
27+
28+
Class<? extends PrecommitPlugin> pluginClassUnderTest = ThirdPartyAuditPrecommitPlugin.class
2429

2530
def setup() {
2631
buildFile << """
2732
import org.elasticsearch.gradle.internal.precommit.ThirdPartyAuditPrecommitPlugin
2833
import org.elasticsearch.gradle.internal.precommit.ThirdPartyAuditTask
2934
30-
plugins {
31-
id 'java'
32-
// bring in build-tools onto the classpath
33-
id 'elasticsearch.global-build-info'
34-
}
35-
36-
plugins.apply(ThirdPartyAuditPrecommitPlugin)
35+
apply plugin:'java'
3736
3837
group = 'org.elasticsearch'
3938
version = 'current'
@@ -48,7 +47,7 @@ class ThirdPartyAuditTaskFuncTest extends AbstractGradleFuncTest {
4847
mavenCentral()
4948
}
5049
51-
tasks.register("thirdPartyCheck", ThirdPartyAuditTask) {
50+
tasks.named("thirdPartyAudit").configure {
5251
signatureFile = file('signature-file.txt')
5352
}
5453
"""
@@ -58,6 +57,7 @@ class ThirdPartyAuditTaskFuncTest extends AbstractGradleFuncTest {
5857
given:
5958
def group = "org.elasticsearch.gradle"
6059
generateDummyJars(group)
60+
setupJarJdkClasspath(dir('local-repo/org/elasticsearch/elasticsearch-core/current/'))
6161
file('signature-file.txt') << "@defaultMessage non-public internal runtime class"
6262

6363
buildFile << """
@@ -68,9 +68,9 @@ class ThirdPartyAuditTaskFuncTest extends AbstractGradleFuncTest {
6868
}
6969
"""
7070
when:
71-
def result = gradleRunner("thirdPartyCheck").build()
71+
def result = gradleRunner("thirdPartyAudit").build()
7272
then:
73-
result.task(":thirdPartyCheck").outcome == TaskOutcome.NO_SOURCE
73+
result.task(":thirdPartyAudit").outcome == TaskOutcome.NO_SOURCE
7474
assertNoDeprecationWarning(result)
7575
}
7676

@@ -91,9 +91,9 @@ class ThirdPartyAuditTaskFuncTest extends AbstractGradleFuncTest {
9191
}
9292
"""
9393
when:
94-
def result = gradleRunner(":thirdPartyCheck").buildAndFail()
94+
def result = gradleRunner(":thirdPartyAudit").buildAndFail()
9595
then:
96-
result.task(":thirdPartyCheck").outcome == TaskOutcome.FAILED
96+
result.task(":thirdPartyAudit").outcome == TaskOutcome.FAILED
9797

9898
def output = normalized(result.getOutput())
9999
assertOutputContains(output, """\
@@ -127,9 +127,9 @@ class ThirdPartyAuditTaskFuncTest extends AbstractGradleFuncTest {
127127
}
128128
"""
129129
when:
130-
def result = gradleRunner(":thirdPartyCheck").buildAndFail()
130+
def result = gradleRunner(":thirdPartyAudit").buildAndFail()
131131
then:
132-
result.task(":thirdPartyCheck").outcome == TaskOutcome.FAILED
132+
result.task(":thirdPartyAudit").outcome == TaskOutcome.FAILED
133133

134134
def output = normalized(result.getOutput())
135135
assertOutputContains(output, """\
@@ -163,9 +163,9 @@ class ThirdPartyAuditTaskFuncTest extends AbstractGradleFuncTest {
163163
}
164164
"""
165165
when:
166-
def result = gradleRunner(":thirdPartyCheck").buildAndFail()
166+
def result = gradleRunner(":thirdPartyAudit").buildAndFail()
167167
then:
168-
result.task(":thirdPartyCheck").outcome == TaskOutcome.FAILED
168+
result.task(":thirdPartyAudit").outcome == TaskOutcome.FAILED
169169

170170
def output = normalized(result.getOutput())
171171
assertOutputContains(output, """\
@@ -174,7 +174,7 @@ class ThirdPartyAuditTaskFuncTest extends AbstractGradleFuncTest {
174174
""".stripIndent())
175175
assertOutputContains(output, """\
176176
* What went wrong:
177-
Execution failed for task ':thirdPartyCheck'.
177+
Execution failed for task ':thirdPartyAudit'.
178178
> Audit of third party dependencies failed:
179179
Jar Hell with the JDK:
180180
*

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/InternalYamlRestTestPluginFuncTest.groovy

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ class InternalYamlRestTestPluginFuncTest extends AbstractRestResourcesFuncTest {
1919

2020
def "yamlRestTest does nothing when there are no tests"() {
2121
given:
22+
// RestIntegTestTask not cc compatible due to
23+
configurationCacheCompatible = false
2224
buildFile << """
2325
plugins {
2426
id 'elasticsearch.internal-yaml-rest-test'
@@ -36,6 +38,8 @@ class InternalYamlRestTestPluginFuncTest extends AbstractRestResourcesFuncTest {
3638

3739
def "yamlRestTest executes and copies api and tests to correct source set"() {
3840
given:
41+
// RestIntegTestTask not cc compatible due to
42+
configurationCacheCompatible = false
3943
internalBuild()
4044
buildFile << """
4145
apply plugin: 'elasticsearch.internal-yaml-rest-test'

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/RestResourcesPluginFuncTest.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ class RestResourcesPluginFuncTest extends AbstractRestResourcesFuncTest {
170170
file("/build/restResources/yamlTests/rest-api-spec/test/" + coreTest).getText("UTF-8") == "replacedWithValue"
171171

172172
when:
173-
result = gradleRunner("copyRestApiSpecsTask").build()
173+
result = gradleRunner("copyRestApiSpecsTask", '--stacktrace').build()
174174

175175
then:
176176
result.task(':copyRestApiSpecsTask').outcome == TaskOutcome.UP_TO_DATE

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestCompatTestPluginFuncTest.groovy

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ class YamlRestCompatTestPluginFuncTest extends AbstractRestResourcesFuncTest {
2828
def READER = MAPPER.readerFor(ObjectNode.class)
2929
def WRITER = MAPPER.writerFor(ObjectNode.class)
3030

31+
def setup() {
32+
// not cc compatible due to:
33+
// 1. TestClustersPlugin not cc compatible due to listener registration
34+
// 2. RestIntegTestTask not cc compatible due to
35+
configurationCacheCompatible = false
36+
}
3137
def "yamlRestTestVxCompatTest does nothing when there are no tests"() {
3238
given:
3339
subProject(":distribution:bwc:maintenance") << """

0 commit comments

Comments
 (0)