name: Test wrapper validation on: workflow_call: inputs: runner-os: type: string default: '["ubuntu-latest", "windows-latest", "macos-latest"]' skip-dist: type: boolean default: false env: SKIP_DIST: ${{ inputs.skip-dist }} jobs: test-setup-gradle-validation: strategy: fail-fast: false matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@v4 - name: Initialize integ-test uses: ./.github/actions/init-integ-test - name: Run wrapper-validation-action id: setup-gradle uses: ./setup-gradle with: validate-wrappers: true continue-on-error: true - name: Check failure run: | if [ "${{ steps.setup-gradle.outcome}}" != "failure" ] ; then echo "Expected validation to fail, but it didn't" exit 1 fi test-validation-success: runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v4 - name: Initialize integ-test uses: ./.github/actions/init-integ-test - name: Run wrapper-validation-action id: action-test uses: ./wrapper-validation with: # to allow the invalid wrapper jar present in test data allow-checksums: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 - name: Check outcome env: # Evaluate workflow expressions here as env variable values instead of inside shell script # below to not accidentally inject code into shell script or break its syntax FAILED_WRAPPERS: ${{ steps.action-test.outputs.failed-wrapper }} FAILED_WRAPPERS_MATCHES: ${{ steps.action-test.outputs.failed-wrapper == '' }} run: | if [ "$FAILED_WRAPPERS_MATCHES" != "true" ] ; then echo "'outputs.failed-wrapper' has unexpected content: $FAILED_WRAPPERS" exit 1 fi test-validation-error: runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v4 - name: Initialize integ-test uses: ./.github/actions/init-integ-test - name: Run wrapper-validation-action id: action-test uses: ./wrapper-validation # Expected to fail; validated below continue-on-error: true - name: Check outcome env: # Evaluate workflow expressions here as env variable values instead of inside shell script # below to not accidentally inject code into shell script or break its syntax VALIDATION_FAILED: ${{ steps.action-test.outcome == 'failure' }} FAILED_WRAPPERS: ${{ steps.action-test.outputs.failed-wrapper }} FAILED_WRAPPERS_MATCHES: ${{ steps.action-test.outputs.failed-wrapper == 'sources/test/jest/wrapper-validation/data/invalid/gradle-wrapper.jar|sources/test/jest/wrapper-validation/data/invalid/gradlе-wrapper.jar' }} run: | if [ "$VALIDATION_FAILED" != "true" ] ; then echo "Expected validation to fail, but it didn't" exit 1 fi if [ "$FAILED_WRAPPERS_MATCHES" != "true" ] ; then echo "'outputs.failed-wrapper' has unexpected content: $FAILED_WRAPPERS" exit 1 fi