Skip to content

Don't report already assigned errors when setting or unsetting an offset on array access objects set as class properties. #23958

Don't report already assigned errors when setting or unsetting an offset on array access objects set as class properties.

Don't report already assigned errors when setting or unsetting an offset on array access objects set as class properties. #23958

Workflow file for this run

# https://help.github.com/en/categories/automating-your-workflow-with-github-actions
name: "Tests"
on:
pull_request:
paths-ignore:
- 'compiler/**'
- 'apigen/**'
- 'changelog-generator/**'
- 'issue-bot/**'
push:
branches:
- "2.1.x"
paths-ignore:
- 'compiler/**'
- 'apigen/**'
- 'changelog-generator/**'
- 'issue-bot/**'
concurrency:
group: tests-${{ github.head_ref || github.run_id }} # will be canceled on subsequent pushes in pull requests but not branches
cancel-in-progress: true
jobs:
tests:
name: "Tests"
runs-on: ${{ matrix.operating-system }}
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
php-version:
- "8.2"
- "8.3"
- "8.4"
- "8.5"
operating-system: [ ubuntu-latest, windows-latest ]
steps:
- name: "Checkout"
uses: actions/checkout@v4
- name: "Install PHP"
uses: "shivammathur/setup-php@v2"
with:
coverage: "none"
php-version: "${{ matrix.php-version }}"
tools: pecl
extensions: ds,mbstring
ini-file: development
ini-values: memory_limit=-1
- uses: "ramsey/composer-install@v3"
- name: "Check PHP configuration"
run: "vendor/bin/phpunit --check-php-configuration"
- name: "Tests"
run: "make tests"
tests-integration:
name: "Integration tests"
runs-on: ${{ matrix.operating-system }}
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
operating-system: [ ubuntu-latest, windows-latest ]
steps:
- name: "Checkout"
uses: actions/checkout@v4
- name: "Install PHP"
uses: "shivammathur/setup-php@v2"
with:
coverage: "none"
php-version: "8.2"
tools: pecl
extensions: ds,mbstring
ini-file: development
ini-values: memory_limit=-1
- uses: "ramsey/composer-install@v3"
- name: "Check PHP configuration"
run: "vendor/bin/phpunit --check-php-configuration"
- name: "Tests"
run: "make tests-integration"
tests-levels-matrix:
name: "Determine levels tests matrix"
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: "Checkout"
uses: actions/checkout@v4
- name: "Install PHP"
uses: "shivammathur/setup-php@v2"
with:
coverage: "none"
php-version: "8.3"
tools: pecl
extensions: ds,mbstring
ini-file: development
ini-values: memory_limit=1G
- uses: "ramsey/composer-install@v3"
- id: set-matrix
run: echo "matrix=$(php .github/workflows/tests-levels-matrix.php)" >> $GITHUB_OUTPUT
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
tests-levels:
needs: tests-levels-matrix
name: "Levels tests"
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
script: "${{fromJson(needs.tests-levels-matrix.outputs.matrix)}}"
steps:
- name: "Checkout"
uses: actions/checkout@v4
- name: "Install PHP"
uses: "shivammathur/setup-php@v2"
with:
coverage: "none"
php-version: "8.3"
tools: pecl
extensions: ds,mbstring
ini-file: development
ini-values: memory_limit=-1
- uses: "ramsey/composer-install@v3"
- name: "Check PHP configuration"
run: "vendor/bin/phpunit --check-php-configuration"
- name: "Tests"
run: "${{ matrix.script }}"
tests-with-old-phpunit:
name: "Tests with old PHPUnit"
runs-on: ${{ matrix.operating-system }}
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
php-version:
- "7.4"
- "8.0"
- "8.1"
operating-system: [ ubuntu-latest, windows-latest ]
steps:
- name: "Checkout"
uses: actions/checkout@v4
- name: "Install PHP"
uses: "shivammathur/setup-php@v2"
with:
coverage: "none"
php-version: "${{ matrix.php-version }}"
tools: pecl
extensions: ds,mbstring
ini-file: development
ini-values: memory_limit=2G
- name: "Downgrade PHPUnit"
shell: bash
run: "composer require --dev phpunit/phpunit:^9.6 sebastian/diff:^4.0 --update-with-dependencies --ignore-platform-reqs"
- uses: "ramsey/composer-install@v3"
- name: "Downgrade PHPUnit with Paratest"
shell: bash
run: "composer require --dev phpunit/phpunit:^9.6 brianium/paratest:^6.5 symfony/console:^5.4 symfony/process:^5.4 --update-with-dependencies --ignore-platform-reqs --working-dir=tests"
- uses: ./.github/actions/downgrade-code
with:
php-version: "${{ matrix.php-version }}"
- name: "Tests"
run: "make tests"
mutation-testing:
name: "Mutation Testing"
runs-on: "ubuntu-latest"
needs: ["tests"]
if: github.event_name == 'pull_request'
strategy:
fail-fast: false
matrix:
php-version:
- "8.2"
- "8.3"
- "8.4"
operating-system: [ubuntu-latest]
steps:
- name: "Checkout"
uses: actions/checkout@v5
- name: "Checkout build-infection"
uses: actions/checkout@v5
with:
repository: "phpstan/build-infection"
path: "build-infection"
ref: "1.x"
- uses: ./build-infection/.github/actions/setup-php
with:
php-version: "${{ matrix.php-version }}"
extensions: ds,mbstring
- uses: "ramsey/composer-install@v3"
- uses: "ramsey/composer-install@v3"
with:
working-directory: "tests/"
- uses: "ramsey/composer-install@v3"
with:
working-directory: "build-infection/"
- name: "Configure infection"
run: |
php build-infection/bin/infection-config.php \
--source-directory='build/PHPStan/Build' \
--timeout=500 \
> infection.json5
cat infection.json5 | jq
- name: "Determine default branch"
id: default-branch
run: |
echo "name=$(git remote show origin | sed -n '/HEAD branch/s/.*: //p')" >> $GITHUB_OUTPUT
- name: "Restore result cache"
uses: actions/cache/restore@v4
with:
path: ./tmp
key: "result-cache-v1-${{ matrix.php-version }}-${{ github.run_id }}"
restore-keys: |
result-cache-v1-${{ matrix.php-version }}-
# see https://infection.github.io/guide/command-line-options.html#coverage
- name: "Create coverage in parallel"
run: |
php -d pcov.enabled=1 tests/vendor/bin/paratest \
--passthru-php="'-d' 'pcov.enabled=1'" \
--coverage-xml=tmp/coverage/coverage-xml --log-junit=tmp/coverage/junit.xml
- name: "Run infection"
run: |
git fetch --depth=1 origin ${{ steps.default-branch.outputs.name }}
infection \
--git-diff-base=origin/${{ steps.default-branch.outputs.name }} \
--git-diff-lines \
--coverage=tmp/coverage \
--skip-initial-tests \
--ignore-msi-with-no-mutations \
--min-msi=100 \
--min-covered-msi=100 \
--log-verbosity=all \
--debug \
--logger-text=php://stdout
- name: "Save result cache"
uses: actions/cache/save@v4
if: ${{ !cancelled() }}
with:
path: ./tmp
key: "result-cache-v1-${{ matrix.php-version }}-${{ github.run_id }}"