name: "CI" on: pull_request: push: env: SYMFONY_PHPUNIT_DISABLE_RESULT_CACHE: 1 permissions: contents: read jobs: tests: name: "PHP ${{ matrix.php-version }}" runs-on: 'ubuntu-latest' strategy: matrix: php-version: - '8.1' - '8.2' - '8.3' - '8.4' steps: - name: "Checkout code" uses: actions/checkout@v4 - name: "Install PHP with extensions" uses: shivammathur/setup-php@v2 with: coverage: "none" php-version: ${{ matrix.php-version }} ini-values: memory_limit=-1 - name: "Add PHPUnit matcher" run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - run: composer install - name: "Switch use_yield to true on PHP ${{ matrix.php-version }}" if: "matrix.php-version == '8.2'" run: | sed -i -e "s/'use_yield' => false/'use_yield' => true/" src/Environment.php - name: "Install PHPUnit" run: vendor/bin/simple-phpunit install - name: "PHPUnit version" run: vendor/bin/simple-phpunit --version - name: "Run tests" run: vendor/bin/simple-phpunit tests-phpunit-11: name: "PHP ${{ matrix.php-version }} (PHPUnit 11.3)" runs-on: 'ubuntu-latest' env: SYMFONY_PHPUNIT_VERSION: '11.3' strategy: matrix: php-version: - '8.2' - '8.3' - '8.4' steps: - name: "Checkout code" uses: actions/checkout@v4 - name: "Install PHP with extensions" uses: shivammathur/setup-php@v2 with: coverage: "none" php-version: ${{ matrix.php-version }} ini-values: memory_limit=-1 - name: "Add PHPUnit matcher" run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - run: composer install - name: "Switch use_yield to true on PHP ${{ matrix.php-version }}" if: "matrix.php-version == '8.2'" run: | sed -i -e "s/'use_yield' => false/'use_yield' => true/" src/Environment.php - name: "Install PHPUnit" run: vendor/bin/simple-phpunit install - name: "PHPUnit version" run: vendor/bin/simple-phpunit --version - name: "Run tests" run: vendor/bin/simple-phpunit extension-tests: needs: - 'tests' name: "${{ matrix.extension }} PHP ${{ matrix.php-version }}" runs-on: 'ubuntu-latest' continue-on-error: true env: SYMFONY_PHPUNIT_VERSION: ${{ matrix.php-version == '8.1' && '9.6' || '11.3' }} strategy: matrix: php-version: - '8.1' - '8.2' - '8.3' - '8.4' extension: - 'cache-extra' - 'cssinliner-extra' - 'html-extra' - 'inky-extra' - 'intl-extra' - 'markdown-extra' - 'string-extra' - 'twig-extra-bundle' steps: - name: "Checkout code" uses: actions/checkout@v4 - name: "Install PHP with extensions" uses: shivammathur/setup-php@v2 with: coverage: "none" php-version: ${{ matrix.php-version }} ini-values: memory_limit=-1 - name: "Add PHPUnit matcher" run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - name: "Prevent installing symfony/translation-contracts 3.0" if: "matrix.extension == 'twig-extra-bundle'" working-directory: extra/${{ matrix.extension }} run: "composer require --no-update 'symfony/translation-contracts:^1.1|^2.0'" - name: "Composer install ${{ matrix.extension }}" working-directory: extra/${{ matrix.extension }} run: composer install - name: "Install PHPUnit" working-directory: extra/${{ matrix.extension }} run: vendor/bin/simple-phpunit install - name: "PHPUnit version" working-directory: extra/${{ matrix.extension }} run: vendor/bin/simple-phpunit --version - name: "Switch use_yield to true" if: "matrix.php-version == '8.2'" run: | sed -i -e "s/'use_yield' => false/'use_yield' => true/" extra/${{ matrix.extension }}/vendor/twig/twig/src/Environment.php - name: "Run tests for ${{ matrix.extension }}" working-directory: extra/${{ matrix.extension }} env: # intl-extra's integration tests expect en_US-formatted ICU output. The Ubuntu # runner default (C.UTF-8) makes ICU fall back to the "C" locale, producing e.g. # "€ 1000000.00" instead of "€1,000,000.00". phpunit.xml.dist's entry is # too late because ICU caches the default locale at the first call. LANG: 'en_US.UTF-8' run: vendor/bin/simple-phpunit phpstan: name: "PHPStan" runs-on: 'ubuntu-latest' strategy: matrix: php-version: - '8.4' steps: - name: "Checkout code" uses: actions/checkout@v4 - name: "Install PHP with extensions" uses: shivammathur/setup-php@v2 with: coverage: "none" php-version: ${{ matrix.php-version }} ini-values: memory_limit=-1 - run: composer install - name: "Run tests" run: vendor/bin/phpstan