name: Test wrapper validation on: workflow_call: inputs: runner-os: type: string default: '["ubuntu-latest"]' skip-dist: type: boolean default: false env: SKIP_DIST: ${{ inputs.skip-dist }} jobs: wrapper-validation-setup-gradle: 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 env: ALLOWED_GRADLE_WRAPPER_CHECKSUMS: '' continue-on-error: true - name: Check failure shell: bash run: | if [ "${{ steps.setup-gradle.outcome}}" != "failure" ] ; then echo "Expected validation to fail, but it didn't" exit 1 fi wrapper-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 min-wrapper-count: 10 - 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 == '' }} shell: bash run: | if [ "$FAILED_WRAPPERS_MATCHES" != "true" ] ; then echo "'outputs.failed-wrapper' has unexpected content: $FAILED_WRAPPERS" exit 1 fi wrapper-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' }} shell: bash 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 wrapper-validation-minimum-wrapper-count: 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 min-wrapper-count: 11 # 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' }} shell: bash run: | if [ "$VALIDATION_FAILED" != "true" ] ; then echo "Expected validation to fail, but it didn't" exit 1 fi wrapper-validation-zero-wrappers: runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v4 # Checkout the repository with no wrappers with: sparse-checkout: | .github/actions dist wrapper-validation - 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' }} shell: bash run: | if [ "$VALIDATION_FAILED" != "true" ] ; then echo "Expected validation to fail, but it didn't" exit 1 fi