From c38f27f869651ab505e4d445f333790930779823 Mon Sep 17 00:00:00 2001 From: Nicky De Maeyer Date: Tue, 2 Feb 2021 11:03:41 +0100 Subject: [PATCH] feat: add phpstan static analysis --- .github/workflows/build.yml | 12 +++++++++--- composer.json | 4 ++-- src/PhpPact/Consumer/Hook/ContractDownloader.php | 4 ++-- src/PhpPact/Consumer/Listener/PactTestListener.php | 3 +-- src/PhpPact/Standalone/MockService/MockServer.php | 6 +++--- .../MockService/MockServerConfigInterface.php | 12 ++++++++++++ .../Standalone/MockService/MockServerEnvConfig.php | 13 ++++++------- 7 files changed, 35 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3791e897..77b6ed2d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,7 +11,7 @@ jobs: strategy: matrix: php: [ '7.3', '7.4' ] - + steps: - uses: actions/checkout@v2 name: Checkout repository @@ -28,6 +28,12 @@ jobs: - name: Static Code Analysis run: composer lint + - uses: docker://oskarstark/phpstan-ga + env: + REQUIRE_DEV: true + with: + args: analyse src/ --level=5 + test: runs-on: ${{ matrix.operating-system }} needs: @@ -50,10 +56,10 @@ jobs: with: php-version: ${{ matrix.php }} - - name: Copy the inis + - name: Copy the inis if: runner.os == 'Windows' run: Copy-Item -Path .\tests\PhpPact\php.ini -Destination C:\tools\php\ -Force - + - name: Composer install uses: ramsey/composer-install@v1 with: diff --git a/composer.json b/composer.json index 0c128619..115100b3 100644 --- a/composer.json +++ b/composer.json @@ -32,11 +32,11 @@ "amphp/serialization": "^1.0", "amphp/socket": "^1.1.3", "amphp/sync": "^1.4.0", - "guzzlehttp/guzzle": "^7.2.0" + "guzzlehttp/guzzle": "^7.2.0", + "phpunit/phpunit": "^7 | ^8 | ^9" }, "require-dev": { "roave/security-advisories": "dev-master", - "phpunit/phpunit": "^9.4.3", "mockery/mockery": "^1.4.2", "slim/slim": "^4.6", "slim/psr7": "^1.2.0", diff --git a/src/PhpPact/Consumer/Hook/ContractDownloader.php b/src/PhpPact/Consumer/Hook/ContractDownloader.php index 761c09b7..707d084c 100644 --- a/src/PhpPact/Consumer/Hook/ContractDownloader.php +++ b/src/PhpPact/Consumer/Hook/ContractDownloader.php @@ -6,7 +6,7 @@ use PhpPact\Http\ClientInterface; use PhpPact\Http\GuzzleClient; use PhpPact\Standalone\Exception\MissingEnvVariableException; -use PhpPact\Standalone\MockService\MockServerConfigInterface; +use PhpPact\Standalone\MockService\MockServerConfig; use PhpPact\Standalone\MockService\MockServerEnvConfig; use PhpPact\Standalone\MockService\Service\MockServerHttpService; use PHPUnit\Framework\AssertionFailedError; @@ -15,7 +15,7 @@ class ContractDownloader implements AfterLastTestHook { - /** @var MockServerConfigInterface */ + /** @var MockServerConfig */ private $mockServerConfig; /** @var null|ClientInterface */ diff --git a/src/PhpPact/Consumer/Listener/PactTestListener.php b/src/PhpPact/Consumer/Listener/PactTestListener.php index b396f0e4..27f75dd3 100644 --- a/src/PhpPact/Consumer/Listener/PactTestListener.php +++ b/src/PhpPact/Consumer/Listener/PactTestListener.php @@ -7,7 +7,6 @@ use PhpPact\Http\GuzzleClient; use PhpPact\Standalone\Exception\MissingEnvVariableException; use PhpPact\Standalone\MockService\MockServer; -use PhpPact\Standalone\MockService\MockServerConfigInterface; use PhpPact\Standalone\MockService\MockServerEnvConfig; use PhpPact\Standalone\MockService\Service\MockServerHttpService; use PHPUnit\Framework\AssertionFailedError; @@ -34,7 +33,7 @@ class PactTestListener implements TestListener */ private $testSuiteNames; - /** @var MockServerConfigInterface */ + /** @var MockServerEnvConfig */ private $mockServerConfig; /** @var bool */ diff --git a/src/PhpPact/Standalone/MockService/MockServer.php b/src/PhpPact/Standalone/MockService/MockServer.php index 56b18b21..2b0b5a23 100644 --- a/src/PhpPact/Standalone/MockService/MockServer.php +++ b/src/PhpPact/Standalone/MockService/MockServer.php @@ -17,7 +17,7 @@ */ class MockServer { - /** @var MockServerConfigInterface */ + /** @var MockServerConfig */ private $config; /** @var InstallManager */ @@ -32,10 +32,10 @@ class MockServer /** * MockServer constructor. * - * @param MockServerConfigInterface $config + * @param MockServerConfig $config * @param null|MockServerHttpService $httpService */ - public function __construct(MockServerConfigInterface $config, MockServerHttpService $httpService = null) + public function __construct(MockServerConfig $config, MockServerHttpService $httpService = null) { $this->config = $config; $this->installManager = new InstallManager(); diff --git a/src/PhpPact/Standalone/MockService/MockServerConfigInterface.php b/src/PhpPact/Standalone/MockService/MockServerConfigInterface.php index 0074c895..a1066ab3 100644 --- a/src/PhpPact/Standalone/MockService/MockServerConfigInterface.php +++ b/src/PhpPact/Standalone/MockService/MockServerConfigInterface.php @@ -86,4 +86,16 @@ public function setHealthCheckTimeout($timeout): self; * @return int */ public function getHealthCheckTimeout(): int; + + /** + * @param int $seconds + * + * @return MockServerConfigInterface + */ + public function setHealthCheckRetrySec($seconds): self; + + /** + * @return int + */ + public function getHealthCheckRetrySec(): int; } diff --git a/src/PhpPact/Standalone/MockService/MockServerEnvConfig.php b/src/PhpPact/Standalone/MockService/MockServerEnvConfig.php index 70f7299b..529f7d2f 100644 --- a/src/PhpPact/Standalone/MockService/MockServerEnvConfig.php +++ b/src/PhpPact/Standalone/MockService/MockServerEnvConfig.php @@ -19,13 +19,12 @@ class MockServerEnvConfig extends MockServerConfig */ public function __construct() { - $this - ->setHost($this->parseEnv('PACT_MOCK_SERVER_HOST')) - ->setPort((int) $this->parseEnv('PACT_MOCK_SERVER_PORT')) - ->setConsumer($this->parseEnv('PACT_CONSUMER_NAME')) - ->setProvider($this->parseEnv('PACT_PROVIDER_NAME')) - ->setPactDir($this->parseEnv('PACT_OUTPUT_DIR', false)) - ->setCors($this->parseEnv('PACT_CORS', false)); + $this->setHost($this->parseEnv('PACT_MOCK_SERVER_HOST')); + $this->setPort((int) $this->parseEnv('PACT_MOCK_SERVER_PORT')); + $this->setConsumer($this->parseEnv('PACT_CONSUMER_NAME')); + $this->setProvider($this->parseEnv('PACT_PROVIDER_NAME')); + $this->setPactDir($this->parseEnv('PACT_OUTPUT_DIR', false)); + $this->setCors($this->parseEnv('PACT_CORS', false)); if ($logDir = $this->parseEnv('PACT_LOG', false)) { $this->setLog($logDir);