org.gradle.integtests.fixtures.executer.DefaultGradleDistribution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gradle-api Show documentation
Show all versions of gradle-api Show documentation
Gradle 6.9.1 API redistribution.
/*
* Copyright 2012 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.gradle.integtests.fixtures.executer;
import org.gradle.api.JavaVersion;
import org.gradle.internal.jvm.Jvm;
import org.gradle.internal.os.OperatingSystem;
import org.gradle.test.fixtures.file.TestDirectoryProvider;
import org.gradle.test.fixtures.file.TestFile;
import org.gradle.util.GradleVersion;
import org.gradle.util.VersionNumber;
public class DefaultGradleDistribution implements GradleDistribution {
private final GradleVersion version;
private final TestFile gradleHomeDir;
private final TestFile binDistribution;
public DefaultGradleDistribution(GradleVersion gradleVersion, TestFile gradleHomeDir, TestFile binDistribution) {
this.version = gradleVersion;
this.gradleHomeDir = gradleHomeDir;
this.binDistribution = binDistribution;
}
@Override
public String toString() {
return version.toString();
}
public TestFile getGradleHomeDir() {
return gradleHomeDir;
}
public TestFile getBinDistribution() {
return binDistribution;
}
public GradleVersion getVersion() {
return version;
}
public GradleExecuter executer(TestDirectoryProvider testDirectoryProvider, IntegrationTestBuildContext buildContext) {
return new ForkingGradleExecuter(this, testDirectoryProvider, version, buildContext);
}
public boolean worksWith(Jvm jvm) {
// Milestone 4 was broken on the IBM jvm
if (jvm.isIbmJvm() && isVersion("1.0-milestone-4")) {
return false;
}
JavaVersion javaVersion = jvm.getJavaVersion();
if (javaVersion == null) {
throw new IllegalArgumentException();
}
return worksWith(javaVersion);
}
private boolean worksWith(JavaVersion javaVersion) {
// 0.9-rc-1 was broken for Java 5
if (isVersion("0.9-rc-1") && javaVersion == JavaVersion.VERSION_1_5) {
return false;
}
// 1.x works on Java 5 - 8
if (isSameOrOlder("1.12")) {
return javaVersion.compareTo(JavaVersion.VERSION_1_5) >= 0 && javaVersion.compareTo(JavaVersion.VERSION_1_8) <= 0;
}
// 2.x and 3.0-milestone-1 work on Java 6 - 8
if (isSameOrOlder("3.0-milestone-1")) {
return javaVersion.compareTo(JavaVersion.VERSION_1_6) >= 0 && javaVersion.compareTo(JavaVersion.VERSION_1_8) <= 0;
}
// 3.x works on Java 7 - 9
return javaVersion.compareTo(JavaVersion.VERSION_1_7) >= 0 && javaVersion.compareTo(JavaVersion.VERSION_1_9) <= 0;
}
public boolean worksWith(OperatingSystem os) {
// 1.0-milestone-5 was broken where jna was not available
//noinspection SimplifiableIfStatement
if (isVersion("1.0-milestone-5")) {
return os.isWindows() || os.isMacOsX() || os.isLinux();
} else {
return true;
}
}
public boolean isDaemonIdleTimeoutConfigurable() {
return isSameOrNewer("1.0-milestone-7");
}
public boolean isOpenApiSupported() {
return isSameOrNewer("0.9-rc-1") && !isSameOrNewer("2.0-rc-1");
}
public boolean isToolingApiSupported() {
return isSameOrNewer("1.0-milestone-3");
}
@Override
public boolean isToolingApiTargetJvmSupported(JavaVersion javaVersion) {
return worksWith(javaVersion);
}
public boolean isToolingApiNonAsciiOutputSupported() {
if (OperatingSystem.current().isWindows()) {
return !isVersion("1.0-milestone-7") && !isVersion("1.0-milestone-8") && !isVersion("1.0-milestone-8a");
}
return true;
}
public boolean isToolingApiDaemonBaseDirSupported() {
return isSameOrNewer("2.2-rc-1");
}
@Override
public boolean isToolingApiEventsInEmbeddedModeSupported() {
return isSameOrNewer("2.6-rc-1");
}
@Override
public boolean isToolingApiLocksBuildActionClasses() {
return isSameOrOlder("3.0");
}
@Override
public boolean isToolingApiLoggingInEmbeddedModeSupported() {
return isSameOrNewer("2.9-rc-1");
}
public VersionNumber getArtifactCacheLayoutVersion() {
if (isSameOrNewer("3.2-rc-1")) {
return VersionNumber.parse("2.23");
} else if (isSameOrNewer("3.1-rc-1")) {
return VersionNumber.parse("2.21");
} else if (isSameOrNewer("3.0-milestone-1")) {
return VersionNumber.parse("2.17");
} else if (isSameOrNewer("2.8-rc-1")) {
return VersionNumber.parse("2.16");
} else if (isSameOrNewer("2.4-rc-1")) {
return VersionNumber.parse("2.15");
} else if (isSameOrNewer("2.2-rc-1")) {
return VersionNumber.parse("2.14");
} else if (isSameOrNewer("2.1-rc-3")) {
return VersionNumber.parse("2.13");
} else if (isSameOrNewer("2.0-rc-1")) {
return VersionNumber.parse("2.12");
} else if (isSameOrNewer("1.12-rc-1")) {
return VersionNumber.parse("2.6");
} else if (isSameOrNewer("1.11-rc-1")) {
return VersionNumber.parse("2.2");
} else if (isSameOrNewer("1.9-rc-2")) {
return VersionNumber.parse("2.1");
} else if (isSameOrNewer("1.9-rc-1")) {
return VersionNumber.parse("1.31");
} else if (isSameOrNewer("1.7-rc-1")) {
return VersionNumber.parse("0.26");
} else if (isSameOrNewer("1.6-rc-1")) {
return VersionNumber.parse("0.24");
} else if (isSameOrNewer("1.4-rc-1")) {
return VersionNumber.parse("0.23");
} else if (isSameOrNewer("1.3")) {
return VersionNumber.parse("0.15");
} else {
return VersionNumber.parse("0.1");
}
}
public boolean wrapperCanExecute(GradleVersion version) {
if (version.equals(GradleVersion.version("0.8")) || isVersion("0.8")) {
// There was a breaking change after 0.8
return false;
}
if (isVersion("0.9.1")) {
// 0.9.1 couldn't handle anything with a timestamp whose timezone was behind GMT
return version.getVersion().matches(".*+\\d{4}");
}
if (isSameOrNewer("0.9.2") && isSameOrOlder("1.0-milestone-2")) {
// These versions couldn't handle milestone patches
if (version.getVersion().matches("1.0-milestone-\\d+[a-z]-.+")) {
return false;
}
}
return true;
}
public boolean isWrapperSupportsGradleUserHomeCommandLineOption() {
return isSameOrNewer("1.7");
}
public boolean isSupportsSpacesInGradleAndJavaOpts() {
return isSameOrNewer("1.0-milestone-5");
}
public boolean isFullySupportsIvyRepository() {
return isSameOrNewer("1.0-milestone-7");
}
protected boolean isSameOrNewer(String otherVersion) {
return isVersion(otherVersion) || version.compareTo(GradleVersion.version(otherVersion)) > 0;
}
protected boolean isSameOrOlder(String otherVersion) {
return isVersion(otherVersion) || version.compareTo(GradleVersion.version(otherVersion)) <= 0;
}
protected boolean isVersion(String otherVersionString) {
GradleVersion otherVersion = GradleVersion.version(otherVersionString);
return version.compareTo(otherVersion) == 0 || (version.isSnapshot() && version.getBaseVersion().equals(otherVersion.getBaseVersion()));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy