Workflow file for this run
This file contains hidden or 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: Test | ||
|
Check failure on line 1 in .github/workflows/test.yml
|
||
| on: | ||
| workflow_dispatch: | ||
| pull_request: | ||
| branches: | ||
| - main | ||
| push: | ||
| branches: | ||
| - main | ||
| tags: | ||
| - '**' | ||
| concurrency: | ||
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref_name }} | ||
| cancel-in-progress: true | ||
| permissions: {} | ||
| jobs: | ||
| positive: | ||
| if: matrix.case == 'aaaaaa' | ||
| runs-on: ${{ matrix.runs-on }} | ||
| strategy: | ||
| matrix: | ||
| runs-on: | ||
| - ubuntu-latest | ||
| composer-json: | ||
| - composer.json | ||
| - not-named-composer.json | ||
| - sub/dir/composer.json | ||
| - ../not/under/workdpace/composer.json | ||
| mode: | ||
| - minor-only | ||
| - full | ||
| source: | ||
| - auto | ||
| - php.net | ||
| - offline | ||
| case: | ||
| - caret-7-3 | ||
| - exactly-7-3-5 | ||
| - complex | ||
| verify-attestation: | ||
| - false | ||
| include: | ||
| - runs-on: ubuntu-24.04-arm | ||
| composer-json: sub/dir/composer.json | ||
| mode: full | ||
| source: offline | ||
| case: complex | ||
| verify-attestation: true | ||
| - runs-on: ubuntu-latest | ||
| composer-json: sub/dir/composer.json | ||
| mode: full | ||
| source: offline | ||
| case: complex | ||
| verify-attestation: true | ||
| - runs-on: macos-latest | ||
| composer-json: sub/dir/composer.json | ||
| mode: full | ||
| source: offline | ||
| case: complex | ||
| verify-attestation: true | ||
| - runs-on: macos-15-intel | ||
| composer-json: sub/dir/composer.json | ||
| mode: full | ||
| source: offline | ||
| case: complex | ||
| verify-attestation: true | ||
| steps: | ||
| - uses: actions/checkout@v5 | ||
| with: | ||
| path: local-action | ||
| - name: Create fake composer.json | ||
| run: | | ||
| mkdir -p $(dirname ${{ matrix.composer-json }}) | ||
| cp local-action/testdata/${{ matrix.case }}.composer.json ${{ matrix.composer-json }} | ||
| - uses: ./local-action | ||
| id: subject | ||
| with: | ||
| composer-json: ${{ matrix.composer-json }} | ||
| mode: ${{ matrix.mode }} | ||
| source: ${{ matrix.source }} | ||
| verify-attestation: ${{ matrix.verify-attestation }} | ||
| - run: echo '${{ steps.subject.outputs.matrix }}' > actual.json | ||
| - run: diff <(jq --sort-keys . actual.json) <(jq --sort-keys . local-action/testdata/${{ matrix.case }}.${{ matrix.mode }}.golden.json) | ||
| outputs: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v5 | ||
| with: | ||
| path: local-action | ||
| - uses: ./local-action | ||
| id: subject | ||
| with: | ||
| composer-json: local-action/testdata/complex.composer.json | ||
| mode: minor-only | ||
| source: offline | ||
| verify-attestation: false | ||
| - name: Print outputs | ||
| run: | | ||
| echo "Constraint: ${{ steps.subject.outputs.constraint }}" | ||
| echo "Versions: ${{ toJSON(steps.subject.outputs.versions) }}" | ||
| echo "Lowest: ${{ steps.subject.outputs.lowest }}" | ||
| echo "Highest: ${{ steps.subject.outputs.highest }}" | ||
| - name: Assert constraint output | ||
| run: exit 1 | ||
| if: steps.subject.outputs.constraint != '^7.3.32 || ^8.1 <=8.1.9' | ||
| - name: Assert versions output | ||
| run: exit 1 | ||
| if: steps.subject.outputs.versions != fromJSON('["7.3","7.4","8.1"]') | ||
| - name: Assert lowest output | ||
| run: exit 1 | ||
| if: steps.subject.outputs.lowest != '7.3' | ||
| - name: Assert highest output | ||
| run: exit 1 | ||
| if: steps.subject.outputs.highest != '8.1' | ||
| negative: | ||
| if: matrix.case == 'aaaaaa' | ||
| runs-on: ubuntu-latest | ||
| strategy: | ||
| matrix: | ||
| mode: | ||
| - minor-only | ||
| - full | ||
| source: | ||
| - auto | ||
| - php.net | ||
| - offline | ||
| case: | ||
| - empty-json | ||
| - invalid-constraint | ||
| - invalid-json | ||
| - match-none | ||
| - missing-php | ||
| - missing-require | ||
| steps: | ||
| - uses: actions/checkout@v5 | ||
| with: | ||
| path: local-action | ||
| - name: Create fake composer.json | ||
| run: cp local-action/testdata/${{ matrix.case }}.composer.json composer.json | ||
| - uses: ./local-action | ||
| id: subject | ||
| with: | ||
| mode: ${{ matrix.mode }} | ||
| source: ${{ matrix.source }} | ||
| continue-on-error: true | ||
| - name: Assert action failed | ||
| if: steps.subject.outcome != 'failure' | ||
| run: exit 1 | ||
| missing: | ||
| runs-on: ubuntu-latest | ||
| strategy: | ||
| matrix: | ||
| mode: | ||
| - minor-only | ||
| - full | ||
| source: | ||
| - auto | ||
| - php.net | ||
| - offline | ||
| steps: | ||
| - uses: actions/checkout@v5 | ||
| with: | ||
| path: local-action | ||
| - name: Ensure no composer.json | ||
| run: rm -f composer.json | ||
| - uses: ./local-action | ||
| id: subject | ||
| with: | ||
| mode: ${{ matrix.mode }} | ||
| source: ${{ matrix.source }} | ||
| continue-on-error: true | ||
| - name: Assert action failed | ||
| if: steps.subject.outcome != 'failure' | ||
| run: exit 1 | ||
| wait-for-all-tests: | ||
| needs: | ||
| - positive | ||
| - outputs | ||
| - negative | ||
| - missing | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - run: echo "All tests passed!" | ||