From d3878d928dabc84baa30ba1e1cbc53ee07267c2a Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Tue, 7 Apr 2020 15:04:20 +0200 Subject: [PATCH] Improve CI * Adjust names of tasks. * Add composer require checker. * Install without plugins to not use custom installer and stay compatible with require checker. * Stay phpunit 10 compatible. --- .github/workflows/ci.yaml | 50 +++++++++++++++++-- Tests/Unit/Domain/Model/PageviewTest.php | 3 ++ Tests/Unit/Domain/Pageview/FactoryTest.php | 4 ++ Tests/Unit/Domain/Repository/PageviewTest.php | 3 ++ Tests/Unit/Middleware/PageviewTest.php | 3 ++ composer.json | 33 ++++++------ phpcs.xml.dist | 3 ++ readme.rst | 2 + 8 files changed, 81 insertions(+), 20 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 5d3000d..bab92bb 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,22 +1,62 @@ name: CI on: [push] jobs: - build: + check-composer: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - name: Validate composer.json and composer.lock + - name: Validate composer.json run: composer validate + check-dependencies: + runs-on: ubuntu-latest + needs: [check-composer] + steps: + - uses: actions/checkout@v2 + + - name: Get Composer Cache Directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" + - uses: actions/cache@v1 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-composer- + + - name: Install dependencies + run: composer install --prefer-dist --no-progress --no-suggest --no-plugins + + - name: Missing composer requirements + run: ./vendor/bin/composer-require-checker + + full-check: + runs-on: ubuntu-latest + needs: [check-composer] + steps: + - uses: actions/checkout@v2 + + - name: Get Composer Cache Directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" + - uses: actions/cache@v1 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-composer- + - name: Install dependencies run: composer install --prefer-dist --no-progress --no-suggest - - name: Test CGL + - name: Coding Guideline run: ./vendor/bin/phpcs - - name: Execute PHPStan Code Quality + - name: Code Quality (by PHPStan) run: ./vendor/bin/phpstan analyse - - name: Execute PHPUnit Tests + - name: PHPUnit Tests run: ./vendor/bin/phpunit --testdox diff --git a/Tests/Unit/Domain/Model/PageviewTest.php b/Tests/Unit/Domain/Model/PageviewTest.php index c590f23..16cbc94 100644 --- a/Tests/Unit/Domain/Model/PageviewTest.php +++ b/Tests/Unit/Domain/Model/PageviewTest.php @@ -23,6 +23,7 @@ namespace DanielSiepmann\Tracking\Tests\Unit\Domain\Model; use DanielSiepmann\Tracking\Domain\Model\Pageview; use PHPUnit\Framework\TestCase; +use Prophecy\PhpUnit\ProphecyTrait; use TYPO3\CMS\Core\Site\Entity\SiteLanguage; /** @@ -30,6 +31,8 @@ use TYPO3\CMS\Core\Site\Entity\SiteLanguage; */ class PageviewTest extends TestCase { + use ProphecyTrait; + /** * @test */ diff --git a/Tests/Unit/Domain/Pageview/FactoryTest.php b/Tests/Unit/Domain/Pageview/FactoryTest.php index 521144c..fcf32fc 100644 --- a/Tests/Unit/Domain/Pageview/FactoryTest.php +++ b/Tests/Unit/Domain/Pageview/FactoryTest.php @@ -24,6 +24,8 @@ namespace DanielSiepmann\Tracking\Tests\Unit\Domain\Pageview; use DanielSiepmann\Tracking\Domain\Model\Pageview; use DanielSiepmann\Tracking\Domain\Pageview\Factory; use PHPUnit\Framework\TestCase; +use Prophecy\PhpUnit\ProphecyTrait; +use Prophecy\Prophet; use Psr\Http\Message\ServerRequestInterface; use TYPO3\CMS\Core\Routing\PageArguments; use TYPO3\CMS\Core\Site\Entity\SiteLanguage; @@ -33,6 +35,8 @@ use TYPO3\CMS\Core\Site\Entity\SiteLanguage; */ class FactoryTest extends TestCase { + use ProphecyTrait; + /** * @test */ diff --git a/Tests/Unit/Domain/Repository/PageviewTest.php b/Tests/Unit/Domain/Repository/PageviewTest.php index 05e6923..7f85984 100644 --- a/Tests/Unit/Domain/Repository/PageviewTest.php +++ b/Tests/Unit/Domain/Repository/PageviewTest.php @@ -24,6 +24,7 @@ namespace DanielSiepmann\Tracking\Tests\Unit\Domain\Repository; use DanielSiepmann\Tracking\Domain\Model\Pageview as Model; use DanielSiepmann\Tracking\Domain\Repository\Pageview; use PHPUnit\Framework\TestCase; +use Prophecy\PhpUnit\ProphecyTrait; use TYPO3\CMS\Core\Database\Connection; use TYPO3\CMS\Core\Site\Entity\SiteLanguage; @@ -32,6 +33,8 @@ use TYPO3\CMS\Core\Site\Entity\SiteLanguage; */ class PageviewTest extends TestCase { + use ProphecyTrait; + /** * @test */ diff --git a/Tests/Unit/Middleware/PageviewTest.php b/Tests/Unit/Middleware/PageviewTest.php index 32fb633..5067ff3 100644 --- a/Tests/Unit/Middleware/PageviewTest.php +++ b/Tests/Unit/Middleware/PageviewTest.php @@ -26,6 +26,7 @@ use DanielSiepmann\Tracking\Domain\Repository\Pageview as Repository; use DanielSiepmann\Tracking\Middleware\Pageview; use PHPUnit\Framework\TestCase; use Prophecy\Argument; +use Prophecy\PhpUnit\ProphecyTrait; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -38,6 +39,8 @@ use TYPO3\CMS\Core\Site\Entity\SiteLanguage; */ class PageviewTest extends TestCase { + use ProphecyTrait; + /** * @test */ diff --git a/composer.json b/composer.json index 1a93f84..6a0adb1 100644 --- a/composer.json +++ b/composer.json @@ -33,11 +33,28 @@ "psr/http-server-handler": "^1.0", "psr/http-server-middleware": "^1.0", "symfony/expression-language": "^5.0", - "typo3/cms-core": "^10.3.0" + "typo3/cms-core": "^10.3", + "symfony/console": "^5.0", + "typo3/cms-dashboard": "^10.3" + }, + "require-dev": { + "squizlabs/php_codesniffer": "^3.5", + "phpunit/phpunit": "^9.0", + "phpstan/phpstan": "^0.12.18", + "phpstan/extension-installer": "^1.0", + "jangregor/phpstan-prophecy": "^0.6.2", + "maglnet/composer-require-checker": "^2.1", + "phpspec/prophecy-phpunit": "^2.0" }, "suggest": { "typo3/cms-dashboard": "To make use of provided TYPO3 widgets" }, + "scripts": { + "post-autoload-dump": [ + "mkdir -p .Build/web/typo3conf/ext/", + "[ -L .Build/web/typo3conf/ext/tracking ] || ln -snvf ../../../../. .Build/web/typo3conf/ext/tracking" + ] + }, "extra": { "typo3/cms": { "cms-package-dir": "{$vendor-dir}/typo3/cms", @@ -47,19 +64,5 @@ "branch-alias": { "dev-master": "1.0.x-dev" } - }, - "scripts": { - "post-autoload-dump": [ - "mkdir -p .Build/web/typo3conf/ext/", - "[ -L .Build/web/typo3conf/ext/tracking ] || ln -snvf ../../../../. .Build/web/typo3conf/ext/tracking" - ] - }, - "require-dev": { - "squizlabs/php_codesniffer": "^3.5", - "phpunit/phpunit": "^9.0", - "typo3/cms-dashboard": "^10.3.0", - "phpstan/phpstan": "^0.12.18", - "phpstan/extension-installer": "^1.0", - "jangregor/phpstan-prophecy": "^0.6.2" } } diff --git a/phpcs.xml.dist b/phpcs.xml.dist index 936068c..68b095a 100644 --- a/phpcs.xml.dist +++ b/phpcs.xml.dist @@ -13,4 +13,7 @@ + + /Tests/* + diff --git a/readme.rst b/readme.rst index 42738f6..d795eb6 100644 --- a/readme.rst +++ b/readme.rst @@ -39,6 +39,8 @@ Todos #. Add 100% code coverage (Widgets are missing) +#. Add version matrix to test with multiple PHP versions. + #. Add campaigns if possible (twitter parameter, etc.) #. Add referrer if available.