123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- name: Tests
- on:
- push:
- branches:
- - main
- paths:
- - 'src/globals/test-extensions.php'
- pull_request:
- branches: [ "main" ]
- permissions:
- contents: read
- jobs:
- php-cs-fixer:
- runs-on: ubuntu-latest
- timeout-minutes: 10
- steps:
- - name: "Checkout"
- uses: actions/checkout@v4
- - name: "Setup PHP"
- uses: shivammathur/setup-php@v2
- with:
- php-version: '8.1'
- extensions: curl, openssl, mbstring
- ini-values: memory_limit=-1
- tools: pecl, composer, php-cs-fixer
- - name: Run PHP-CS-Fixer fix
- run: php-cs-fixer fix --dry-run --diff --ansi
- phpstan:
- runs-on: ubuntu-latest
- timeout-minutes: 10
- steps:
- - name: "Checkout"
- uses: actions/checkout@v4
- - name: "Setup PHP"
- uses: shivammathur/setup-php@v2
- with:
- php-version: '8.1'
- extensions: curl, openssl, mbstring
- ini-values: memory_limit=-1
- tools: composer
- - name: "Cache Composer packages"
- id: composer-cache
- uses: actions/cache@v3
- with:
- path: vendor
- key: ${{ runner.os }}-phpstan-${{ hashFiles('**/composer.lock') }}
- restore-keys: |
- ${{ runner.os }}-phpstan-
- - name: "Install Dependencies"
- run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
- - name: "Run phpstan"
- run: vendor/bin/phpstan analyse
- phpunit:
- name: "PHPUnit (PHP ${{ matrix.php }})"
- runs-on: ubuntu-latest
- timeout-minutes: 10
- strategy:
- matrix:
- include:
- - php: '8.1'
- - php: '8.2'
- - php: '8.3'
- steps:
- - name: "Checkout"
- uses: actions/checkout@v4
- - name: "Setup PHP"
- uses: shivammathur/setup-php@v2
- with:
- php-version: "${{ matrix.php }}"
- tools: pecl, composer
- extensions: curl, openssl, mbstring
- ini-values: memory_limit=-1
- - name: "Cache Composer packages"
- id: composer-cache
- uses: actions/cache@v3
- with:
- path: vendor
- key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
- restore-keys: |
- ${{ runner.os }}-php-
- - name: "Install Dependencies"
- run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
- - name: "Run PHPUnit Tests"
- run: |
- vendor/bin/phpunit tests/ --no-coverage
- build:
- name: "Build PHP Test (PHP ${{ matrix.php }} ${{ matrix.os }})"
- runs-on: ${{ matrix.os }}
- timeout-minutes: 120
- strategy:
- matrix:
- php:
- - "8.0"
- - "8.1"
- - "8.2"
- - "8.3"
- os:
- - ubuntu-latest
- - macos-latest
- - windows-latest
- - macos-14
- fail-fast: false
- steps:
- - name: "Checkout"
- uses: actions/checkout@v4
- - name: "Setup PHP"
- uses: shivammathur/setup-php@v2
- with:
- php-version: 8.2
- tools: pecl, composer
- extensions: curl, openssl, mbstring
- ini-values: memory_limit=-1
- - name: "Use test token if exists"
- if: matrix.os != 'windows-latest'
- run: |
- if [ "${{ secrets.TEST_GH_TOKEN }}" != "" ]; then
- echo "GITHUB_TOKEN=${{ secrets.TEST_GH_TOKEN }}" >> $GITHUB_ENV
- fi
- - name: "Cache Composer packages"
- id: composer-cache
- uses: actions/cache@v3
- with:
- path: vendor
- key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
- restore-keys: |
- ${{ runner.os }}-php-
- # Cache downloaded source
- - id: cache-download
- uses: actions/cache@v3
- with:
- path: downloads
- key: php-${{ matrix.php }}-dependencies
- - name: "Install Dependencies"
- run: composer update -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
- - name: "Run Build Tests (doctor)"
- run: bin/spc doctor --auto-fix
- - name: "Run Build Tests (download)"
- uses: nick-fields/retry@v3
- with:
- timeout_minutes: 10
- max_attempts: 3
- retry_on: error
- command: |
- bin/spc download --for-extensions="$(php src/globals/test-extensions.php extensions)" --for-libs="$(php src/globals/test-extensions.php libs)" --with-php=${{ matrix.php }} --ignore-cache-sources=php-src --debug
- - name: "Run Build Tests (build)"
- run: bin/spc build "$(php src/globals/test-extensions.php extensions)" --with-libs="$(php src/globals/test-extensions.php libs)" --build-cli --build-micro --build-fpm --debug
|