testing-base

Clone Tools
  • last updated a few seconds ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Move ServiceScope and EventScope to :base-annotations

Here we are sharing the concept of event and service scopes by making scopes themselves extensible. This is achieved by replacing the single enum with types. The scope types inherit each other, representing the inheritance between scopes.

  1. … 95 more files in changeset.
Add new subproject for :buildOperations

  1. … 6 more files in changeset.
Stop test filters from hiding suite failures (#13879)

Prior to this commit, failures on the test suite level, e.g. a failing

worker or a failure on the JUnit Platform engine level, was hidden when

a test filter (e.g. using `--tests`) was active and no test method was

actually executed. The root cause was only visible in the HTML test

report while the task failed with "No tests found". Now, the task fails

with "there were failing tests" and points to the report.

Resolves #12073.

  1. … 1 more file in changeset.
Consistently use camel case

  1. … 89 more files in changeset.
Move dependency declarations

- Coordinates go into final fields of the 'libs' extension

- Versions are defined in the platform

- The platform is used everywhere

Note: We now published the 'resolved versions' for the modules we

also publish independently. This should give the same result as

before, where we explicitly declared a 'required' version that would

correspond to the resolved version.

  1. … 116 more files in changeset.
Revert "Merge pull request #13636 from gradle/eskatos/cc/revert-testng"

This reverts commit f7a0c902fb63c84e837977da09f3bd1e398e4c75, reversing

changes made to 185167d9457cf251be4c968c09c37ee7a3b24bcb.

  1. … 42 more files in changeset.
Use id("...") syntax to apply build logic plugins

This works with 'buildSrc' and 'included build' plugins.

It is a preparation for moving the build logic to included builds.

  1. … 113 more files in changeset.
Revert "Merge pull request #13595 from gradle/eskatos/cc/testng"

This reverts commit cd63def1e15a2bc678330dce83ae03aee2bb3695, reversing

changes made to 3959191c83afb2bfa0248f97c1e0221c7029b420.

  1. … 38 more files in changeset.
Remove unnecessary `skip = FAILS_CLEANUP_ASSERTIONS` from remaining tests

  1. … 2 more files in changeset.
Turn 'integration-teesting' plugins into pre-compiled script plugins

And move everything to the common 'gradlebuild' package.

  1. … 45 more files in changeset.
Add `FAILS_CLEANUP_ASSERTIONS` to `XCTestTestFrameworkIntegrationTest`

  1. … 1 more file in changeset.
Remove @ToBeFixed in TestNGTestFrameworkIntegrationTest

Signed-off-by: Paul Merlin <paul@gradle.com>

  1. … 1 more file in changeset.
Remove @ToBeFixed in TestExecutionBuildOperationsIntegrationTest

Signed-off-by: Paul Merlin <paul@gradle.com>

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.
Document reason for @ToBeFixedForInstantExecution in :testingBase

Signed-off-by: Paul Merlin <paul@gradle.com>

Add support for test `@DisplayName` (#13250)

If @DisplayName annotation is attached, output the value to test result XML.

* Recognize contributor

* Add missing `@UsedByScanPlugin` annotations

Co-authored-by: Daiki Hirabayashi <hirabayashi@infoscience.co.jp>

Co-authored-by: Daiki Hirabayashi <gigabowser@hotmail.co.jp>

Signed-off-by: Daiki Hirabayashi <hirabayashi@infoscience.co.jp>

  1. … 11 more files in changeset.
Add dedicated placeholder assertion error type

This commit introduces a dedicated placeholder assertion error

type which is used whenever a subtype of `AssertionError` cannot

be deserialized. Before, we would use the regular `PlaceholderException`,

which happens to discard the fact that it's an `AssertionError`.

The consequence is that IntelliJ IDEA in combination with Spock can't

infer the correct failure kind, and displays a wrong icon (see #12302).

It does not, however, fix the problem that the "Click here to see diff"

link doesn't show up. The reason is that this feature builds on top

of a dedicated subtype of `AssertionError` that the messaging bus

isn't aware of (org.opentest4j.AssertionFailedError and its legacy JUnit

equivalent).

Fixes #12302

  1. … 5 more files in changeset.
Add inputs for sample tests (#13153)

Some tests depend on sample directories (for example this one https://github.com/gradle/gradle/blob/96eecdf0f6c6c942470678ef4e2ce325ac3851fa/subprojects/ivy/src/integTest/groovy/org/gradle/api/AutoTestedSamplesIvyIntegrationTest.groovy#L26) but didn't mark them as inputs. This breaks distributed test.

  1. … 20 more files in changeset.
Add explaining `because` to tests failing with the configuration cache

Signed-off-by: Paul Merlin <paul@gradle.com>

  1. … 14 more files in changeset.
Replace `ParallelismConfigurationListener` and `ParallelismConfigurationManager` and some mutable state with a service of type `ParallelismConfiguration`.

  1. … 31 more files in changeset.
Introduce internal `@EventScope` annotation to attach to listener interfaces to declare which scope their events are generated in.

Add some validation to `ListenerManager` to verify that each listener interface is annotated with the correct scope.

  1. … 60 more files in changeset.
Annotate internal APIs used by test-distribution (#13010)

In order to avoid accidentally changing an internal API without

adjusting the test-distribution plugin, they are now annotated with

`@UsedByScanPlugin("test-distribution")`.

  1. … 22 more files in changeset.
Upgrade JUnit version (#12924)

Upgrade JUnit to 4.13, JUnit platform to 5.6.2

  1. … 329 more files in changeset.
Address compiler warnings in 'testing-base' subproject

Apply the 'classycle' plugin consistently to all projects (#12849)

Existing cycles are now explicitly excluded in the corresponding

build scripts and are thus more visible. They may or may not be

improved on when working on the corresponding project.

  1. … 90 more files in changeset.
Clean up subproject grouping in gradle build

  1. … 143 more files in changeset.
Rename 'modularClasspathHandling' -> 'modularity'

  1. … 55 more files in changeset.
Pull module path calculation into Test task (#12685)

This way, the JvmTestExecutionSpec already carries the final

classpath and module path. This makes is easier to create alternative

test worker implementations based on the spec.

  1. … 9 more files in changeset.
Adjust tests following changes to internal interfaces

  1. … 2 more files in changeset.
Add module path handling to test task and underlying infrastructure

This adds a module path handling input property to the test task

and passes it to the worker process builder, which is responsible

for starting up a test workers. It will be used there to determine

if the test worker should run as module.

  1. … 20 more files in changeset.