Skip to content

Commit

Permalink
Merge pull request #23174 Change supported Gradle and Java versions i…
Browse files Browse the repository at this point in the history
…n the Tooling API

Design spec: https://docs.google.com/document/d/1YcPeOMAYUdHKD8JQ54LAF9C6mBVBZs0CPj7y2z-6jec/edit

This PR contains the functional changes; the documentation will be implemented separately.

Co-authored-by: Donat Csikos <donat@gradle.com>
  • Loading branch information
bot-gradle and donat committed Dec 20, 2022
2 parents 6abc8d2 + 8a13272 commit cd75e01
Show file tree
Hide file tree
Showing 11 changed files with 18 additions and 59 deletions.
Expand Up @@ -31,32 +31,30 @@ abstract class UnitTestAndCompileExtension(
* Enforces **Java 6** compatibility.
*/
fun usedInWorkers() {
enforceJava6Compatibility()
enforceCompatibility(6)
}

/**
* Enforces **Java 6** compatibility.
*/
fun usedForStartup() {
enforceJava6Compatibility()
enforceCompatibility(6)
}

/**
* Enforces **Java 6** compatibility.
*/
fun usedInToolingApi() {
enforceJava6Compatibility()
enforceCompatibility(7)
}

/**
* Enforces **Java 6** compatibility.
*/
fun enforceJava6Compatibility() {
private
fun enforceCompatibility(majorVersion: Int) {
tasks.withType<JavaCompile>().configureEach {
options.release.set(null as Int?)
options.compilerArgs.remove("-parameters")
sourceCompatibility = "6"
targetCompatibility = "6"
sourceCompatibility = "$majorVersion"
targetCompatibility = "$majorVersion"
}
// Apply ParameterNamesIndex since 6 doesn't support -parameters
project.apply(plugin = "gradlebuild.api-parameter-names-index")
Expand Down
Expand Up @@ -233,42 +233,6 @@ project(':impl') {
parallel << [true, false]
}

@TargetGradleVersion('>=2.6 <=2.7')
def "makes sure module names are unique"() {

file('build.gradle').text = """
subprojects {
apply plugin: 'java'
}
project(':impl') {
dependencies {
${implementationConfiguration} project(':api')
}
}
project(':contrib:impl') {
dependencies {
${implementationConfiguration} project(':contrib:api')
}
}
"""
file('settings.gradle').text = "include 'api', 'impl', 'contrib:api', 'contrib:impl'"

when:
IdeaProject project = loadToolingModel(IdeaProject)

then:
def allNames = project.modules*.name
allNames.unique().size() == 6

IdeaModule impl = project.modules.find { it.name == 'impl' }
IdeaModule contribImpl = project.modules.find { it.name == 'contrib-impl' }

impl.dependencies[0].targetModuleName == 'api'
contribImpl.dependencies[0].targetModuleName == 'contrib-api'
}

def "module has access to gradle project and its tasks"() {

file('build.gradle').text = """
Expand Down
Expand Up @@ -16,7 +16,6 @@

package org.gradle.plugins.ide.tooling.r214

import org.gradle.integtests.tooling.fixture.TargetGradleVersion
import org.gradle.integtests.tooling.fixture.ToolingApiSpecification
import org.gradle.integtests.tooling.fixture.WithOldConfigurationsSupport
import org.gradle.test.fixtures.maven.MavenFileModule
Expand All @@ -25,7 +24,6 @@ import org.gradle.tooling.model.eclipse.EclipseExternalDependency
import org.gradle.tooling.model.eclipse.EclipseProject
import org.gradle.tooling.model.eclipse.EclipseProjectDependency

@TargetGradleVersion('>=2.14')
class ToolingApiEclipseModelWtpClasspathAttributesCrossVersionSpec extends ToolingApiSpecification implements WithOldConfigurationsSupport {

String localMaven
Expand Down
Expand Up @@ -25,7 +25,7 @@ import org.gradle.tooling.model.eclipse.EclipseProject
@TargetGradleVersion('>=5.4')
class ToolingApiEclipseModelAutoBuildTasksCrossVersionSpec extends ToolingApiSpecification {

@TargetGradleVersion('>=2.6 <5.4')
@TargetGradleVersion('>=3.0 <5.4')
def "returns false for old versions"() {
setup:
EclipseProject eclipseProject = loadToolingModel(EclipseProject)
Expand Down
Expand Up @@ -16,12 +16,11 @@

package org.gradle.integtests.tooling.r213

import org.gradle.integtests.tooling.fixture.TargetGradleVersion

import org.gradle.integtests.tooling.fixture.ToolingApiSpecification
import org.gradle.integtests.tooling.r18.FetchBuildEnvironment
import org.gradle.tooling.model.build.BuildEnvironment

@TargetGradleVersion('>=2.13')
class BuildActionCrossVersionSpec extends ToolingApiSpecification {
def "can use build action to retrieve BuildEnvironment model"() {
given:
Expand Down
Expand Up @@ -149,7 +149,7 @@ class TaskDependenciesCrossVersionSpec extends ToolingApiSpecification {
task(':compileJava').dependencies == tasks(':included:jar')
}

@TargetGradleVersion('>=2.6 <5.1')
@TargetGradleVersion('>=3.0 <5.1')
def "throws UnsupportedMethodException for task dependencies when target version does not support it"() {
when:
runBuild('tasks')
Expand Down
Expand Up @@ -131,7 +131,7 @@ class TaskExecutionResultCrossVersionSpec extends ToolingApiSpecification {
task incrementalTask(type: MyIncrementalTask) {
inputDir = file('src')
}
class MyIncrementalTask extends DefaultTask {
${supportsInputChanges ? "@Incremental" : ""}
@InputDirectory
Expand Down Expand Up @@ -185,7 +185,7 @@ class TaskExecutionResultCrossVersionSpec extends ToolingApiSpecification {
}
}

@TargetGradleVersion('>=2.6 <5.1')
@TargetGradleVersion('>=3.0 <5.1')
def "throws UnsupportedMethodException for execution reasons when target version does not support it"() {
when:
runBuild('tasks')
Expand All @@ -198,7 +198,7 @@ class TaskExecutionResultCrossVersionSpec extends ToolingApiSpecification {
e.message.startsWith("Unsupported method: TaskExecutionResult.getExecutionReasons().")
}

@TargetGradleVersion('>=2.6 <5.1')
@TargetGradleVersion('>=3.0 <5.1')
def "throws UnsupportedMethodException for incremental property when target version does not support it"() {
when:
runBuild('tasks')
Expand Down
Expand Up @@ -90,7 +90,7 @@ class TaskOriginCrossVersionSpec extends ToolingApiSpecification {
task(':lazyTask').originPlugin.displayName == "build.gradle"
}

@TargetGradleVersion('>=2.6 <5.1')
@TargetGradleVersion('>=3.0 <5.1')
def "throws UnsupportedMethodException for task origin when target version does not support it"() {
when:
runBuild('tasks')
Expand Down
Expand Up @@ -23,7 +23,7 @@ import org.gradle.integtests.tooling.fixture.ToolingApiVersion
import org.gradle.tooling.events.OperationType

@ToolingApiVersion('>=7.6')
@TargetGradleVersion('>=2.6 <7.6')
@TargetGradleVersion('>=3.0 <7.6')
class BuildPhaseOperationEventLegacyCrossVersionTest extends ToolingApiSpecification {

def "doesn't generate build phase events for gradle versions that don't support them"() {
Expand Down
Expand Up @@ -33,7 +33,7 @@ class TestLauncherTestSpecCrossVersionSpec extends TestLauncherSpec {
withFailingTest() // ensures that withTestsFor statements are not ignored
}

@TargetGradleVersion('>=2.7 <7.6')
@TargetGradleVersion('>=3.0 <7.6')
def "older Gradle versions ignore withTestsFor calls"() {
when:
launchTests { TestLauncher launcher ->
Expand Down
Expand Up @@ -61,8 +61,8 @@ import static spock.lang.Retry.Mode.SETUP_FEATURE_CLEANUP
*/
@ToolingApiTest
@CleanupTestDirectory
@ToolingApiVersion('>=3.0')
@TargetGradleVersion('>=2.6')
@ToolingApiVersion('>=7.0') // The lowest tested version should be the first release of the previous major.
@TargetGradleVersion('>=3.0')
@Retry(condition = { onIssueWithReleasedGradleVersion(instance, failure) }, mode = SETUP_FEATURE_CLEANUP, count = 2)
abstract class ToolingApiSpecification extends Specification {
/**
Expand Down

0 comments on commit cd75e01

Please sign in to comment.