123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- name: Tests
- on:
- push:
- branches:
- - main
- paths:
- - 'src/globals/test-extensions.php'
- pull_request:
- branches: [ "main" ]
- paths:
- - 'src/**'
- - 'config/**'
- - '.github/workflows/tests.yml'
- - 'bin/**'
- - 'composer.json'
- - 'box.json'
- - '.php-cs-fixer.php'
- permissions:
- contents: read
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- 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@v4
- 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'
- - php: '8.4'
- 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@v4
- 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: |
- SPC_NO_MUSL_PATH=yes vendor/bin/phpunit tests/ --no-coverage
- define-matrix:
- name: "Define Matrix"
- runs-on: ubuntu-latest
- outputs:
- php: ${{ steps.gendef.outputs.php }}
- os: ${{ steps.gendef.outputs.os }}
- steps:
- - name: "Checkout"
- uses: actions/checkout@v4
- - name: "Setup PHP"
- uses: shivammathur/setup-php@v2
- with:
- php-version: 8.2
- - name: Define
- id: gendef
- run: |
- PHP_VERSIONS=$(php src/globals/test-extensions.php php)
- OS_VERSIONS=$(php src/globals/test-extensions.php os)
- echo 'php='"$PHP_VERSIONS" >> "$GITHUB_OUTPUT"
- echo 'os='"$OS_VERSIONS" >> "$GITHUB_OUTPUT"
- build:
- name: "Build PHP Test (PHP ${{ matrix.php }} ${{ matrix.os }})"
- runs-on: ${{ matrix.os }}
- needs: define-matrix
- timeout-minutes: 120
- strategy:
- matrix:
- php: ${{ fromJSON(needs.define-matrix.outputs.php) }}
- os: ${{ fromJSON(needs.define-matrix.outputs.os) }}
- 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
- env:
- phpts: nts
- - name: "Cache composer packages"
- id: composer-cache
- uses: actions/cache@v4
- with:
- path: vendor
- key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
- restore-keys: |
- ${{ runner.os }}-php-
- # Cache downloaded source
- - id: cache-download
- uses: actions/cache@v4
- with:
- path: downloads
- key: php-dependencies-${{ matrix.os }}
- - 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 --debug
- - name: "Prepare UPX for Windows"
- if: matrix.os == 'windows-latest'
- run: |
- bin/spc install-pkg upx
- echo "UPX_CMD=$(php src/globals/test-extensions.php upx)" >> $env:GITHUB_ENV
- - name: "Prepare UPX for Linux"
- if: matrix.os == 'ubunut-latest'
- run: |
- bin/spc install-pkg upx
- echo "UPX_CMD=$(php src/globals/test-extensions.php upx)" >> $GITHUB_ENV
- - name: "Run Build Tests (download)"
- run: php src/globals/test-extensions.php download_cmd ${{ matrix.os }} ${{ matrix.php }}
- - name: "Run Build Tests (build)"
- run: php src/globals/test-extensions.php build_cmd ${{ matrix.os }} ${{ matrix.php }}
|