minor #40311 Speedup psalm (nicolas-grekas)

This PR was merged into the 4.4 branch.

Discussion
----------

Speedup psalm

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

My try at #40310

Commits
-------

3fb74abe62 Speedup psalm
This commit is contained in:
Nicolas Grekas 2021-02-26 00:44:25 +01:00
commit e141afb60b
5 changed files with 187 additions and 231 deletions

View File

@ -1,47 +1,50 @@
name: Intl data tests name: Intl data tests
on: on:
push: push:
paths: paths:
- 'src/Symfony/Component/Intl/Resources/data/**' - 'src/Symfony/Component/Intl/Resources/data/**'
pull_request: pull_request:
paths: paths:
- 'src/Symfony/Component/Intl/Resources/data/**' - 'src/Symfony/Component/Intl/Resources/data/**'
defaults:
run:
shell: bash
jobs: jobs:
tests:
name: Tests (intl-data)
runs-on: ubuntu-latest
tests: steps:
name: Tests (intl-data) - name: Checkout
runs-on: ubuntu-latest uses: actions/checkout@v2
steps: - name: Define the ICU version
- name: Checkout run: |
uses: actions/checkout@v2 SYMFONY_ICU_VERSION=$(php -r 'require "src/Symfony/Component/Intl/Intl.php"; echo Symfony\Component\Intl\Intl::getIcuStubVersion();')
echo "SYMFONY_ICU_VERSION=$SYMFONY_ICU_VERSION" >> $GITHUB_ENV
- name: Define the ICU version - name: Setup PHP
run: | uses: shivammathur/setup-php@v2
SYMFONY_ICU_VERSION=$(php -r 'require "src/Symfony/Component/Intl/Intl.php"; echo Symfony\Component\Intl\Intl::getIcuStubVersion();') with:
echo "SYMFONY_ICU_VERSION=$SYMFONY_ICU_VERSION" >> $GITHUB_ENV coverage: "none"
extensions: "zip,intl-${{env.SYMFONY_ICU_VERSION}}"
ini-values: "memory_limit=-1"
php-version: "7.4"
- name: Setup PHP - name: Install dependencies
uses: shivammathur/setup-php@v2 run: |
with: echo "::group::composer update"
coverage: "none" composer update --no-progress --no-suggest --ansi
extensions: "zip,intl-${{env.SYMFONY_ICU_VERSION}}" echo "::endgroup::"
ini-values: "memory_limit=-1" echo "::group::install phpunit"
php-version: "7.4" ./phpunit install
echo "::endgroup::"
- name: Install dependencies - name: Report the ICU version
run: | run: icu-config --version && php -i | grep 'ICU version'
echo "::group::composer update"
composer update --no-progress --no-suggest --ansi
echo "::endgroup::"
echo "::group::install phpunit"
./phpunit install
echo "::endgroup::"
- name: Report the ICU version - name: Run intl-data tests
run: icu-config --version && php -i | grep 'ICU version' run: ./phpunit --group intl-data -v
- name: Run intl-data tests
run: ./phpunit --group intl-data -v

View File

@ -1,28 +1,31 @@
name: PhpUnitBridge name: PhpUnitBridge
on: on:
push: push:
paths: paths:
- 'src/Symfony/Bridge/PhpUnit/**' - 'src/Symfony/Bridge/PhpUnit/**'
pull_request: pull_request:
paths: paths:
- 'src/Symfony/Bridge/PhpUnit/**' - 'src/Symfony/Bridge/PhpUnit/**'
defaults:
run:
shell: bash
jobs: jobs:
lint:
name: Lint
runs-on: ubuntu-latest
lint: steps:
name: Lint - name: Checkout
runs-on: ubuntu-latest uses: actions/checkout@v2
steps: - name: Setup PHP
- name: Checkout uses: shivammathur/setup-php@v2
uses: actions/checkout@v2 with:
coverage: "none"
php-version: "5.5"
- name: Setup PHP - name: Lint
uses: shivammathur/setup-php@v2 run: find ./src/Symfony/Bridge/PhpUnit -name '*.php' | grep -v -e /Tests/ -e ForV6 -e ForV7 -e ForV8 -e ForV9 -e ConstraintLogicTrait | parallel -j 4 php -l {}
with:
coverage: "none"
php-version: "5.5"
- name: Lint
run: find ./src/Symfony/Bridge/PhpUnit -name '*.php' | grep -v -e /Tests/ -e ForV6 -e ForV7 -e ForV8 -e ForV9 -e ConstraintLogicTrait | parallel -j 4 php -l {}

