diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..0126f33 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,8 @@ +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: "composer" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "weekly" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..3aa54e3 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,87 @@ +name: CI +on: + push: + paths-ignore: + - 'README.md' + - 'LICENSE' + branches: [ "main" ] + pull_request: + paths-ignore: + - 'README.md' + - 'LICENSE' + - 'example' + branches: [ "main" ] + +permissions: + contents: read + +jobs: + test: + runs-on: ubuntu-latest + strategy: + max-parallel: 2 + fail-fast: false + matrix: + php-version: [ + "8.1", + "8.2", + "8.3", + # also try a future version + "8.4" + ] + composer-param: [ + "update --no-progress --prefer-dist --prefer-lowest", + "update --no-progress --prefer-dist" + ] + name: PHP ${{ matrix.php-version }} test + steps: + - name: checkout project + uses: actions/checkout@v4 + with: + # needed by scrutinizer + fetch-depth: 2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + extensions: bcmath + tools: composer:v2 + # needed by PHPUnit code coverage + coverage: pcov + + - name: Validate composer.json and composer.lock + run: composer validate + + - name: Get composer cache directory + id: composer-cache + run: echo "dir=$(composer config cache-dir)" >> $GITHUB_OUTPUT + + - name: Cache composer dependencies + uses: actions/cache@v3 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: ${{ runner.os }}-composer- + + - name: Install dependencies + run: composer ${{ matrix.composer-param }} + + # Run phpunit with code coverage + - name: PHPUnit Tests + run: vendor/bin/phpunit --coverage-clover=coverage.clover + + # Uploading reports for analysis + - name: Upload code-coverage to scrutinizer + run: vendor/bin/ocular code-coverage:upload --format=php-clover coverage.clover + + - name: Publish code coverage to Code Climate + uses: paambaati/codeclimate-action@v5 + env: + CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} + with: + coverageLocations: | + coverage.clover:clover + + +# vim: syntax=yaml ts=2 sw=2 et sr softtabstop=2 autoindent diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml deleted file mode 100644 index 1ef7894..0000000 --- a/.github/workflows/php.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: PHP Composer - -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -permissions: - contents: read - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - - name: Validate composer.json and composer.lock - run: composer validate --strict - - - name: Cache Composer packages - id: composer-cache - uses: actions/cache@v3 - with: - path: vendor - key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-php- - - - name: Install dependencies - run: composer install --prefer-dist --no-progress - - # Add a test script to composer.json, for instance: "test": "vendor/bin/phpunit" - # Docs: https://getcomposer.org/doc/articles/scripts.md - - # - name: Run test suite - # run: composer run-script test diff --git a/composer.json b/composer.json index 34d559e..40722de 100644 --- a/composer.json +++ b/composer.json @@ -62,5 +62,8 @@ }, "preferred-install": "dist", "sort-packages": true + }, + "scripts": { + "test": "phpunit --display-warnings --display-notices" } }