summaryrefslogtreecommitdiffstats
path: root/.github/workflows/test-phpunit.yml
blob: bba336ce7531cfa9d88ee6cda631afd015bd75ff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
name: PHPUnit

on: [push, pull_request]

jobs:
  tests:
    runs-on: ubuntu-18.04
    if: "!contains(github.event.head_commit.message, '[ci skip]')"
    env:
      PHP_INI_VALUES: assert.exception=1, zend.assertions=1

    strategy:
      fail-fast: false
      matrix:
        php: [ '8.0', '7.4', '7.3', '7.2', '7.1', '7.0', '5.6', '5.5', '5.4' ]
        DB: [ 'pdo/mysql', 'pdo/pgsql', 'pdo/sqlite', 'mysqli', 'pgsql', 'sqlite' ]
        compiler: [ default ]
        include:
          - php: '8.0'
            DB: 'pdo/mysql'
            compiler: jit
          - php: '8.0'
            DB: 'pdo/pgsql'
            compiler: jit
          - php: '8.0'
            DB: 'pdo/sqlite'
            compiler: jit
          - php: '8.0'
            DB: 'mysqli'
            compiler: jit
          - php: '8.0'
            DB: 'pgsql'
            compiler: jit
          - php: '8.0'
            DB: 'sqlite'
            compiler: jit
          - php: '5.6'
            DB: 'mysql'
            compiler: default
          - php: '5.5'
            DB: 'mysql'
            compiler: default
          - php: '5.4'
            DB: 'mysql'
            compiler: default

    services:
      postgres:
        image: postgres:12
        env:
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: postgres
          POSTGRES_DB: ci_test
        ports:
          - 5432:5432
        options: --health-cmd=pg_isready --health-interval=10s --health-timeout=5s --health-retries=3

      mysql:
        image: mysql:5.7
        env:
          MYSQL_ALLOW_EMPTY_PASSWORD: true
          MYSQL_USER: travis
          MYSQL_PASSWORD: travis
          MYSQL_DATABASE: ci_test
        ports:
          - 3306:3306
        options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3

    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Override PHP ini values for JIT compiler
        if: matrix.compiler == 'jit'
        run: echo "PHP_INI_VALUES::assert.exception=1, zend.assertions=1, opcache.enable=1, opcache.enable_cli=1, opcache.optimization_level=-1, opcache.jit=1255, opcache.jit_buffer_size=64M" >> $GITHUB_ENV 

      - name: Install PHP${{ matrix.php }} - DB ${{ matrix.DB }}
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}
          tools: composer, pecl
          extensions: imagick, sqlite3, pgsql, mysqli, pdo, pdo_mysql, pdo_pgsql, pdo_sqlite
          ini-values: ${{ env.PHP_INI_VALUES }}
          coverage: xdebug

      - name: Setup composer for PHP8.0+
        run: if [ '${{ matrix.php }}' = '8.0' ] || [ '${{ matrix.php }}' = '8.1' ] ; then sed -i 's/phpunit\/phpunit/sminnee\/phpunit/g' composer.json; composer config -g platform.php 7.4.11; fi
      - name: Get 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: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
          restore-keys: ${{ runner.os }}-composer-   
      - name: Install composer dependencies
        run: composer install --no-progress --prefer-dist --optimize-autoloader

      - name: Fix error in vfsStream
        run: sed -i s/name{0}/name[0]/ vendor/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStream.php

      - name: PHPUnit Test
        run: |
          php -d zend.enable_gc=0 -d date.timezone=UTC -d mbstring.func_overload=7 -d mbstring.internal_encoding=UTF-8 vendor/bin/phpunit --coverage-text --configuration tests/travis/${{ matrix.DB }}.phpunit.xml
        env:
          XDEBUG_MODE: coverage