Skip to content

Commit

Permalink
Add basic test coverage for dependency graph
Browse files Browse the repository at this point in the history
- Test workflow with dependency graph enabled
- Gradle test for init-script functionality
  • Loading branch information
bigdaz committed Jul 8, 2023
1 parent c0186c5 commit 437bff6
Show file tree
Hide file tree
Showing 4 changed files with 150 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .github/workflows/ci-full-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@ jobs:
with:
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:
uses: ./.github/workflows/integ-test-execution-with-caching.yml
with:
Expand Down
7 changes: 7 additions & 0 deletions .github/workflows/ci-quick-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,13 @@ jobs:
runner-os: '["ubuntu-latest"]'
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:
needs: build-distribution
uses: ./.github/workflows/integ-test-execution-with-caching.yml
Expand Down
68 changes: 68 additions & 0 deletions .github/workflows/integ-test-dependency-graph.yml
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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")
}
}

0 comments on commit 437bff6

Please sign in to comment.