From 63297e371c91e018fc72d22473e7e22f0eae196b Mon Sep 17 00:00:00 2001 From: Jim Seconde Date: Mon, 3 Feb 2025 11:55:06 +0000 Subject: [PATCH 1/3] Add pipeline coverage test --- .github/workflows/build.yml | 19 +++++++++++++------ .github/workflows/release.yml | 18 ++++++++++++++---- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a2b028f8..09bafcd2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,8 +33,8 @@ jobs: uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} - extensions: json, mbstring - coverage: pcov + extensions: json, mbstring, xdebug + coverage: xdebug env: COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -55,11 +55,18 @@ jobs: - name: Install dependencies run: composer update --prefer-dist --no-interaction - - name: Analyze & test - run: composer test -- -v --coverage-clover=coverage.xml + - name: PHPUnit tests with coverage + run: vendor/bin/phpunit --coverage-text --coverage-clover=coverage.xml - name: Run PHPStan run: ./vendor/bin/phpstan - - name: Run codecov - uses: codecov/codecov-action@v1 + - name: Check code coverage threshold + run: | + min_coverage=80 + coverage=$(php -r "echo simplexml_load_file('coverage.xml')->project->metrics['elements'] > 0 ? (simplexml_load_file('coverage.xml')->project->metrics['coveredelements'] / simplexml_load_file('coverage.xml')->project->metrics['elements'] * 100) : 0;") + echo "Coverage: $coverage%" + if (( $(echo "$coverage < $min_coverage" | bc -l) )); then + echo "Code coverage is below $min_coverage%. Failing the build." + exit 1 + fi diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1ba0daea..814e5608 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -35,8 +35,8 @@ jobs: uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} - extensions: json, mbstring - coverage: pcov + extensions: json, mbstring, xdebug + coverage: xdebug env: COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -57,11 +57,21 @@ jobs: - name: Install dependencies run: composer update --prefer-dist --no-interaction - - name: Analyze & test - run: composer test -- -v --coverage-clover=coverage.xml + - name: PHPUnit tests with coverage + run: vendor/bin/phpunit --coverage-text --coverage-clover=coverage.xml - name: Run PHPStan run: ./vendor/bin/phpstan - name: Run codecov uses: codecov/codecov-action@v1 + + - name: Check code coverage threshold + run: | + min_coverage=80 + coverage=$(php -r "echo simplexml_load_file('coverage.xml')->project->metrics['elements'] > 0 ? (simplexml_load_file('coverage.xml')->project->metrics['coveredelements'] / simplexml_load_file('coverage.xml')->project->metrics['elements'] * 100) : 0;") + echo "Coverage: $coverage%" + if (( $(echo "$coverage < $min_coverage" | bc -l) )); then + echo "Code coverage is below $min_coverage%. Failing the build." + exit 1 + fi \ No newline at end of file From 0b2d3354556feadd7ea407e73ab2aee74b4d1597 Mon Sep 17 00:00:00 2001 From: Jim Seconde Date: Mon, 3 Feb 2025 12:04:28 +0000 Subject: [PATCH 2/3] Switch action method --- .github/workflows/build.yml | 14 +++++--------- .github/workflows/release.yml | 14 +++++--------- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 09bafcd2..dc0083fe 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -61,12 +61,8 @@ jobs: - name: Run PHPStan run: ./vendor/bin/phpstan - - name: Check code coverage threshold - run: | - min_coverage=80 - coverage=$(php -r "echo simplexml_load_file('coverage.xml')->project->metrics['elements'] > 0 ? (simplexml_load_file('coverage.xml')->project->metrics['coveredelements'] / simplexml_load_file('coverage.xml')->project->metrics['elements'] * 100) : 0;") - echo "Coverage: $coverage%" - if (( $(echo "$coverage < $min_coverage" | bc -l) )); then - echo "Code coverage is below $min_coverage%. Failing the build." - exit 1 - fi + - name: Coverage Check + uses: ericsizemore/phpunit-coverage-check-action@1.0.0 + with: + clover_file: 'coverage.xml' + threshold: 80 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 814e5608..e48e1a97 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -66,12 +66,8 @@ jobs: - name: Run codecov uses: codecov/codecov-action@v1 - - name: Check code coverage threshold - run: | - min_coverage=80 - coverage=$(php -r "echo simplexml_load_file('coverage.xml')->project->metrics['elements'] > 0 ? (simplexml_load_file('coverage.xml')->project->metrics['coveredelements'] / simplexml_load_file('coverage.xml')->project->metrics['elements'] * 100) : 0;") - echo "Coverage: $coverage%" - if (( $(echo "$coverage < $min_coverage" | bc -l) )); then - echo "Code coverage is below $min_coverage%. Failing the build." - exit 1 - fi \ No newline at end of file + - name: Coverage Check + uses: ericsizemore/phpunit-coverage-check-action@1.0.0 + with: + clover_file: 'coverage.xml' + threshold: 80 \ No newline at end of file From 3007973967e19421fd9de1d076b69167ee739107 Mon Sep 17 00:00:00 2001 From: Jim Seconde Date: Mon, 3 Feb 2025 12:14:06 +0000 Subject: [PATCH 3/3] Switch action method to docker, make it a new job --- .github/workflows/build.yml | 29 +++++++++++++++++++++++++---- .github/workflows/release.yml | 30 ++++++++++++++++++++++++------ phpunit.xml.dist | 16 ++++++++-------- 3 files changed, 57 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dc0083fe..8759abc7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -56,13 +56,34 @@ jobs: run: composer update --prefer-dist --no-interaction - name: PHPUnit tests with coverage - run: vendor/bin/phpunit --coverage-text --coverage-clover=coverage.xml + run: vendor/bin/phpunit - name: Run PHPStan run: ./vendor/bin/phpstan + phpunit-coverage-check: + name: PHPUnit Coverage Check + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install PHP 8.4 + uses: shivammathur/setup-php@master + with: + php-version: 8.4 + extensions: mbstring + coverage: xdebug, pcov + tools: composer:v2 + + - name: Install dependencies + run: composer install --prefer-dist --no-progress + + - name: Run tests + run: ./vendor/bin/phpunit --coverage-clover clover.xml + - name: Coverage Check - uses: ericsizemore/phpunit-coverage-check-action@1.0.0 + uses: docker://ghcr.io/ericsizemore/phpunit-coverage-check-action with: - clover_file: 'coverage.xml' - threshold: 80 + clover_file: 'clover.xml' + threshold: 80 \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e48e1a97..3c02e266 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -57,17 +57,35 @@ jobs: - name: Install dependencies run: composer update --prefer-dist --no-interaction - - name: PHPUnit tests with coverage - run: vendor/bin/phpunit --coverage-text --coverage-clover=coverage.xml + - name: Run Tests + run: vendor/bin/phpunit - name: Run PHPStan run: ./vendor/bin/phpstan - - name: Run codecov - uses: codecov/codecov-action@v1 + phpunit-coverage-check: + name: PHPUnit Coverage Check + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install PHP 8.4 + uses: shivammathur/setup-php@master + with: + php-version: 8.4 + extensions: mbstring + coverage: xdebug, pcov + tools: composer:v2 + + - name: Install dependencies + run: composer install --prefer-dist --no-progress + + - name: Run tests + run: ./vendor/bin/phpunit --coverage-clover clover.xml - name: Coverage Check - uses: ericsizemore/phpunit-coverage-check-action@1.0.0 + uses: docker://ghcr.io/ericsizemore/phpunit-coverage-check-action with: - clover_file: 'coverage.xml' + clover_file: 'clover.xml' threshold: 80 \ No newline at end of file diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 2faff0e3..6db8a251 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -11,14 +11,14 @@ convertWarningsToExceptions="true" stopOnFailure="false" > - - - src - - - - - + + + + + + + + test