chamilo/chamilo-lms

View on GitHub
.github/workflows/phpunit.yml

Summary

Maintainability
Test Coverage
name: PHPUnit 🐛

on: [push, pull_request]

permissions:
  contents: read

jobs:
    build:
        name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }}
        runs-on: ubuntu-20.04

        strategy:
            fail-fast: false
            matrix:
                operating-system: [ubuntu-latest]
                php-versions: ['8.1']
        steps:
            - name: Checkout
              uses: actions/checkout@v4

            - name: Setup node
              run: |
                  sudo apt-get update
                  sudo apt-get install nodejs npm

            - name: Setup PHP, with composer and extensions
              uses: shivammathur/setup-php@v2
              with:
                  php-version: ${{ matrix.php-versions }}
                  extensions: mbstring, xml, ctype, iconv, intl, pdo, pdo_mysql, dom, gd, json, soap, zip, bcmath
                  ini-values: post_max_size=256M, max_execution_time=600, memory_limit=4096M, date.timezone=Europe/Paris
                  coverage: pcov

            - name: Start mysql service
              run: |
                  sudo /etc/init.d/mysql start

            - name: Get composer cache directory
              id: composer-cache
              run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT

#            - name: Cache composer dependencies
#              uses: actions/cache@v2
#              with:
#                  path: ${{ steps.composer-cache.outputs.dir }}
                  # Use composer.json for key, if composer.lock is not committed.
                  # key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
#                  key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
#                  restore-keys: ${{ runner.os }}-composer-

            - name: Install dependencies with composer
              run: composer install --no-progress

            - name: Install assets
              run: php bin/console assets:install

            - name: Install Yarn
              run: |
                  sudo corepack enable
                  yarn set version stable
                  yarn --version

            - name: Get yarn cache directory
              id: yarn-cache-dir-path
              run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT

#            - name: Cache yarn dependencies
#              uses: actions/cache@v2
#              id: yarn-cache
#              with:
#                  path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
                  # Use composer.json for key, if composer.lock is not committed.
                  # key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
#                  key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
#                  restore-keys: ${{ runner.os }}-yarn-

            - name: Install JS dependencies
              run: |
                  yarn install
                  yarn run encore production

            - name: Check PHP settings
              run: |
                  php -ini
                  php -v
                  php -m

            - name: Install PHPUnit
              run: vendor/bin/simple-phpunit --version

            - name: Setup test database
              run: |
                  php bin/console --env=test cache:clear
                  php bin/console --env=test doctrine:database:create
                  php bin/console --env=test doctrine:schema:create
                  php bin/console --env=test doctrine:fixtures:load --no-interaction

            - name: Run PHPUnit tests
              run: php bin/phpunit --testdox --coverage-clover clover.xml

            - name: Coverage
              uses: codecov/codecov-action@v4
              with:
                  token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos
                  files: ./clover.xml
                  name: codecov-umbrella # optional
                  fail_ci_if_error: false
                  verbose: true