Skip to content

Commit

Permalink
Merge branch 'release' into jbartok/do-not-expose-named-domain-object…
Browse files Browse the repository at this point in the history
…-list
  • Loading branch information
jbartok committed Dec 14, 2022
2 parents b2d177b + bf44f79 commit 2291e91
Show file tree
Hide file tree
Showing 258 changed files with 4,418 additions and 5,211 deletions.
Expand Up @@ -20,6 +20,7 @@ import gradlebuild.integrationtests.addDependenciesAndConfigurations
import gradlebuild.integrationtests.addSourceSet
import gradlebuild.integrationtests.configureIde
import gradlebuild.integrationtests.createTestTask
import gradlebuild.integrationtests.setSystemPropertiesOfTestJVM

plugins {
java
Expand Down Expand Up @@ -50,7 +51,7 @@ fun createQuickFeedbackTasks() {
testType.executers.forEach { executer ->
val taskName = "$executer${prefix.capitalize()}Test"
val testTask = createTestTask(taskName, executer, sourceSet, testType) {
this.systemProperties["org.gradle.integtest.versions"] = "latest"
this.setSystemPropertiesOfTestJVM("latest")
this.systemProperties["org.gradle.integtest.crossVersion"] = "true"

// We should always be using JUnitPlatform at this point, so don't call useJUnitPlatform(), else this will
Expand Down
Expand Up @@ -17,6 +17,7 @@
import gradlebuild.basics.repoRoot
import gradlebuild.cleanup.services.CachesCleaner
import gradlebuild.integrationtests.tasks.DistributionTest
import gradlebuild.integrationtests.setSystemPropertiesOfTestJVM

plugins {
java
Expand All @@ -38,7 +39,7 @@ tasks.withType<DistributionTest>().configureEach {
shouldRunAfter("test")

setJvmArgsOfTestJvm()
setSystemPropertiesOfTestJVM()
setSystemPropertiesOfTestJVM("default")
configureGradleTestEnvironment()
addSetUpAndTearDownActions()
}
Expand Down Expand Up @@ -93,13 +94,3 @@ fun DistributionTest.setJvmArgsOfTestJvm() {
jvmArgs("-XX:MaxPermSize=768m")
}
}

fun DistributionTest.setSystemPropertiesOfTestJVM() {
// use -PtestVersions=all or -PtestVersions=1.2,1.3…
val integTestVersionsSysProp = "org.gradle.integtest.versions"
if (project.hasProperty("testVersions")) {
systemProperties[integTestVersionsSysProp] = project.property("testVersions")
} else {
systemProperties[integTestVersionsSysProp] = "default"
}
}
Expand Up @@ -24,6 +24,7 @@ import gradlebuild.basics.testSplitOnlyTestGradleVersion
import gradlebuild.basics.testing.TestType
import gradlebuild.capitalize
import gradlebuild.integrationtests.extension.IntegrationTestExtension
import gradlebuild.integrationtests.tasks.DistributionTest
import gradlebuild.integrationtests.tasks.IntegrationTest
import gradlebuild.modules.extension.ExternalModulesExtension
import gradlebuild.testing.services.BuildBucketProvider
Expand Down Expand Up @@ -176,6 +177,17 @@ fun IntegrationTest.addDebugProperties() {
}


fun DistributionTest.setSystemPropertiesOfTestJVM(defaultVersions: String) {
// use -PtestVersions=all or -PtestVersions=1.2,1.3…
val integTestVersionsSysProp = "org.gradle.integtest.versions"
if (project.hasProperty("testVersions")) {
systemProperties[integTestVersionsSysProp] = project.property("testVersions")
} else {
systemProperties[integTestVersionsSysProp] = defaultVersions
}
}


internal
fun Project.configureIde(testType: TestType) {
val prefix = testType.prefix
Expand Down
Expand Up @@ -409,7 +409,7 @@ performanceTest.registerAndroidTestProject("largeAndroidBuild2", RemoteProject)
performanceTest.registerAndroidTestProject("santaTrackerAndroidBuild", RemoteProject) {
remoteUri = 'https://github.com/gradle/santa-tracker-android.git'
// Pinned from main branch
ref = '622fc64b7c39cb84e94174be3df9a54393348b45'
ref = '37a7d12c40f36657a0cb0181979c401c752bd328'
doLast {
addGoogleServicesJson(outputDirectory)
}
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Expand Up @@ -23,7 +23,7 @@ systemProp.gradle.internal.testdistribution.writeTraceFile=true
systemProp.gradle.internal.testdistribution.queryResponseTimeout=PT20S

# Default performance baseline
defaultPerformanceBaselines=8.0-commit-c6d0e67c
defaultPerformanceBaselines=8.0-commit-ca7079c8

# Disable Test Retry in GE plugin as long as Test Retry Gradle plugin is in use
systemProp.gradle.enterprise.testretry.enabled=false
Expand Up @@ -197,7 +197,7 @@ class BuildEventsIntegrationTest extends AbstractIntegrationSpec {
run("thing")

then:
output.count("EVENT:") == 14
output.count("EVENT:") == 6
outputContains("EVENT: finish :buildSrc:processResources SKIPPED")
outputContains("EVENT: finish :buildSrc:compileJava OK")
outputContains("EVENT: finish :thing UP-TO-DATE")
Expand Down
Expand Up @@ -95,7 +95,7 @@ class InternalBuildOperationEventsIntegrationTest extends AbstractIntegrationSpe
run("a")

then:
output.count("EVENT:") == 14
output.count("EVENT:") == 6
outputContains("EVENT: task ':a'")

when:
Expand Down
Expand Up @@ -174,7 +174,7 @@ class BuildInitPluginIntegrationTest extends AbstractInitIntegrationSpec {

when:
executer.usingSettingsFile(customSettings)
executer.expectDocumentedDeprecationWarning("Specifying custom settings file location has been deprecated. This is scheduled to be removed in Gradle 8.0. Consult the upgrading guide for further information: https://docs.gradle.org/current/userguide/upgrading_version_7.html#configuring_custom_build_layout")
executer.expectDocumentedDeprecationWarning("Specifying custom settings file location has been deprecated. This is scheduled to be removed in Gradle 9.0. Consult the upgrading guide for further information: https://docs.gradle.org/current/userguide/upgrading_version_7.html#configuring_custom_build_layout")
runInitWith targetScriptDsl as BuildInitDsl

then:
Expand Down
Expand Up @@ -47,8 +47,8 @@ class CompositeBuildBuildSrcIntegrationTest extends AbstractIntegrationSpec {
run("help")

then:
result.assertTaskExecuted(":buildSrc:assemble")
result.assertTaskExecuted(":child:buildSrc:assemble")
result.assertTaskExecuted(":buildSrc:jar")
result.assertTaskExecuted(":child:buildSrc:jar")

outputContains("outer thing")
outputContains("child thing")
Expand Down
Expand Up @@ -111,7 +111,7 @@ rootProject.buildFileName='build-copy.gradle'
buildA.file("build-copy.gradle").copyFrom(buildA.buildFile)

when:
executer.expectDocumentedDeprecationWarning("Specifying custom build file location has been deprecated. This is scheduled to be removed in Gradle 8.0. Consult the upgrading guide for further information: https://docs.gradle.org/current/userguide/upgrading_version_7.html#configuring_custom_build_layout")
executer.expectDocumentedDeprecationWarning("Specifying custom build file location has been deprecated. This is scheduled to be removed in Gradle 9.0. Consult the upgrading guide for further information: https://docs.gradle.org/current/userguide/upgrading_version_7.html#configuring_custom_build_layout")
execute(buildA, ":checkDeps", ["--build-file", "build-copy.gradle"])

then:
Expand All @@ -128,7 +128,7 @@ includeBuild '../buildB'
"""

when:
executer.expectDocumentedDeprecationWarning("Specifying custom settings file location has been deprecated. This is scheduled to be removed in Gradle 8.0. Consult the upgrading guide for further information: https://docs.gradle.org/current/userguide/upgrading_version_7.html#configuring_custom_build_layout")
executer.expectDocumentedDeprecationWarning("Specifying custom settings file location has been deprecated. This is scheduled to be removed in Gradle 9.0. Consult the upgrading guide for further information: https://docs.gradle.org/current/userguide/upgrading_version_7.html#configuring_custom_build_layout")
execute(buildA, ":checkDeps", ["--settings-file", "settings-copy.gradle"])

then:
Expand Down
Expand Up @@ -228,8 +228,9 @@ class CompositeBuildTaskExcludeIntegrationTest extends AbstractCompositeBuildTas
expect:
succeeds("greeting", ":build-logic:classes")
2.times {
succeeds("greeting", "-x", ":build-logic:classes")
result.assertTaskNotExecuted(":build-logic:classes")
succeeds("greeting", "-x", ":build-logic:jar")
result.assertTaskNotExecuted(":build-logic:jar")
result.assertTaskNotExecuted(":build-logic:compileJava")
}
}

Expand Down
Expand Up @@ -105,7 +105,7 @@ private StartParameterInternal buildSrcStartParameterFor(File buildSrcDir, Start
buildSrcStartParameter.setCurrentDir(buildSrcDir);
buildSrcStartParameter.setProjectProperties(containingBuildParameters.getProjectProperties());
buildSrcStartParameter.doNotSearchUpwards();
buildSrcStartParameter.setProfile(containingBuildParameters.isProfile());
buildSrcStartParameter.setInitScripts(containingBuildParameters.getInitScripts());
return buildSrcStartParameter;
}
}
Expand Up @@ -23,9 +23,7 @@
import org.gradle.api.internal.composite.CompositeBuildContext;
import org.gradle.api.model.ObjectFactory;
import org.gradle.composite.internal.plugins.CompositeBuildPluginResolverContributor;
import org.gradle.internal.build.BuildStateRegistry;
import org.gradle.internal.build.IncludedBuildFactory;
import org.gradle.internal.event.ListenerManager;
import org.gradle.internal.buildtree.GlobalDependencySubstitutionRegistry;
import org.gradle.internal.reflect.Instantiator;
import org.gradle.internal.service.ServiceRegistration;
import org.gradle.internal.service.scopes.AbstractPluginServiceRegistry;
Expand Down Expand Up @@ -61,19 +59,16 @@ public void configure(ServiceRegistration serviceRegistration) {
serviceRegistration.add(BuildStateFactory.class);
serviceRegistration.add(DefaultIncludedBuildFactory.class);
serviceRegistration.add(DefaultIncludedBuildTaskGraph.class);
serviceRegistration.add(DefaultIncludedBuildRegistry.class);
}

public BuildStateRegistry createIncludedBuildRegistry(CompositeBuildContext context,
Instantiator instantiator,
ListenerManager listenerManager,
ObjectFactory objectFactory,
NotationParser<Object, ComponentSelector> moduleSelectorNotationParser,
ImmutableAttributesFactory attributesFactory,
BuildStateFactory buildStateFactory,
IncludedBuildFactory includedBuildFactory) {
public GlobalDependencySubstitutionRegistry createGlobalDependencySubstitutionRegistry(CompositeBuildContext context,
Instantiator instantiator,
ObjectFactory objectFactory,
NotationParser<Object, ComponentSelector> moduleSelectorNotationParser,
ImmutableAttributesFactory attributesFactory) {
NotationParser<Object, Capability> capabilityNotationParser = new CapabilityNotationParserFactory(false).create();
IncludedBuildDependencySubstitutionsBuilder dependencySubstitutionsBuilder = new IncludedBuildDependencySubstitutionsBuilder(context, instantiator, objectFactory, attributesFactory, moduleSelectorNotationParser, capabilityNotationParser);
return new DefaultIncludedBuildRegistry(includedBuildFactory, dependencySubstitutionsBuilder, listenerManager, buildStateFactory);
return new IncludedBuildDependencySubstitutionsBuilder(context, instantiator, objectFactory, attributesFactory, moduleSelectorNotationParser, capabilityNotationParser);
}

public CompositeBuildContext createCompositeBuildContext() {
Expand Down
Expand Up @@ -20,7 +20,6 @@
import org.gradle.api.GradleException;
import org.gradle.api.artifacts.component.BuildIdentifier;
import org.gradle.api.internal.BuildDefinition;
import org.gradle.api.internal.GradleInternal;
import org.gradle.api.internal.SettingsInternal;
import org.gradle.api.internal.artifacts.DefaultBuildIdentifier;
import org.gradle.initialization.buildsrc.BuildSrcDetector;
Expand All @@ -32,7 +31,6 @@
import org.gradle.internal.build.RootBuildState;
import org.gradle.internal.build.StandAloneNestedBuild;
import org.gradle.internal.buildtree.NestedBuildTree;
import org.gradle.internal.composite.IncludedBuildInternal;
import org.gradle.internal.concurrent.CompositeStoppable;
import org.gradle.internal.concurrent.Stoppable;
import org.gradle.internal.event.ListenerManager;
Expand All @@ -45,16 +43,13 @@
import java.util.Comparator;
import java.util.Deque;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;

public class DefaultIncludedBuildRegistry implements BuildStateRegistry, Stoppable {
private final IncludedBuildFactory includedBuildFactory;
private final IncludedBuildDependencySubstitutionsBuilder dependencySubstitutionsBuilder;
private final BuildAddedListener buildAddedBroadcaster;
private final BuildStateFactory buildStateFactory;

Expand All @@ -65,12 +60,9 @@ public class DefaultIncludedBuildRegistry implements BuildStateRegistry, Stoppab
private final Map<File, IncludedBuildState> includedBuildsByRootDir = new LinkedHashMap<>();
private final Map<Path, File> includedBuildDirectoriesByPath = new LinkedHashMap<>();
private final Deque<IncludedBuildState> pendingIncludedBuilds = new ArrayDeque<>();
private boolean registerSubstitutionsForRootBuild;
private final Set<IncludedBuildState> currentlyConfiguring = new HashSet<>();

public DefaultIncludedBuildRegistry(IncludedBuildFactory includedBuildFactory, IncludedBuildDependencySubstitutionsBuilder dependencySubstitutionsBuilder, ListenerManager listenerManager, BuildStateFactory buildStateFactory) {
public DefaultIncludedBuildRegistry(IncludedBuildFactory includedBuildFactory, ListenerManager listenerManager, BuildStateFactory buildStateFactory) {
this.includedBuildFactory = includedBuildFactory;
this.dependencySubstitutionsBuilder = dependencySubstitutionsBuilder;
this.buildAddedBroadcaster = listenerManager.getBroadcaster(BuildAddedListener.class);
this.buildStateFactory = buildStateFactory;
}
Expand Down Expand Up @@ -149,13 +141,6 @@ public BuildState getBuild(BuildIdentifier buildIdentifier) {
return buildState;
}

@Override
public void afterConfigureRootBuild() {
if (registerSubstitutionsForRootBuild) {
dependencySubstitutionsBuilder.build(rootBuild);
}
}

@Override
public void finalizeIncludedBuilds() {
while (!pendingIncludedBuilds.isEmpty()) {
Expand All @@ -164,13 +149,6 @@ public void finalizeIncludedBuilds() {
}
}

@Override
public void registerSubstitutionsFor(IncludedBuildState build) {
currentlyConfiguring.add(build);
dependencySubstitutionsBuilder.build(build);
currentlyConfiguring.remove(build);
}

@Override
public StandAloneNestedBuild getBuildSrcNestedBuild(BuildState owner) {
return buildSrcBuildsByOwner.get(owner);
Expand Down Expand Up @@ -203,28 +181,6 @@ public NestedBuildTree addNestedBuildTree(BuildDefinition buildDefinition, Build
return buildStateFactory.createNestedTree(buildDefinition, buildIdentifier, identityPath, owner);
}

@Override
public void registerSubstitutionsForRootBuild() {
registerSubstitutionsForRootBuild = true;
}

@Override
public void ensureConfigured(IncludedBuildState buildToConfigure) {
if (currentlyConfiguring.contains(buildToConfigure)) {
return;
}
currentlyConfiguring.add(buildToConfigure);
buildToConfigure.ensureProjectsConfigured();
GradleInternal gradle = buildToConfigure.getMutableModel();
for (IncludedBuildInternal reference : gradle.includedBuilds()) {
BuildState target = reference.getTarget();
if (target instanceof IncludedBuildState) {
dependencySubstitutionsBuilder.build((IncludedBuildState) target);
}
}
currentlyConfiguring.remove(buildToConfigure);
}

@Override
public void visitBuilds(Consumer<? super BuildState> visitor) {
List<BuildState> ordered = new ArrayList<>(buildsByIdentifier.values());
Expand Down
Expand Up @@ -18,12 +18,12 @@

import org.gradle.api.artifacts.component.BuildIdentifier;
import org.gradle.api.internal.BuildDefinition;
import org.gradle.initialization.IncludedBuildSpec;
import org.gradle.initialization.exception.ExceptionAnalyser;
import org.gradle.internal.build.AbstractBuildState;
import org.gradle.internal.build.BuildState;
import org.gradle.internal.build.ExecutionResult;
import org.gradle.internal.build.StandAloneNestedBuild;
import org.gradle.internal.buildtree.BuildModelParameters;
import org.gradle.internal.buildtree.BuildTreeFinishExecutor;
import org.gradle.internal.buildtree.BuildTreeLifecycleController;
import org.gradle.internal.buildtree.BuildTreeLifecycleControllerFactory;
Expand Down Expand Up @@ -60,19 +60,11 @@ class DefaultNestedBuild extends AbstractBuildState implements StandAloneNestedB

BuildScopeServices buildScopeServices = getBuildServices();
ExceptionAnalyser exceptionAnalyser = buildScopeServices.get(ExceptionAnalyser.class);
BuildModelParameters modelParameters = buildScopeServices.get(BuildModelParameters.class);
BuildTreeWorkExecutor workExecutor = new DefaultBuildTreeWorkExecutor();
BuildTreeLifecycleControllerFactory buildTreeLifecycleControllerFactory = buildScopeServices.get(BuildTreeLifecycleControllerFactory.class);

// On completion of the action, finish only this build and do not finish any other builds
// When the build model is required, then do not finish anything on completion of the action
// The root build will take care of finishing this build later, if not finished now
BuildTreeFinishExecutor finishExecutor;
if (modelParameters.isRequiresBuildModel()) {
finishExecutor = new DoNothingBuildFinishExecutor(exceptionAnalyser);
} else {
finishExecutor = new FinishThisBuildOnlyFinishExecutor(exceptionAnalyser);
}
// On completion of the action, do not finish this build. The root build will take care of finishing this build later
BuildTreeFinishExecutor finishExecutor = new DoNothingBuildFinishExecutor(exceptionAnalyser);
buildTreeLifecycleController = buildTreeLifecycleControllerFactory.createController(getBuildController(), workExecutor, finishExecutor);
}

Expand All @@ -96,6 +88,11 @@ public boolean isImplicitBuild() {
return true;
}

@Override
public BuildState getOwner() {
return owner;
}

@Override
public ExecutionResult<Void> finishBuild() {
return getBuildController().finishBuild(null);
Expand All @@ -121,6 +118,10 @@ public File getBuildRootDir() {
return buildDefinition.getBuildRootDir();
}

@Override
public void assertCanAdd(IncludedBuildSpec includedBuildSpec) {
}

private static class DoNothingBuildFinishExecutor implements BuildTreeFinishExecutor {
private final ExceptionAnalyser exceptionAnalyser;

Expand Down

0 comments on commit 2291e91

Please sign in to comment.