Skip to content

Add optional configuration for formatKotlin task to fail build if it cannot fix all lint errors #252

Add optional configuration for formatKotlin task to fail build if it cannot fix all lint errors

Add optional configuration for formatKotlin task to fail build if it cannot fix all lint errors #252

Workflow file for this run

name: Build Project
on:
pull_request:
push:
branches:
- master
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, windows-latest ]
name: '[${{ matrix.os }}] build plugin'
steps:
- uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v3
with:
distribution: 'adopt'
java-version: 17
- name: Gradle wrapper validation
uses: gradle/wrapper-validation-action@859c33240bd026ce8d5f711f5adcc65c2f8eafc1 # https://github.com/gradle/wrapper-validation-action/issues/66
- name: ./gradlew assemble
uses: gradle/gradle-build-action@v2
with:
arguments: assemble
- name: ./gradlew check
uses: gradle/gradle-build-action@v2
with:
arguments: check
- name: Upload test results
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: test-results-${{ matrix.os }}
path: "${{ github.workspace }}/**/build/reports/tests"
integration-tests:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, windows-latest ]
gradle: [ 8.4, current, release-candidate ]
java: [ 11, 17, 19 ]
name: '[${{ matrix.os }}] Gradle: ${{ matrix.gradle }}, Java: ${{ matrix.java }}'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: 'adopt'
java-version: ${{ matrix.java }}
- uses: gradle/gradle-build-action@v2
with:
build-root-directory: test-project
gradle-version: ${{ matrix.gradle }}
arguments: formatKotlin lintKotlin
- name: Assert fixes
run: |
cd test-project/build/reports/ktlint
grep 'no-empty-class-body' main-format.txt | grep -q 'EmptyClassBodyClass.kt:3:27'
grep 'op-spacing' test-format.txt | grep -q 'OpSpacing.kt:5:16'
- name: Upload reports
if: ${{ failure() }}
uses: actions/upload-artifact@v3
with:
name: "test-project-reports-${{ matrix.os }}-${{ matrix.gradle }}-${{ matrix.java }}"
path: "${{ github.workspace }}/**/build/reports/ktlint"
provide-agp-version-matrix:
runs-on: ubuntu-latest
outputs:
agp-versions: ${{ steps.build-agp-matrix.outputs.agp-versions }}
steps:
- id: agp-version-finder
uses: usefulness/agp-version-finder-action@v1
- id: build-agp-matrix
run: |
if [[ ${{ github.event_name }} == 'pull_request' ]]; then
echo 'agp-versions=["${{ steps.agp-version-finder.outputs.latest-stable }}"]' >> $GITHUB_OUTPUT
else
echo 'agp-versions=["${{ steps.agp-version-finder.outputs.latest-stable }}", "${{ steps.agp-version-finder.outputs.latest-alpha }}"]' >> $GITHUB_OUTPUT
fi
integration-tests-android:
runs-on: ubuntu-latest
needs:
- provide-agp-version-matrix
strategy:
fail-fast: false
matrix:
gradle: [ current ]
java: [ 17 ]
agp: ${{ fromJSON(needs.provide-agp-version-matrix.outputs.agp-versions) }}
name: '[android] Gradle: ${{ matrix.gradle }}, Java: ${{ matrix.java }}, AGP: ${{ matrix.agp }}'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: 'adopt'
java-version: ${{ matrix.java }}
- uses: gradle/gradle-build-action@v2
with:
build-root-directory: test-project-android
gradle-version: ${{ matrix.gradle }}
arguments: formatKotlin lintKotlin -PagpVersion=${{ matrix.agp }}
- name: Assert fixes
run: |
cd test-project-android/build/reports/ktlint
grep 'no-empty-class-body' main-format.txt | grep -q 'EmptyClassBodyClass.kt:3:27'
grep 'no-empty-class-body' main-format.txt | grep -q 'EmptyClassBodyInJavaSourcesClass.kt:3:40'
grep 'op-spacing' test-format.txt | grep -q 'OpSpacing.kt:5:16'
- name: Upload reports
if: ${{ failure() }}
uses: actions/upload-artifact@v3
with:
name: "test-project-android-reports-${{ matrix.gradle }}-${{ matrix.java }}-${{ matrix.agp }}"
path: "${{ github.workspace }}/**/build/reports/ktlint"