Clone Tools
  • last updated a few seconds ago
Constraints: committers
Constraints: files
Constraints: dates
Ignore hanging test for now

Ignore flaky tests

Introduce GradleDistributionsPlugin and multiple distribution projects

We can now have different distributions, containing different sets of

jars/functionality. For this, one subproject per distribution type is

created. Initially we introduce:

- _core_ (absolute minimum needed to run Gradle)

- _basics_ (Basic functionalities on top of core)

- _jvm_ (Everything needed for JVM ecosystem support)

- _native_ (everything for Native support)

- _publishing_ (everything to publish to Maven/Ivy repositories)

This is just an initial structure which we can now easily change. The

main point here is to enable a setup like this at all. New/different

distributions can now simply be added by adding a new subproject that

applies `gradlebuild.distribution.packaging` and defines the content of

the distribution in terms of dependencies.

Projects needing a distribution for testing, then depend on that project

e.g. `integTestDistributionRuntimeOnly(project(":distributionsJvm"))`

While introducing this, a lot of changes/improvements are done.

(See also previous commits and documentation in code.) Some major things:

- The embedded test runner now no longer supports running against a full

distribution as fallback. This has the advantage that we do not need to

assemble the distribution in embedded running, where the huge majority

of tests does not need it. To allow more tests still to run embedded,

the embedded support with TestKit/KotlinDSL involvement has been

improved. Some tests won't run with the embedded runner at all

now, but compared to the overall amount of tests, these are just a few.

And the "forking" tests always run as part of the PR pipeline.

- Cacheability of tests is highly improved. We broke some things

recently when adding inputs for distributed testing.

These regressions are addressed. Other things were

improved along the line (local Tooling API repo no longer uses timestamp

version, local bin distribution without timestamp for wrapper tests,

sample tests no longer rely on absolute path and timestamp version, ...)

- The `docs.jar` is no longer part of the distribution. It almost had no

content and what it had was runtime metadata and not documentation.

Instead, a distribution project now encapsulates all the runtime

metadata creation and produces a `runtime-api-info.jar` that is specific

to the distribution.

- In the past we had flakiness issues causes by different distributions

sharing the same user home/daemon registry. With the fixed set of

distributions defined, we now use different user home/daemon registry

for each distribution.

- Cross-project configurations are removed. There was some code

central to distribution building and runtime metadata generation that

reached into all subprojects. This is now replaced by using proper

variant aware dependency management to share artifacts between

distribution subprojects and the other subprojects.

  1. … 189 more files in changeset.
Never execute a real Gradle distribution in embedded test mode

This will become unsupported such that we do not need to assemble

the distribution for embedded mode anymore. The tests that

are affected by this were checked and are adjusted:

- If the test can run embedded, the restriction that the test requires

a distribution is removed. This is the case for some older tests

that were not checked for a long time and tests that involve TestKit

or KotlinDSL, for which the embedded support is improved in the next


- If the test only requires a forked process, but not a complete

distribution, it can run a new process based on the current

classpath using 'requiresDaemon().requiresIsolatedDaemon()'.

- If the test needs a real distribution, it is ignored in embedded mode.

  1. … 105 more files in changeset.
Allow build options to be specified as system properties in the JVM arguments specified by the tooling API client.

  1. … 7 more files in changeset.
Move responsibility for constructing a `StartParameter` from command-line options and properties into a single class.

  1. … 30 more files in changeset.
Ignore failing test case

Detangle artifact transform nodes from `ResolveableArtifact` so that the initial set of files can be represented in some other way.

  1. … 16 more files in changeset.
Ensure certain tooling API progress events do not go missing for older client versions.

  1. … 3 more files in changeset.
Temporarily disable test for certain TAPI + Gradle versions.

Use a relative path to a script that is used as the location for a configuration cache problem.

  1. … 49 more files in changeset.
Capture the plugin or script where an undeclared system property read happens and include this in the problem description.

    • -33
    • +32
  1. … 35 more files in changeset.
Address compiler warning in 'core' subproject (#13184)

  1. … 66 more files in changeset.
Check daemon reuse between CLI and TAPI

  1. … 1 more file in changeset.
Fix flakiness in TAPI test that inspected daemon logs

Fix flaky failure

Upgrade JUnit version (#12924)

Upgrade JUnit to 4.13, JUnit platform to 5.6.2

  1. … 319 more files in changeset.
Fix test failures due to error message change

  1. … 1 more file in changeset.
Remove test precondition: FIX_TO_WORK_ON_JAVA9 (#12940)

Gradle clearly works with Java 9 (and later) by now. There should

be nothing left to be fixed. The remaining usages of this annotation

where wrong:

- The test is not testing a feature of Gradle, but of Java or another

tool that only works with java versions < 9

Replaced precondition with: JDK8_OR_EARLIER

(or JDK9_OR_LATER depending on how it is used)

- Test is running older Gradle versions that do not support Java9+

Replaced precondition with: JDK8_OR_EARLIER

- Test itself was using features of Java not available anymore in Java9+

Removed precondition and fixed test to do the test setup differently.

  1. … 11 more files in changeset.
Improve error message for disconnected tooling API clients

  1. … 3 more files in changeset.
Use lowercase for initial letter in test method names

Update to be released with 6.5

  1. … 5 more files in changeset.
Revert "Apply undeclared system property instrumentation to plugins injected through TestKit."

This reverts commit 4a2a0e7faa6eb540fb58f4b55e8cd019073442c9.

  1. … 13 more files in changeset.
Apply undeclared system property instrumentation to plugins injected through TestKit.

  1. … 13 more files in changeset.
Apply undeclared system property instrumentation to plugins injected through TestKit.

  1. … 13 more files in changeset.
Apply system property read detection to Groovy DSL scripts.

  1. … 36 more files in changeset.
Adjust cross version TAPI tests expectations for implicit tasks

Signed-off-by: Paul Merlin <>

  1. … 1 more file in changeset.
Extend test coverage

Move disconnect() method to API

  1. … 3 more files in changeset.
Fix test