View File

@ -3,6 +3,10 @@ name: Static analysis
on: on:
pull_request: ~ pull_request: ~
defaults:
run:
shell: bash
jobs: jobs:
psalm: psalm:
name: Psalm name: Psalm
@ -17,81 +21,38 @@ jobs:
ini-values: "memory_limit=-1" ini-values: "memory_limit=-1"
coverage: none coverage: none
- name: Checkout PR - name: Checkout target branch
uses: actions/checkout@v2
with:
path: pr
- name: Checkout base
uses: actions/checkout@v2 uses: actions/checkout@v2
with: with:
ref: ${{ github.base_ref }} ref: ${{ github.base_ref }}
path: base
- name: Checkout PR
uses: actions/checkout@v2
- name: Configure composer - name: Configure composer
run: | run: |
cd base COMPOSER_HOME="$(composer config home)"
COMPOSER_HOME="$(composer config home)" ([ -d "$COMPOSER_HOME" ] || mkdir "$COMPOSER_HOME") && cp .github/composer-config.json "$COMPOSER_HOME/config.json"
([ -d "$COMPOSER_HOME" ] || mkdir "$COMPOSER_HOME") && cp .github/composer-config.json "$COMPOSER_HOME/config.json" echo "COMPOSER_ROOT_VERSION=$(grep -m1 SYMFONY_VERSION .travis.yml | grep -o '[0-9.x]*').x-dev" >> $GITHUB_ENV
echo "COMPOSER_ROOT_VERSION=$(grep -m1 SYMFONY_VERSION .travis.yml | grep -o '[0-9.x]*').x-dev" >> $GITHUB_ENV
- name: Determine composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache composer dependencies
uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: composer-${{ github.base_ref }}
restore-keys: composer-
- name: Install Psalm - name: Install Psalm
run: | run: |
composer require psalm/phar echo "::group::modify composer.json"
cp ./vendor/bin/psalm.phar base/psalm.phar composer remove --no-update --no-interaction symfony/phpunit-bridge
cp ./vendor/bin/psalm.phar pr/psalm.phar composer require --no-update psalm/phar phpunit/phpunit php-http/discovery psr/event-dispatcher
echo "::endgroup::"
- name: Install dependencies for base echo "::group::composer update"
run: | composer update --no-progress --ansi
cd base git checkout composer.json
echo "::group::modify composer.json" echo "::endgroup::"
composer remove symfony/phpunit-bridge --no-interaction --no-update ./vendor/bin/psalm.phar --version
composer require --no-update phpunit/phpunit php-http/discovery psr/event-dispatcher
echo "::endgroup::"
echo "::group::composer update"
composer update --no-progress --ansi
echo "::endgroup::"
- name: Generate Psalm baseline - name: Generate Psalm baseline
run: | run: |
cd base git checkout -m ${{ github.base_ref }}
./psalm.phar --set-baseline=.github/psalm/psalm.baseline.xml --no-progress ./vendor/bin/psalm.phar --set-baseline=.github/psalm/psalm.baseline.xml --no-progress
git checkout -m FETCH_HEAD
- name: Copy baseline
run: |
cp base/.github/psalm/psalm.baseline.xml pr/.github/psalm/psalm.baseline.xml
- name: Install dependencies for PR
run: |
cd pr
echo "::group::modify composer.json"
composer remove symfony/phpunit-bridge --no-interaction --no-update
composer require --no-update phpunit/phpunit php-http/discovery psr/event-dispatcher
echo "::endgroup::"
echo "::group::composer update"
composer update --no-progress --ansi
echo "::endgroup::"
- name: Cache Psalm
uses: actions/cache@v2
with:
path: pr/.github/psalm/cache/
key: psalm-${{ github.base_ref }}
restore-keys: psalm-
- name: Psalm - name: Psalm
run: | run: |
cd pr ./vendor/bin/psalm.phar --output-format=github --no-progress
./psalm.phar --version
./psalm.phar --output-format=github --no-progress

View File

