diff --git a/packages/gradle/src/plugin/nodes.spec.ts b/packages/gradle/src/plugin/nodes.spec.ts index b6d19b43e8..47b4e14f27 100644 --- a/packages/gradle/src/plugin/nodes.spec.ts +++ b/packages/gradle/src/plugin/nodes.spec.ts @@ -202,192 +202,233 @@ describe('@nx/gradle/plugin', () => { `); }); - it('should create nodes with atomized tests targets based on gradle for nested project root', async () => { - gradleReport = { - gradleFileToGradleProjectMap: new Map([ - ['nested/nested/proj/build.gradle', 'proj'], - ]), - buildFileToDepsMap: new Map(), - gradleFileToOutputDirsMap: new Map>([ - ['nested/nested/proj/build.gradle', new Map([['build', 'build']])], - ]), - gradleProjectToTasksTypeMap: new Map>([ - ['proj', new Map([['test', 'Test']])], - ]), - gradleProjectToProjectName: new Map([['proj', 'proj']]), - }; - await tempFs.createFiles({ - 'nested/nested/proj/build.gradle': ``, - }); - await tempFs.createFiles({ - 'proj/src/test/java/test/rootTest.java': ``, - }); - await tempFs.createFiles({ - 'nested/nested/proj/src/test/java/test/test.java': ``, - }); - await tempFs.createFiles({ - 'nested/nested/proj/src/test/java/test/test1.java': ``, + describe('with atomized tests targets', () => { + beforeEach(async () => { + gradleReport = { + gradleFileToGradleProjectMap: new Map([ + ['nested/nested/proj/build.gradle', 'proj'], + ]), + buildFileToDepsMap: new Map(), + gradleFileToOutputDirsMap: new Map>([ + ['nested/nested/proj/build.gradle', new Map([['build', 'build']])], + ]), + gradleProjectToTasksTypeMap: new Map>([ + ['proj', new Map([['test', 'Test']])], + ]), + gradleProjectToProjectName: new Map([['proj', 'proj']]), + }; + await tempFs.createFiles({ + 'nested/nested/proj/build.gradle': ``, + }); + await tempFs.createFiles({ + 'proj/src/test/java/test/rootTest.java': ``, + }); + await tempFs.createFiles({ + 'nested/nested/proj/src/test/java/test/aTest.java': ``, + }); + await tempFs.createFiles({ + 'nested/nested/proj/src/test/java/test/bTest.java': ``, + }); + await tempFs.createFiles({ + 'nested/nested/proj/src/test/java/test/cTests.java': ``, + }); }); - const results = await createNodesFunction( - [ - 'nested/nested/proj/build.gradle', - 'proj/src/test/java/test/rootTest.java', - 'nested/nested/proj/src/test/java/test/test.java', - 'nested/nested/proj/src/test/java/test/test1.java', - ], - { - buildTargetName: 'build', - ciTargetName: 'test-ci', - }, - context - ); - - expect(results).toMatchInlineSnapshot(` - [ + it('should create nodes with atomized tests targets based on gradle for nested project root', async () => { + const results = await createNodesFunction( [ - "nested/nested/proj/build.gradle", - { - "projects": { - "nested/nested/proj": { - "metadata": { - "targetGroups": { - "Test": [ - "test-ci--test", - "test-ci--test1", - "test-ci", - "test", - ], - }, - "technologies": [ - "gradle", - ], - }, - "name": "proj", - "targets": { - "test": { - "cache": false, - "command": "./gradlew proj:test", - "dependsOn": [ - "classes", - ], - "inputs": [ - "default", - "^production", - ], - "metadata": { - "help": { - "command": "./gradlew help --task proj:test", - "example": { - "options": { - "args": [ - "--rerun", - ], - }, - }, - }, - "technologies": [ - "gradle", + 'nested/nested/proj/build.gradle', + 'proj/src/test/java/test/rootTest.java', + 'nested/nested/proj/src/test/java/test/aTest.java', + 'nested/nested/proj/src/test/java/test/bTest.java', + 'nested/nested/proj/src/test/java/test/cTests.java', + ], + { + buildTargetName: 'build', + ciTargetName: 'test-ci', + }, + context + ); + + expect(results).toMatchInlineSnapshot(` + [ + [ + "nested/nested/proj/build.gradle", + { + "projects": { + "nested/nested/proj": { + "metadata": { + "targetGroups": { + "Test": [ + "test-ci--aTest", + "test-ci--bTest", + "test-ci--cTests", + "test-ci", + "test", ], }, + "technologies": [ + "gradle", + ], }, - "test-ci": { - "cache": true, - "dependsOn": [ - { - "params": "forward", - "projects": "self", - "target": "test-ci--test", - }, - { - "params": "forward", - "projects": "self", - "target": "test-ci--test1", - }, - ], - "executor": "nx:noop", - "inputs": [ - "default", - "^production", - ], - "metadata": { - "description": "Runs Gradle Tests in CI", - "help": { - "command": "./gradlew help --task proj:test", - "example": { - "options": { - "args": [ - "--rerun", - ], + "name": "proj", + "targets": { + "test": { + "cache": false, + "command": "./gradlew proj:test", + "dependsOn": [ + "classes", + ], + "inputs": [ + "default", + "^production", + ], + "metadata": { + "help": { + "command": "./gradlew help --task proj:test", + "example": { + "options": { + "args": [ + "--rerun", + ], + }, }, }, + "technologies": [ + "gradle", + ], }, - "nonAtomizedTarget": "test", - "technologies": [ - "gradle", - ], }, - }, - "test-ci--test": { - "cache": true, - "command": "./gradlew proj:test --tests test", - "dependsOn": [ - "classes", - ], - "inputs": [ - "default", - "^production", - ], - "metadata": { - "description": "Runs Gradle test nested/nested/proj/src/test/java/test/test.java in CI", - "help": { - "command": "./gradlew help --task proj:test", - "example": { - "options": { - "args": [ - "--rerun", - ], + "test-ci": { + "cache": true, + "dependsOn": [ + { + "params": "forward", + "projects": "self", + "target": "test-ci--aTest", + }, + { + "params": "forward", + "projects": "self", + "target": "test-ci--bTest", + }, + { + "params": "forward", + "projects": "self", + "target": "test-ci--cTests", + }, + ], + "executor": "nx:noop", + "inputs": [ + "default", + "^production", + ], + "metadata": { + "description": "Runs Gradle Tests in CI", + "help": { + "command": "./gradlew help --task proj:test", + "example": { + "options": { + "args": [ + "--rerun", + ], + }, }, }, + "nonAtomizedTarget": "test", + "technologies": [ + "gradle", + ], }, - "technologies": [ - "gradle", - ], }, - }, - "test-ci--test1": { - "cache": true, - "command": "./gradlew proj:test --tests test1", - "dependsOn": [ - "classes", - ], - "inputs": [ - "default", - "^production", - ], - "metadata": { - "description": "Runs Gradle test nested/nested/proj/src/test/java/test/test1.java in CI", - "help": { - "command": "./gradlew help --task proj:test", - "example": { - "options": { - "args": [ - "--rerun", - ], + "test-ci--aTest": { + "cache": true, + "command": "./gradlew proj:test --tests aTest", + "dependsOn": [ + "classes", + ], + "inputs": [ + "default", + "^production", + ], + "metadata": { + "description": "Runs Gradle test nested/nested/proj/src/test/java/test/aTest.java in CI", + "help": { + "command": "./gradlew help --task proj:test", + "example": { + "options": { + "args": [ + "--rerun", + ], + }, }, }, + "technologies": [ + "gradle", + ], }, - "technologies": [ - "gradle", + }, + "test-ci--bTest": { + "cache": true, + "command": "./gradlew proj:test --tests bTest", + "dependsOn": [ + "classes", ], + "inputs": [ + "default", + "^production", + ], + "metadata": { + "description": "Runs Gradle test nested/nested/proj/src/test/java/test/bTest.java in CI", + "help": { + "command": "./gradlew help --task proj:test", + "example": { + "options": { + "args": [ + "--rerun", + ], + }, + }, + }, + "technologies": [ + "gradle", + ], + }, + }, + "test-ci--cTests": { + "cache": true, + "command": "./gradlew proj:test --tests cTests", + "dependsOn": [ + "classes", + ], + "inputs": [ + "default", + "^production", + ], + "metadata": { + "description": "Runs Gradle test nested/nested/proj/src/test/java/test/cTests.java in CI", + "help": { + "command": "./gradlew help --task proj:test", + "example": { + "options": { + "args": [ + "--rerun", + ], + }, + }, + }, + "technologies": [ + "gradle", + ], + }, }, }, }, }, }, - }, - ], - ] - `); + ], + ] + `); + }); }); }); diff --git a/packages/gradle/src/utils/get-gradle-report.ts b/packages/gradle/src/utils/get-gradle-report.ts index 7c5e22db2a..5b9406e6b5 100644 --- a/packages/gradle/src/utils/get-gradle-report.ts +++ b/packages/gradle/src/utils/get-gradle-report.ts @@ -33,8 +33,10 @@ let gradleCurrentConfigHash: string; export const GRADLE_BUILD_FILES = new Set(['build.gradle', 'build.gradle.kts']); export const GRADLE_TEST_FILES = [ - '**/src/test/java/**/*.java', - '**/src/test/kotlin/**/*.kt', + '**/src/test/java/**/*Test.java', + '**/src/test/kotlin/**/*Test.kt', + '**/src/test/java/**/*Tests.java', + '**/src/test/kotlin/**/*Tests.kt', ]; export const gradleConfigGlob = combineGlobPatterns(