diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e410fcb7..8f9e57f9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -163,3 +163,84 @@ jobs: run: | make build php build/moodle-plugin-ci.phar list + + phartest: + name: Integration tests (PHAR) + needs: buildphar + runs-on: ubuntu-22.04 + + services: + postgres: + image: postgres:13 + env: + POSTGRES_USER: 'postgres' + POSTGRES_HOST_AUTH_METHOD: 'trust' + # Health check to wait for postgres to start. + ports: + - 5432:5432 + options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3 + + strategy: + fail-fast: false + matrix: + include: + # Each supported PHP version once. That's enough. + - php: '8.2' + moodle-branch: 'master' + - php: '8.1' + moodle-branch: 'MOODLE_402_STABLE' + - php: '8.0' + moodle-branch: 'MOODLE_401_STABLE' + - php: '7.4' + moodle-branch: 'MOODLE_400_STABLE' + + steps: + - name: Check out repository code + uses: actions/checkout@v3 + + - name: Setup PHP ${{ matrix.php }} + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + extensions: pgsql, zip, gd, xmlrpc, soap + ini-values: max_input_vars=5000 + coverage: pcov + + - name: Initialise moodle-plugin-ci + run: | + make init + cp -R tests/Fixture/moodle-local_ci ../moodle-local_ci + echo $(cd bin; pwd) >> $GITHUB_PATH + echo $(cd vendor/bin; pwd) >> $GITHUB_PATH + echo "CI_BUILD_DIR="$(cd ../moodle-local_ci; pwd) >> $GITHUB_ENV + # PHPUnit depends on en_AU.UTF-8 locale + sudo locale-gen en_AU.UTF-8 + # Define NVM_DIR pointing to nvm installation. + echo "NVM_DIR=$HOME/.nvm" >> $GITHUB_ENV + + - name: Install moodle-plugin-ci (PHAR) + run: build/moodle-plugin-ci.phar install -vvv + env: + DB: 'pgsql' + MOODLE_BRANCH: ${{ matrix.moodle-branch }} + IGNORE_PATHS: 'ignore' + IGNORE_NAMES: 'ignore_name.php' + MUSTACHE_IGNORE_NAMES: 'broken.mustache' + + - name: Run Integration tests (PHAR) + env: + MOODLE_BRANCH: ${{ matrix.moodle-branch }} + run: | + build/moodle-plugin-ci.phar phplint + build/moodle-plugin-ci.phar phpcpd + build/moodle-plugin-ci.phar phpmd + build/moodle-plugin-ci.phar phpcs + build/moodle-plugin-ci.phar phpcbf + build/moodle-plugin-ci.phar validate + build/moodle-plugin-ci.phar savepoints + build/moodle-plugin-ci.phar mustache + build/moodle-plugin-ci.phar grunt + build/moodle-plugin-ci.phar phpdoc + build/moodle-plugin-ci.phar phpunit --verbose --coverage-text --fail-on-warning + build/moodle-plugin-ci.phar behat --profile default + build/moodle-plugin-ci.phar behat --profile chrome