From f50d8cac620747ad83fa4785636dc388b2b6ad7c Mon Sep 17 00:00:00 2001
From: "Eloy Lafuente (stronk7)" <stronk7@moodle.org>
Date: Fri, 15 Sep 2023 19:47:52 +0200
Subject: [PATCH] Let's run the integration tests using the generated PHAR

It's enough to run the tests once per supported PHP version.

Also, update the CHANGELOG to share about these new tests.
---
 .github/workflows/test.yml | 93 ++++++++++++++++++++++++++++++++++++++
 docs/CHANGELOG.md          |  1 +
 2 files changed, 94 insertions(+)

diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index e410fcb7..79f2eeaf 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -163,3 +163,96 @@ jobs:
       run: |
         make build
         php build/moodle-plugin-ci.phar list
+
+    - name: Upload PHAR for later use
+      uses: actions/upload-artifact@v3
+      with:
+        name: phar
+        path: build/moodle-plugin-ci.phar
+
+  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: Download built PHAR
+      uses: actions/download-artifact@v3
+      with:
+        name: phar
+        path: build
+
+    - 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
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index bb5fab00..435ee2c5 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -19,6 +19,7 @@ The format of this change log follows the advice given at [Keep a CHANGELOG](htt
   - Fixed the `mustache` command execution.
   - Fixed the `phpcs` and `phpcbf` commands execution.
   - Fixed the `phpdoc` command to use the bundled `coreapis.txt` file.
+  - Fix the lack of CI testing with the PHAR package. Now 100% covered.
 
 ## [4.1.3] - 2023-09-08
 ### Changed