mirror of
https://github.com/gradle/gradle-build-action
synced 2024-11-24 02:22:16 +00:00
Add basic test coverage for dependency graph
- Test workflow with dependency graph enabled - Gradle test for init-script functionality
This commit is contained in:
parent
c0186c5832
commit
437bff62b6
4 changed files with 150 additions and 0 deletions
5
.github/workflows/ci-full-check.yml
vendored
5
.github/workflows/ci-full-check.yml
vendored
|
@ -29,6 +29,11 @@ jobs:
|
||||||
with:
|
with:
|
||||||
cache-key-prefix: ${{github.run_number}}-
|
cache-key-prefix: ${{github.run_number}}-
|
||||||
|
|
||||||
|
dependency-graph:
|
||||||
|
uses: ./.github/workflows/integ-test-dependency-graph.yml
|
||||||
|
with:
|
||||||
|
cache-key-prefix: ${{github.run_number}}-
|
||||||
|
|
||||||
execution-with-caching:
|
execution-with-caching:
|
||||||
uses: ./.github/workflows/integ-test-execution-with-caching.yml
|
uses: ./.github/workflows/integ-test-execution-with-caching.yml
|
||||||
with:
|
with:
|
||||||
|
|
7
.github/workflows/ci-quick-check.yml
vendored
7
.github/workflows/ci-quick-check.yml
vendored
|
@ -50,6 +50,13 @@ jobs:
|
||||||
runner-os: '["ubuntu-latest"]'
|
runner-os: '["ubuntu-latest"]'
|
||||||
download-dist: true
|
download-dist: true
|
||||||
|
|
||||||
|
dependency-graph:
|
||||||
|
needs: build-distribution
|
||||||
|
uses: ./.github/workflows/integ-test-dependency-graph.yml
|
||||||
|
with:
|
||||||
|
runner-os: '["ubuntu-latest"]'
|
||||||
|
download-dist: true
|
||||||
|
|
||||||
execution-with-caching:
|
execution-with-caching:
|
||||||
needs: build-distribution
|
needs: build-distribution
|
||||||
uses: ./.github/workflows/integ-test-execution-with-caching.yml
|
uses: ./.github/workflows/integ-test-execution-with-caching.yml
|
||||||
|
|
68
.github/workflows/integ-test-dependency-graph.yml
vendored
Normal file
68
.github/workflows/integ-test-dependency-graph.yml
vendored
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
name: Test execution with caching
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
cache-key-prefix:
|
||||||
|
type: string
|
||||||
|
runner-os:
|
||||||
|
type: string
|
||||||
|
default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
|
||||||
|
download-dist:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
|
||||||
|
env:
|
||||||
|
DOWNLOAD_DIST: ${{ inputs.download-dist }}
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: dependency-graph-${{ inputs.cache-key-prefix }}
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
groovy-generate:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Download distribution if required
|
||||||
|
uses: ./.github/actions/download-dist
|
||||||
|
- name: Setup Gradle for dependency-graph generate
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
dependency-graph: generate
|
||||||
|
- name: Run gradle build
|
||||||
|
run: ./gradlew build
|
||||||
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
|
||||||
|
kotlin-generate:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Download distribution if required
|
||||||
|
uses: ./.github/actions/download-dist
|
||||||
|
- name: Setup Gradle for dependency-graph generate
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
dependency-graph: generate-and-submit
|
||||||
|
- name: Run gradle build
|
||||||
|
run: ./gradlew build
|
||||||
|
working-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
|
||||||
|
submit:
|
||||||
|
needs: [groovy-generate, kotlin-generate]
|
||||||
|
runs-on: "ubuntu-latest"
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Download distribution if required
|
||||||
|
uses: ./.github/actions/download-dist
|
||||||
|
- name: Submit dependency graphs
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
dependency-graph: download-and-submit
|
|
@ -0,0 +1,70 @@
|
||||||
|
package com.gradle.gradlebuildaction
|
||||||
|
|
||||||
|
import static org.junit.Assume.assumeTrue
|
||||||
|
|
||||||
|
class TestDependencyGraph extends BaseInitScriptTest {
|
||||||
|
def initScript = 'github-dependency-graph.init.gradle'
|
||||||
|
|
||||||
|
|
||||||
|
def "does not produce dependency graph when not enabled"() {
|
||||||
|
assumeTrue testGradleVersion.compatibleWithCurrentJvm
|
||||||
|
|
||||||
|
when:
|
||||||
|
run(['help'], initScript, testGradleVersion.gradleVersion)
|
||||||
|
|
||||||
|
then:
|
||||||
|
assert !reportsDir.exists()
|
||||||
|
|
||||||
|
where:
|
||||||
|
testGradleVersion << ALL_VERSIONS
|
||||||
|
}
|
||||||
|
|
||||||
|
def "produces dependency graph when enabled"() {
|
||||||
|
assumeTrue testGradleVersion.compatibleWithCurrentJvm
|
||||||
|
|
||||||
|
when:
|
||||||
|
run(['help'], initScript, testGradleVersion.gradleVersion, [], envVars)
|
||||||
|
|
||||||
|
then:
|
||||||
|
assert reportFile.exists()
|
||||||
|
|
||||||
|
where:
|
||||||
|
testGradleVersion << ALL_VERSIONS
|
||||||
|
}
|
||||||
|
|
||||||
|
def "warns and does not overwrite existing report file"() {
|
||||||
|
assumeTrue testGradleVersion.compatibleWithCurrentJvm
|
||||||
|
|
||||||
|
when:
|
||||||
|
reportsDir.mkdirs()
|
||||||
|
reportFile << "DUMMY CONTENT"
|
||||||
|
def result = run(['help'], initScript, testGradleVersion.gradleVersion, [], envVars)
|
||||||
|
|
||||||
|
then:
|
||||||
|
assert reportFile.text == "DUMMY CONTENT"
|
||||||
|
assert result.output.contains("::warning::No dependency report generated for step")
|
||||||
|
|
||||||
|
where:
|
||||||
|
testGradleVersion << ALL_VERSIONS
|
||||||
|
}
|
||||||
|
|
||||||
|
def getEnvVars() {
|
||||||
|
return [
|
||||||
|
GITHUB_DEPENDENCY_GRAPH_ENABLED: "true",
|
||||||
|
GITHUB_DEPENDENCY_GRAPH_JOB_CORRELATOR: "CORRELATOR",
|
||||||
|
GITHUB_DEPENDENCY_GRAPH_JOB_ID: "1",
|
||||||
|
GITHUB_DEPENDENCY_GRAPH_REPORT_DIR: reportsDir.absolutePath,
|
||||||
|
GITHUB_REF: "main",
|
||||||
|
GITHUB_SHA: "123456",
|
||||||
|
GITHUB_WORKSPACE: testProjectDir.absolutePath
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
def getReportsDir() {
|
||||||
|
return new File(testProjectDir, 'build/reports/github-dependency-graph-snapshots')
|
||||||
|
}
|
||||||
|
|
||||||
|
def getReportFile() {
|
||||||
|
return new File(reportsDir, "CORRELATOR.json")
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue