JSON provider tests in GH matrix #1
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: tests | |
on: | |
workflow_call: | |
pull_request: | |
push: | |
branches: [ master ] | |
jobs: | |
generic-tests: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Git checkout | |
uses: actions/checkout@v3 | |
- name: Setup java | |
uses: actions/setup-java@v3 | |
with: | |
distribution: corretto | |
java-version: 17 | |
- name: Setup Gradle | |
uses: gradle/gradle-build-action@v2 | |
with: | |
gradle-version: 8.2.1 | |
- name: Run generic tests | |
run: ./gradlew check -x test --no-daemon | |
- name: Upload test execution data | |
uses: actions/upload-artifact@v3 | |
with: | |
name: generic-tests-exec | |
path: build/jacoco | |
provider-list: | |
runs-on: ubuntu-latest | |
outputs: | |
test-classes: ${{ steps.test-classes.outputs.test-classes }} | |
steps: | |
- name: Git checkout | |
uses: actions/checkout@v3 | |
- name: List provider test classes | |
id: test-classes | |
run: | | |
CLASSES=$(ls src/test/java/dev/harrel/jsonschema/providers/ | sed 's/\.java$//' | jq -R -s -c 'split("\n")[:-1]') | |
echo "test-classes=$CLASSES" >> "$GITHUB_OUTPUT" | |
provider-tests: | |
needs: provider-list | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
test-class: ${{ fromJSON(needs.provider-list.outputs.test-classes) }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup java | |
uses: actions/setup-java@v3 | |
with: | |
distribution: corretto | |
java-version: 17 | |
- name: Setup Gradle | |
uses: gradle/gradle-build-action@v2 | |
with: | |
gradle-version: 8.2.1 | |
- name: Gradle provider tests | |
run: ./gradlew test --tests ${{ matrix.test-class }} --no-daemon | |
- name: Rename test execution data | |
run: mv build/jacoco/test.exec build/jacoco/${{ matrix.test-class }}.exec | |
- name: Upload test execution data | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ matrix.test-class }}-tests-exec | |
path: build/jacoco | |
report: | |
needs: [generic-tests, provider-tests] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup java | |
uses: actions/setup-java@v3 | |
with: | |
distribution: corretto | |
java-version: 17 | |
- name: Setup Gradle | |
uses: gradle/gradle-build-action@v2 | |
with: | |
gradle-version: 8.2.1 | |
- name: Download test execution data | |
uses: actions/download-artifact@v3 | |
with: | |
path: build/jacoco | |
- name: Get exec data up one level | |
run: find build/jacoco -path 'build/jacoco/*/*' -execdir mv -t ../ {} + | |
- name: Gradle jacoco report | |
run: ./gradlew jacocoTestReport --no-daemon | |
- name: Generate coverage badge | |
uses: cicirello/jacoco-badge-generator@v2 | |
with: | |
jacoco-csv-file: build/reports/jacoco/test/jacocoTestReport.csv | |
generate-coverage-badge: true | |
generate-coverage-endpoint: true | |
- name: Upload report | |
uses: actions/upload-artifact@v3 | |
with: | |
name: report-output | |
path: build/reports | |
- name: Upload badge | |
uses: actions/upload-pages-artifact@v1 | |
with: | |
path: './.github/badges' |