@ -1,127 +1,116 @@
name: Tests name: Tests
on: on:
push: push:
pull_request: pull_request:
jobs: jobs:
integration: integration:
name: Integration name: Integration
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
php: ['7.1', '7.4'] php: ['7.1', '7.4']
services: services:
ldap: ldap:
image: bitnami/openldap image: bitnami/openldap
ports: ports:
- 3389:3389 - 3389:3389
env: env:
LDAP_ADMIN_USERNAME: admin LDAP_ADMIN_USERNAME: admin
LDAP_ADMIN_PASSWORD: symfony LDAP_ADMIN_PASSWORD: symfony
LDAP_ROOT: dc=symfony,dc=com LDAP_ROOT: dc=symfony,dc=com
LDAP_PORT_NUMBER: 3389 LDAP_PORT_NUMBER: 3389
LDAP_USERS: a LDAP_USERS: a
LDAP_PASSWORDS: a LDAP_PASSWORDS: a
redis: redis:
image: redis:6.0.0 image: redis:6.0.0
ports: ports:
- 6379:6379 - 6379:6379
redis-cluster: redis-cluster:
image: grokzen/redis-cluster:5.0.4 image: grokzen/redis-cluster:5.0.4
ports: ports:
- 7000:7000 - 7000:7000
- 7001:7001 - 7001:7001
- 7002:7002 - 7002:7002
- 7003:7003 - 7003:7003
- 7004:7004 - 7004:7004
- 7005:7005 - 7005:7005
- 7006:7006 - 7006:7006
env: env:
STANDALONE: 1 STANDALONE: 1
redis-sentinel: redis-sentinel:
image: bitnami/redis-sentinel:6.0 image: bitnami/redis-sentinel:6.0
ports: ports:
- 26379:26379 - 26379:26379
env: env:
REDIS_MASTER_HOST: redis REDIS_MASTER_HOST: redis
REDIS_MASTER_SET: redis_sentinel REDIS_MASTER_SET: redis_sentinel
REDIS_SENTINEL_QUORUM: 1 REDIS_SENTINEL_QUORUM: 1
memcached: memcached:
image: memcached:1.6.5 image: memcached:1.6.5
ports: ports:
- 11211:11211 - 11211:11211
rabbitmq: rabbitmq:
image: rabbitmq:3.8.3 image: rabbitmq:3.8.3
ports: ports:
- 5672:5672 - 5672:5672
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2
with: with:
coverage: "none" coverage: "none"
extensions: "memcached,redis,xsl,ldap" extensions: "memcached,redis,xsl,ldap"
ini-values: "memory_limit=-1" ini-values: "memory_limit=-1"
php-version: "${{ matrix.php }}" php-version: "${{ matrix.php }}"
- name: Load fixtures - name: Load fixtures
uses: docker://bitnami/openldap uses: docker://bitnami/openldap
with: with:
entrypoint: /bin/bash entrypoint: /bin/bash
args: -c "(/opt/bitnami/openldap/bin/ldapwhoami -h localhost:3389 -D cn=admin,dc=symfony,dc=com -w symfony||sleep 5) && /opt/bitnami/openldap/bin/ldapadd -h ldap:3389 -D cn=admin,dc=symfony,dc=com -w symfony -f src/Symfony/Component/Ldap/Tests/Fixtures/data/fixtures.ldif && /opt/bitnami/openldap/bin/ldapdelete -h ldap:3389 -D cn=admin,dc=symfony,dc=com -w symfony cn=a,ou=users,dc=symfony,dc=com" args: -c "(/opt/bitnami/openldap/bin/ldapwhoami -h localhost:3389 -D cn=admin,dc=symfony,dc=com -w symfony||sleep 5) && /opt/bitnami/openldap/bin/ldapadd -h ldap:3389 -D cn=admin,dc=symfony,dc=com -w symfony -f src/Symfony/Component/Ldap/Tests/Fixtures/data/fixtures.ldif && /opt/bitnami/openldap/bin/ldapdelete -h ldap:3389 -D cn=admin,dc=symfony,dc=com -w symfony cn=a,ou=users,dc=symfony,dc=com"
- name: Configure composer - name: Configure composer
run: | run: |
COMPOSER_HOME="$(composer config home)" COMPOSER_HOME="$(composer config home)"
composer self-update composer self-update
([ -d "$COMPOSER_HOME" ] || mkdir "$COMPOSER_HOME") && cp .github/composer-config.json "$COMPOSER_HOME/config.json" ([ -d "$COMPOSER_HOME" ] || mkdir "$COMPOSER_HOME") && cp .github/composer-config.json "$COMPOSER_HOME/config.json"
echo "COMPOSER_ROOT_VERSION=$(grep -m1 SYMFONY_VERSION .travis.yml | grep -o '[0-9.x]*').x-dev" >> $GITHUB_ENV echo "COMPOSER_ROOT_VERSION=$(grep -m1 SYMFONY_VERSION .travis.yml | grep -o '[0-9.x]*').x-dev" >> $GITHUB_ENV
- name: Determine composer cache directory - name: Install dependencies
id: composer-cache run: |
run: echo "::set-output name=directory::$(composer config cache-dir)" echo "::group::composer update"
composer update --no-progress --ansi
echo "::endgroup::"
echo "::group::install phpunit"
./phpunit install
echo "::endgroup::"
- name: Cache composer dependencies - name: Run tests
uses: actions/cache@v1 run: ./phpunit --group integration -v
with: env:
path: ${{ steps.composer-cache.outputs.directory }} REDIS_HOST: localhost
key: ${{ matrix.php }}-composer-${{ hashFiles('**/composer.lock') }} REDIS_CLUSTER_HOSTS: 'localhost:7000 localhost:7001 localhost:7002 localhost:7003 localhost:7004 localhost:7005'
restore-keys: ${{ matrix.php }}-composer- REDIS_SENTINEL_HOSTS: 'localhost:26379'
REDIS_SENTINEL_SERVICE: redis_sentinel
MESSENGER_REDIS_DSN: redis://127.0.0.1:7006/messages
MESSENGER_AMQP_DSN: amqp://localhost/%2f/messages
MEMCACHED_HOST: localhost
LDAP_HOST: localhost
LDAP_PORT: 3389
- name: Install dependencies - name: Run HTTP push tests
run: | if: matrix.php == '7.4'
echo "::group::composer update" run: |
composer update --no-progress --ansi [ -d .phpunit ] && mv .phpunit .phpunit.bak
echo "::endgroup::" wget -q https://github.com/symfony/binary-utils/releases/download/v0.1/vulcain_0.1.3_Linux_x86_64.tar.gz -O - | tar xz && mv vulcain /usr/local/bin
echo "::group::install phpunit" docker run --rm -e COMPOSER_ROOT_VERSION -v $(pwd):/app -v $(which composer):/usr/local/bin/composer -v /usr/local/bin/vulcain:/usr/local/bin/vulcain -w /app php:7.4-alpine ./phpunit src/Symfony/Component/HttpClient/Tests/CurlHttpClientTest.php --filter testHttp2Push
./phpunit install sudo rm -rf .phpunit
echo "::endgroup::" [ -d .phpunit.bak ] && mv .phpunit.bak .phpunit
- name: Run tests
run: ./phpunit --group integration -v
env:
REDIS_HOST: localhost
REDIS_CLUSTER_HOSTS: 'localhost:7000 localhost:7001 localhost:7002 localhost:7003 localhost:7004 localhost:7005'
REDIS_SENTINEL_HOSTS: 'localhost:26379'
REDIS_SENTINEL_SERVICE: redis_sentinel
MESSENGER_REDIS_DSN: redis://127.0.0.1:7006/messages
MESSENGER_AMQP_DSN: amqp://localhost/%2f/messages
MEMCACHED_HOST: localhost
LDAP_HOST: localhost
LDAP_PORT: 3389
- name: Run HTTP push tests
if: matrix.php == '7.4'
run: |
[ -d .phpunit ] && mv .phpunit .phpunit.bak
wget -q https://github.com/symfony/binary-utils/releases/download/v0.1/vulcain_0.1.3_Linux_x86_64.tar.gz -O - | tar xz && mv vulcain /usr/local/bin
docker run --rm -e COMPOSER_ROOT_VERSION -v $(pwd):/app -v $(which composer):/usr/local/bin/composer -v /usr/local/bin/vulcain:/usr/local/bin/vulcain -w /app php:7.4-alpine ./phpunit src/Symfony/Component/HttpClient/Tests/CurlHttpClientTest.php --filter testHttp2Push
sudo rm -rf .phpunit
[ -d .phpunit.bak ] && mv .phpunit.bak .phpunit