Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[7.17] Unify handling of custom Gradle User home in build tool tests (#89304) #89402

Merged
merged 1 commit into from Aug 17, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -39,7 +39,7 @@ class InternalDistributionDownloadPluginFuncTest extends AbstractGradleFuncTest
"""

when:
def result = gradleRunner("setupDistro", '-g', testProjectDir.newFolder('GUH').path).build()
def result = gradleRunner("setupDistro", '-g', gradleUserHome).build()

then:
result.task(":distribution:archives:${testArchiveProjectName}:buildExpanded").outcome == TaskOutcome.SUCCESS
Expand Down
Expand Up @@ -8,6 +8,7 @@

package org.elasticsearch.gradle.internal

import spock.lang.TempDir
import spock.lang.Unroll
import com.github.tomakehurst.wiremock.WireMockServer

Expand Down Expand Up @@ -126,7 +127,7 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest {
when:
def result = WiremockFixture.withWireMock(mockRepoUrl, mockedContent) { server ->
buildFile << repositoryMockSetup(server, jdkVendor, jdkVersion)
gradleRunner('getJdk', '-i', '-g', testProjectDir.newFolder().toString()).build()
gradleRunner('getJdk', '-i', '-g', gradleUserHome).build()
}

then:
Expand Down Expand Up @@ -179,13 +180,12 @@ class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest {
def result = WiremockFixture.withWireMock(mockRepoUrl, mockedContent) { server ->
buildFile << repositoryMockSetup(server, VENDOR_ADOPTIUM, ADOPT_JDK_VERSION)

def commonGradleUserHome = testProjectDir.newFolder().toString()
// initial run
def firstResult = gradleRunner('clean', 'getJdk', '-i', '--warning-mode', 'all', '-g', commonGradleUserHome).build()
def firstResult = gradleRunner('clean', 'getJdk', '-i', '--warning-mode', 'all', '-g', gradleUserHome).build()
// assert the output of an executed transform is shown
assertOutputContains(firstResult.output, "Unpacking $expectedArchiveName using $transformType")
// run against up-to-date transformations
gradleRunner('clean', 'getJdk', '-i', '--warning-mode', 'all', '-g', commonGradleUserHome).build()
gradleRunner('clean', 'getJdk', '-i', '--warning-mode', 'all', '-g', gradleUserHome).build()
}

then:
Expand Down
Expand Up @@ -49,8 +49,7 @@ class DistributionDownloadPluginFuncTest extends AbstractGradleFuncTest {
"""

when:
def guh = new File(testProjectDir.getRoot(), "gradle-user-home").absolutePath;
def runner = gradleRunner('clean', 'setupDistro', '-i', '-g', guh)
def runner = gradleRunner('clean', 'setupDistro', '-i', '-g', gradleUserHome)
def unpackingMessage = "Unpacking elasticsearch-${version}-linux-${Architecture.current().classifier}.tar.gz " +
"using SymbolicLinkPreservingUntarTransform"
def result = withMockedDistributionDownload(version, platform, runner) {
Expand Down Expand Up @@ -92,8 +91,7 @@ class DistributionDownloadPluginFuncTest extends AbstractGradleFuncTest {
"""

when:
def customGradleUserHome = testProjectDir.newFolder().absolutePath;
def runner = gradleRunner('setupDistro', '-i', '-g', customGradleUserHome)
def runner = gradleRunner('setupDistro', '-i', '-g', gradleUserHome)
def result = withMockedDistributionDownload(version, platform, runner) {
build()
}
Expand Down
Expand Up @@ -103,7 +103,7 @@ class TestClustersPluginFuncTest extends AbstractGradleFuncTest {
"""

when:
def runner = gradleRunner("myTask", '-i', '-g', 'guh')
def runner = gradleRunner("myTask", '-i', '-g', gradleUserHome)
def runningClosure = { GradleRunner r -> r.build() }
withMockedDistributionDownload(runner, runningClosure)
def result = inputProperty == "distributionClasspath" ?
Expand Down Expand Up @@ -155,12 +155,12 @@ class TestClustersPluginFuncTest extends AbstractGradleFuncTest {
"""

when:
withMockedDistributionDownload(gradleRunner("myTask", '-g', 'guh')) {
withMockedDistributionDownload(gradleRunner("myTask", '-g', gradleUserHome)) {
build()
}
fileChange.delegate = this
fileChange.call(this)
def result = withMockedDistributionDownload(gradleRunner("myTask", '-i', '-g', 'guh')) {
def result = withMockedDistributionDownload(gradleRunner("myTask", '-i', '-g', gradleUserHome)) {
build()
}

Expand Down
Expand Up @@ -50,13 +50,13 @@ class GradleTestPolicySetupPluginFuncTest extends AbstractGradleFuncTest {
"""

when:
def result = gradleRunner('test', '-g', "guh1").build()
def result = gradleRunner('test', '-g', gradleUserHome).build()

then:
result.task(":test").outcome == TaskOutcome.SUCCESS

when: // changing gradle user home
result = gradleRunner('test', '-g', "guh2").build()
result = gradleRunner('test', '-g', gradleUserHome).build()
then: // still up-to-date
result.task(":test").outcome == TaskOutcome.UP_TO_DATE
}
Expand Down
Expand Up @@ -17,6 +17,7 @@ import org.gradle.testkit.runner.GradleRunner
import org.junit.Rule
import org.junit.rules.TemporaryFolder
import spock.lang.Specification
import spock.lang.TempDir

import java.lang.management.ManagementFactory
import java.util.jar.JarEntry
Expand All @@ -29,6 +30,9 @@ abstract class AbstractGradleFuncTest extends Specification {
@Rule
TemporaryFolder testProjectDir = new TemporaryFolder()

@TempDir
File gradleUserHome

File settingsFile
File buildFile
File propertiesFile
Expand Down Expand Up @@ -68,23 +72,22 @@ abstract class AbstractGradleFuncTest extends Specification {
subProjectBuild
}

GradleRunner gradleRunner(String... arguments) {
GradleRunner gradleRunner(Object... arguments) {
return gradleRunner(testProjectDir.root, arguments)
}

GradleRunner gradleRunner(File projectDir, String... arguments) {
GradleRunner gradleRunner(File projectDir, Object... arguments) {
return new NormalizeOutputGradleRunner(
new InternalAwareGradleRunner(
GradleRunner.create()
.withDebug(ManagementFactory.getRuntimeMXBean().getInputArguments()
.toString().indexOf("-agentlib:jdwp") > 0
)
.withProjectDir(projectDir)
.withPluginClasspath()
.forwardOutput()
),
projectDir
).withArguments(arguments)
new InternalAwareGradleRunner(
GradleRunner.create()
.withDebug(ManagementFactory.getRuntimeMXBean().getInputArguments()
.toString().indexOf("-agentlib:jdwp") > 0
)
.withProjectDir(projectDir)
.withPluginClasspath()
.forwardOutput()
).withArguments(arguments.collect { it.toString() })
)
}

def assertOutputContains(String givenOutput, String expected) {
Expand Down
Expand Up @@ -27,9 +27,10 @@

public class NormalizeOutputGradleRunner extends GradleRunner {

public NormalizeOutputGradleRunner(GradleRunner delegate, File projectRootDir) {
private GradleRunner delegate;

public NormalizeOutputGradleRunner(GradleRunner delegate) {
this.delegate = delegate;
this.projectRootDir = projectRootDir;
}

@Override
Expand Down Expand Up @@ -74,7 +75,8 @@ public List<String> getArguments() {

@Override
public GradleRunner withArguments(List<String> arguments) {
return delegate.withArguments(arguments);
delegate.withArguments(arguments);
return this;
}

@Override
Expand Down Expand Up @@ -150,9 +152,6 @@ public BuildResult buildAndFail() throws InvalidRunnerConfigurationException, Un
return new NormalizedBuildResult(delegate.buildAndFail());
}

private GradleRunner delegate;
private File projectRootDir;

private class NormalizedBuildResult implements BuildResult {
private BuildResult delegate;
private String normalizedString;
Expand All @@ -164,7 +163,7 @@ private class NormalizedBuildResult implements BuildResult {
@Override
public String getOutput() {
if (normalizedString == null) {
normalizedString = normalizeString(delegate.getOutput(), projectRootDir);
normalizedString = normalizeString(delegate.getOutput(), getProjectDir());
}
return normalizedString;
}
Expand Down