Skip to content

Fix late static binding calls for first class callable #17410

Fix late static binding calls for first class callable

Fix late static binding calls for first class callable #17410

Workflow file for this run

# https://help.github.com/en/categories/automating-your-workflow-with-github-actions
name: "E2E Tests"
on:
pull_request:
paths-ignore:
- 'compiler/**'
- 'apigen/**'
- 'changelog-generator/**'
- 'issue-bot/**'
push:
branches:
- "1.12.x"
paths-ignore:
- 'compiler/**'
- 'apigen/**'
- 'changelog-generator/**'
- 'issue-bot/**'
concurrency:
group: e2e-${{ github.head_ref || github.run_id }} # will be canceled on subsequent pushes in pull requests but not branches
cancel-in-progress: true
jobs:
result-cache-php-parser-e2e:
name: "Result cache PHP-Parser E2E test"
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.1"
extensions: mbstring
ini-values: memory_limit=256M
- name: "Install dependencies"
run: "composer install --no-interaction --no-progress"
- name: "Tests"
run: |
git clone https://github.com/nikic/PHP-Parser.git tests/e2e/PHP-Parser && git -C tests/e2e/PHP-Parser checkout v3.1.5 && composer install --working-dir tests/e2e/PHP-Parser && vendor/bin/phpunit tests/e2e/ResultCacheEndToEndTest.php
result-cache-e2e-tests:
name: "Result cache E2E tests"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- script: |
cd e2e/result-cache-1
echo -n > phpstan-baseline.neon
../../bin/phpstan -vvv
patch -b src/Bar.php < patch-1.patch
cat baseline-1.neon > phpstan-baseline.neon
../../bin/phpstan -vvv
mv src/Bar.php.orig src/Bar.php
echo -n > phpstan-baseline.neon
../../bin/phpstan -vvv
- script: |
cd e2e/result-cache-2
echo -n > phpstan-baseline.neon
../../bin/phpstan -vvv
patch -b src/Bar.php < patch-1.patch
cat baseline-1.neon > phpstan-baseline.neon
../../bin/phpstan -vvv
mv src/Bar.php.orig src/Bar.php
echo -n > phpstan-baseline.neon
../../bin/phpstan -vvv
- script: |
cd e2e/result-cache-3
echo -n > phpstan-baseline.neon
../../bin/phpstan -vvv
patch -b src/Baz.php < patch-1.patch
cat baseline-1.neon > phpstan-baseline.neon
../../bin/phpstan -vvv
mv src/Baz.php.orig src/Baz.php
echo -n > phpstan-baseline.neon
../../bin/phpstan -vvv
- script: |
cd e2e/result-cache-4
echo -n > phpstan-baseline.neon
../../bin/phpstan -vvv
patch -b src/Bar.php < patch-1.patch
cat baseline-1.neon > phpstan-baseline.neon
../../bin/phpstan -vvv
mv src/Bar.php.orig src/Bar.php
echo -n > phpstan-baseline.neon
../../bin/phpstan -vvv
- script: |
cd e2e/result-cache-5
echo -n > phpstan-baseline.neon
../../bin/phpstan -vvv
patch -b src/Baz.php < patch-1.patch
cat baseline-1.neon > phpstan-baseline.neon
../../bin/phpstan -vvv
mv src/Baz.php.orig src/Baz.php
echo -n > phpstan-baseline.neon
../../bin/phpstan -vvv
- script: |
cd e2e/result-cache-6
echo -n > phpstan-baseline.neon
../../bin/phpstan -vvv
patch -b src/Baz.php < patch-1.patch
cat baseline-1.neon > phpstan-baseline.neon
../../bin/phpstan -vvv
mv src/Baz.php.orig src/Baz.php
echo -n > phpstan-baseline.neon
../../bin/phpstan -vvv
- script: |
cd e2e/result-cache-7
echo -n > phpstan-baseline.neon
../../bin/phpstan -vvv
patch -b src/Bar.php < patch-1.patch
cat baseline-1.neon > phpstan-baseline.neon
../../bin/phpstan -vvv
mv src/Bar.php.orig src/Bar.php
echo -n > phpstan-baseline.neon
../../bin/phpstan -vvv
- script: |
cd e2e/bug10449
../../bin/phpstan analyze
git apply patch.diff
rm phpstan-baseline.neon
mv after-phpstan-baseline.neon phpstan-baseline.neon
../../bin/phpstan analyze -vvv
- script: |
cd e2e/bug10449b
../../bin/phpstan analyze
git apply patch.diff
rm phpstan-baseline.neon
mv after-phpstan-baseline.neon phpstan-baseline.neon
../../bin/phpstan analyze -vvv
- script: |
cd e2e/bug-9622
echo -n > phpstan-baseline.neon
../../bin/phpstan -vvv
patch -b src/Foo.php < patch-1.patch
cat baseline-1.neon > phpstan-baseline.neon
../../bin/phpstan -vvv
mv src/Foo.php.orig src/Foo.php
echo -n > phpstan-baseline.neon
../../bin/phpstan -vvv
- script: |
cd e2e/bug-9622-trait
echo -n > phpstan-baseline.neon
../../bin/phpstan -vvv
patch -b src/Foo.php < patch-1.patch
cat baseline-1.neon > phpstan-baseline.neon
../../bin/phpstan -vvv
mv src/Foo.php.orig src/Foo.php
echo -n > phpstan-baseline.neon
../../bin/phpstan -vvv
- script: |
cd e2e/env-parameter
export PHPSTAN_SCOPE_CLASS=MyTestScope
ACTUAL=$(../../bin/phpstan dump-parameters -c phpstan.neon --json -l 9 | jq --raw-output '.scopeClass')
[[ "$ACTUAL" == "MyTestScope" ]];
- script: |
cd e2e/result-cache-8
composer install
../../bin/phpstan
echo -en '\n' >> build/CustomRule.php
OUTPUT=$(../../bin/phpstan 2>&1)
grep 'Result cache might not behave correctly' <<< "$OUTPUT"
grep 'ResultCache8E2E\\CustomRule' <<< "$OUTPUT"
- script: |
cd e2e/env-int-key
env 1=1 ../../bin/phpstan analyse test.php
- script: |
cd e2e/trait-caching
../../bin/phpstan analyze --no-progress --level 8 --error-format raw data/
../../bin/phpstan analyze --no-progress --level 8 --error-format raw data/
- script: |
cd e2e/trait-caching
../../bin/phpstan analyze --no-progress --level 8 --error-format raw data/
patch -b data/TraitOne.php < TraitOne.patch
OUTPUT=$(../../bin/phpstan analyze --no-progress --level 8 --error-format raw data/ || true)
echo "$OUTPUT"
../bashunit -a line_count 1 "$OUTPUT"
../bashunit -a contains 'Method TraitsCachingIssue\TestClassUsingTrait::doBar() should return stdClass but returns Exception.' "$OUTPUT"
- script: |
cd e2e/trait-caching
../../bin/phpstan analyze --no-progress --level 8 --error-format raw data/
patch -b data/TraitTwo.php < TraitTwo.patch
OUTPUT=$(../../bin/phpstan analyze --no-progress --level 8 --error-format raw data/ || true)
echo "$OUTPUT"
../bashunit -a line_count 1 "$OUTPUT"
../bashunit -a contains 'Method class@anonymous/TestClassUsingTrait.php:20::doBar() should return stdClass but returns Exception.' "$OUTPUT"
- script: |
cd e2e/trait-caching
../../bin/phpstan analyze --no-progress --level 8 --error-format raw data/
patch -b data/TraitOne.php < TraitOne.patch
patch -b data/TraitTwo.php < TraitTwo.patch
OUTPUT=$(../../bin/phpstan analyze --no-progress --level 8 --error-format raw data/ || true)
echo "$OUTPUT"
../bashunit -a line_count 2 "$OUTPUT"
../bashunit -a contains 'Method TraitsCachingIssue\TestClassUsingTrait::doBar() should return stdClass but returns Exception.' "$OUTPUT"
../bashunit -a contains 'Method class@anonymous/TestClassUsingTrait.php:20::doBar() should return stdClass but returns Exception.' "$OUTPUT"
- script: |
cd e2e/bad-exclude-paths
OUTPUT=$(../../bin/phpstan analyse -c ignore.neon 2>&1 || true)
echo "$OUTPUT"
../bashunit -a contains 'Invalid entry in ignoreErrors' "$OUTPUT"
../bashunit -a contains 'tests is neither a directory, nor a file path, nor a fnmatch pattern.' "$OUTPUT"
- script: |
cd e2e/bad-exclude-paths
OUTPUT=$(../../bin/phpstan analyse -c phpneon.php 2>&1 || true)
echo "$OUTPUT"
../bashunit -a contains 'Invalid entry in ignoreErrors' "$OUTPUT"
../bashunit -a contains 'src/test.php is neither a directory, nor a file path, nor a fnmatch pattern.' "$OUTPUT"
- script: |
cd e2e/bad-exclude-paths
OUTPUT=$(../../bin/phpstan analyse -c excludePaths.neon 2>&1 || true)
echo "$OUTPUT"
../bashunit -a contains 'Invalid entry in excludePaths' "$OUTPUT"
../bashunit -a contains 'tests is neither a directory, nor a file path, nor a fnmatch pattern.' "$OUTPUT"
- script: |
cd e2e/bad-exclude-paths
OUTPUT=$(../../bin/phpstan analyse -c phpneon2.php 2>&1 || true)
echo "$OUTPUT"
../bashunit -a contains 'Invalid entry in excludePaths' "$OUTPUT"
../bashunit -a contains 'src/test.php is neither a directory, nor a file path, nor a fnmatch pattern.' "$OUTPUT"
- script: |
cd e2e/bad-exclude-paths
OUTPUT=$(../../bin/phpstan analyse -c ignoreNonexistentExcludePath.neon)
echo "$OUTPUT"
- script: |
cd e2e/bad-exclude-paths
cp -r tmp-node-modules node_modules
OUTPUT=$(../../bin/phpstan analyse -c ignoreNonexistentExcludePath.neon)
echo "$OUTPUT"
- script: |
cd e2e/bad-exclude-paths
OUTPUT=$(../../bin/phpstan analyse -c ignoreReportUnmatchedFalse.neon)
echo "$OUTPUT"
steps:
- name: "Checkout"
uses: actions/checkout@v4
- name: "Install PHP"
uses: "shivammathur/setup-php@v2"
with:
coverage: "none"
php-version: "8.1"
extensions: mbstring
ini-values: memory_limit=256M
- name: "Install dependencies"
run: "composer install --no-interaction --no-progress"
- name: "Patch PHPStan"
run: "patch src/Analyser/Error.php < e2e/PHPStanErrorPatch.patch"
- name: "Install bashunit"
run: "curl -s https://bashunit.typeddevs.com/install.sh | bash -s e2e/ 0.13.0"
- name: "Test"
run: "${{ matrix.script }}"
e2e-tests:
name: "E2E tests"
runs-on: "ubuntu-latest"
timeout-minutes: 60
strategy:
matrix:
include:
- script: "bin/phpstan analyse -l 8 -a tests/e2e/data/timecop.php -c tests/e2e/data/empty.neon tests/e2e/data/timecop.php"
tools: "pecl"
extensions: "timecop-beta"
- script: "bin/phpstan analyse -l 8 -a tests/e2e/data/soap.php -c tests/e2e/data/empty.neon tests/e2e/data/soap.php"
extensions: "soap"
- script: "bin/phpstan analyse -l 8 -a tests/e2e/data/soap.php -c tests/e2e/data/empty.neon tests/e2e/data/soap.php"
extensions: ""
- script: "bin/phpstan analyse -l 8 tests/e2e/anon-class/Granularity.php"
extensions: ""
- script: "bin/phpstan analyse -l 8 e2e/phpstan-phpunit-190/test.php -c e2e/phpstan-phpunit-190/test.neon"
extensions: ""
- script: "bin/phpstan analyse e2e/only-files-not-analysed-trait/src -c e2e/only-files-not-analysed-trait/ignore.neon"
extensions: ""
- script: "bin/phpstan analyse e2e/only-files-not-analysed-trait/src/Foo.php e2e/only-files-not-analysed-trait/src/BarTrait.php -c e2e/only-files-not-analysed-trait/no-ignore.neon"
extensions: ""
- script: |
cd e2e/baseline-uninit-prop-trait
../../bin/phpstan analyse --debug --configuration test-no-baseline.neon --generate-baseline test-baseline.neon
../../bin/phpstan analyse --debug --configuration test.neon
- script: |
cd e2e/baseline-uninit-prop-trait
../../bin/phpstan analyse --configuration test-no-baseline.neon --generate-baseline test-baseline.neon
../../bin/phpstan analyse --configuration test.neon
- script: |
cd e2e/discussion-11362
composer install
../../bin/phpstan
steps:
- name: "Checkout"
uses: actions/checkout@v4
- name: "Install PHP"
uses: "shivammathur/setup-php@v2"
with:
coverage: "none"
php-version: "8.1"
tools: ${{ matrix.tools }}
extensions: ${{ matrix.extensions }}
- name: "Install dependencies"
run: "composer install --no-interaction --no-progress"
- name: "Test"
run: ${{ matrix.script }}