diff --git a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/AbstractTransportVersionFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/AbstractTransportVersionFuncTest.groovy new file mode 100644 index 0000000000000..257da1b64fd8e --- /dev/null +++ b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/AbstractTransportVersionFuncTest.groovy @@ -0,0 +1,122 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +package org.elasticsearch.gradle.internal.transport + +import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest +import org.gradle.testkit.runner.BuildResult +import org.gradle.testkit.runner.TaskOutcome + +class AbstractTransportVersionFuncTest extends AbstractGradleFuncTest { + def javaResource(String project, String path, String content) { + file("${project}/src/main/resources/${path}").withWriter { writer -> + writer << content + } + } + + def javaSource(String project, String packageName, String className, String imports, String content) { + String packageSlashes = packageName.replace('.', '/') + file("${project}/src/main/java/${packageSlashes}/${className}.java").withWriter { writer -> + writer << """ + package ${packageName}; + ${imports} + public class ${className} { + ${content} + } + """ + } + } + + def namedTransportVersion(String name, String ids) { + javaResource("myserver", "transport/definitions/named/" + name + ".csv", ids) + } + + def unreferencedTransportVersion(String name, String id) { + javaResource("myserver", "transport/definitions/unreferenced/" + name + ".csv", id) + } + + def definedAndUsedTransportVersion(String name, String ids) { + return definedAndUsedTransportVersion(name, ids, "Test${name.capitalize()}") + } + + def definedAndUsedTransportVersion(String name, String ids, String classname) { + javaSource("myserver", "org.elasticsearch", classname, "", """ + static final TransportVersion usage = TransportVersion.fromName("${name}"); + """) + namedTransportVersion(name, ids) + } + + def latestTransportVersion(String branch, String name, String id) { + javaResource("myserver", "transport/latest/" + branch + ".csv","${name},${id}") + } + + def validateReferencesFails(String project) { + return gradleRunner(":${project}:validateTransportVersionReferences").buildAndFail() + } + + def validateDefinitionsFails() { + return gradleRunner(":myserver:validateTransportVersionDefinitions").buildAndFail() + } + + def assertReferencesFailure(BuildResult result, String project, String expectedOutput) { + result.task(":${project}:validateTransportVersionReferences").outcome == TaskOutcome.FAILED + assertOutputContains(result.output, expectedOutput) + } + + def assertDefinitionsFailure(BuildResult result, String expectedOutput) { + result.task(":myserver:validateTransportVersionDefinitions").outcome == TaskOutcome.FAILED + assertOutputContains(result.output, expectedOutput) + } + + def setup() { + configurationCacheCompatible = false + internalBuild() + settingsFile << """ + include ':myserver' + include ':myplugin' + """ + file("gradle.properties") << """ + org.elasticsearch.transport.definitionsProject=:myserver + """ + + file("myserver/build.gradle") << """ + apply plugin: 'java-library' + apply plugin: 'elasticsearch.transport-version-references' + apply plugin: 'elasticsearch.transport-version-resources' + """ + namedTransportVersion("existing_91", "8012000") + namedTransportVersion("existing_92", "8123000,8012001") + unreferencedTransportVersion("initial_9_0_0", "8000000") + latestTransportVersion("9.2", "existing_92", "8123000") + latestTransportVersion("9.1", "existing_92", "8012001") + // a mock version of TransportVersion, just here so we can compile Dummy.java et al + javaSource("myserver", "org.elasticsearch", "TransportVersion", "", """ + public static TransportVersion fromName(String name) { + return null; + } + """) + javaSource("myserver", "org.elasticsearch", "Dummy", "", """ + static final TransportVersion existing91 = TransportVersion.fromName("existing_91"); + static final TransportVersion existing92 = TransportVersion.fromName("existing_92"); + """) + + file("myplugin/build.gradle") << """ + apply plugin: 'java-library' + apply plugin: 'elasticsearch.transport-version-references' + + dependencies { + implementation project(":myserver") + } + """ + + setupLocalGitRepo() + execute("git checkout -b main") + execute("git checkout -b test") + } +} diff --git a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionManagementPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionValidationFuncTest.groovy similarity index 65% rename from build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionManagementPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionValidationFuncTest.groovy index f74639bf7d841..52fab5a4f1625 100644 --- a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionManagementPluginFuncTest.groovy +++ b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionValidationFuncTest.groovy @@ -10,124 +10,9 @@ package org.elasticsearch.gradle.internal.transport -import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest -import org.gradle.testkit.runner.BuildResult import org.gradle.testkit.runner.TaskOutcome -class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest { - - /** - * - * @param project - * @param path - * @param content - * @return - */ - def javaResource(String project, String path, String content) { - file("${project}/src/main/resources/${path}").withWriter { writer -> - writer << content - } - } - - def javaSource(String project, String packageName, String className, String imports, String content) { - String packageSlashes = packageName.replace('.', '/') - file("${project}/src/main/java/${packageSlashes}/${className}.java").withWriter { writer -> - writer << """ - package ${packageName}; - ${imports} - public class ${className} { - ${content} - } - """ - } - } - - def namedTransportVersion(String name, String ids) { - javaResource("myserver", "transport/definitions/named/" + name + ".csv", ids) - } - - def unreferencedTransportVersion(String name, String id) { - javaResource("myserver", "transport/definitions/unreferenced/" + name + ".csv", id) - } - - def definedAndUsedTransportVersion(String name, String ids) { - return definedAndUsedTransportVersion(name, ids, "Test${name.capitalize()}") - } - - def definedAndUsedTransportVersion(String name, String ids, String classname) { - javaSource("myserver", "org.elasticsearch", classname, "", """ - static final TransportVersion usage = TransportVersion.fromName("${name}"); - """) - namedTransportVersion(name, ids) - } - - def latestTransportVersion(String branch, String name, String id) { - javaResource("myserver", "transport/latest/" + branch + ".csv","${name},${id}") - } - - def validateReferencesFails(String project) { - return gradleRunner(":${project}:validateTransportVersionReferences").buildAndFail() - } - - def validateDefinitionsFails() { - return gradleRunner(":myserver:validateTransportVersionDefinitions").buildAndFail() - } - - def assertReferencesFailure(BuildResult result, String project, String expectedOutput) { - result.task(":${project}:validateTransportVersionReferences").outcome == TaskOutcome.FAILED - assertOutputContains(result.output, expectedOutput) - } - - def assertDefinitionsFailure(BuildResult result, String expectedOutput) { - result.task(":myserver:validateTransportVersionDefinitions").outcome == TaskOutcome.FAILED - assertOutputContains(result.output, expectedOutput) - } - - def setup() { - configurationCacheCompatible = false - internalBuild() - settingsFile << """ - include ':myserver' - include ':myplugin' - """ - file("gradle.properties") << """ - org.elasticsearch.transport.definitionsProject=:myserver - """ - - file("myserver/build.gradle") << """ - apply plugin: 'java-library' - apply plugin: 'elasticsearch.transport-version-references' - apply plugin: 'elasticsearch.transport-version-resources' - """ - namedTransportVersion("existing_91", "8012000") - namedTransportVersion("existing_92", "8123000,8012001") - unreferencedTransportVersion("initial_9_0_0", "8000000") - latestTransportVersion("9.2", "existing_92", "8123000") - latestTransportVersion("9.1", "existing_92", "8012001") - // a mock version of TransportVersion, just here so we can compile Dummy.java et al - javaSource("myserver", "org.elasticsearch", "TransportVersion", "", """ - public static TransportVersion fromName(String name) { - return null; - } - """) - javaSource("myserver", "org.elasticsearch", "Dummy", "", """ - static final TransportVersion existing91 = TransportVersion.fromName("existing_91"); - static final TransportVersion existing92 = TransportVersion.fromName("existing_92"); - """) - - file("myplugin/build.gradle") << """ - apply plugin: 'java-library' - apply plugin: 'elasticsearch.transport-version-references' - - dependencies { - implementation project(":myserver") - } - """ - - setupLocalGitRepo() - execute("git checkout -b main") - execute("git checkout -b test") - } +class TransportVersionValidationFuncTest extends AbstractTransportVersionFuncTest { def "test setup works"() { when: