Updating workflows and add psalm (#741)

* Updating workflows and add psalm

* Normalize composer

* Fixed CS
This commit is contained in:
Tobias Nyholm 2021-01-30 12:43:12 +01:00 committed by GitHub
parent d8ae00d23c
commit 12ed8aae43
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 255 additions and 77 deletions

16
.github/main.workflow vendored
View File

@ -1,16 +0,0 @@
workflow "Main" {
on = "push"
resolves = ["Roave BC Check", "PHPStan"]
}
action "Roave BC Check" {
uses = "docker://nyholm/roave-bc-check-ga"
secrets = ["GITHUB_TOKEN"]
args = ""
}
action "PHPStan" {
uses = "docker://oskarstark/phpstan-ga"
secrets = ["GITHUB_TOKEN"]
args = "analyse"
}

View File

@ -1,50 +1,54 @@
name: PHP Composer name: Tests
on: on:
push: push: ~
branches: [ 'master', '2.x' ] pull_request: ~
pull_request:
branches: [ 'master', '2.x' ]
jobs: jobs:
build: php:
strategy: strategy:
matrix: matrix:
# https://github.com/marketplace/actions/setup-php-action#github-hosted-runners
operating-system: [ 'ubuntu-latest' ]
php-versions: [ '7.3', '7.4', '8.0' ] php-versions: [ '7.3', '7.4', '8.0' ]
runs-on: ${{ matrix.operating-system }} runs-on: 'ubuntu-latest'
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Validate composer.json and composer.lock
run: composer validate
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2
with: with:
php-version: ${{ matrix.php-versions }} php-version: ${{ matrix.php-versions }}
tools: phpunit, phpstan tools: none
- name: Install dependencies - name: Install dependencies
run: composer install --prefer-dist --no-progress --no-suggest run: composer install --prefer-dist --no-progress --no-suggest
- name: PHP Unit Tests - name: PHP Unit Tests
run: composer test run: vendor/bin/phpunit
- name: PHP Stan lowest:
if: matrix.php-versions == '7.3' name: Lowest deps
run: | runs-on: ubuntu-latest
phpstan --version steps:
phpstan analyse - name: Set up PHP
uses: shivammathur/setup-php@2.9.0
with:
php-version: 7.4
coverage: pcov
- name: Checkout code
uses: actions/checkout@v2
- name: Download dependencies
run: composer update --no-interaction --prefer-dist --optimize-autoloader --prefer-stable --prefer-lowest
- name: Run tests
run: vendor/bin/phpunit --coverage-text --coverage-clover=coverage.xml
- name: Scrunitizer CI - name: Scrunitizer CI
if: matrix.php-versions == '7.3'
run: | run: |
wget https://scrutinizer-ci.com/ocular.phar wget https://scrutinizer-ci.com/ocular.phar
php ocular.phar code-coverage:upload --format=php-clover build/coverage.xml php ocular.phar code-coverage:upload --format=php-clover coverage.xml

88
.github/workflows/static.yml vendored Normal file
View File

@ -0,0 +1,88 @@
name: Static analysis
on:
pull_request: ~
push:
branches:
- master
jobs:
phpstan:
name: PHPStan
runs-on: Ubuntu-20.04
steps:
- name: Set up PHP
uses: shivammathur/setup-php@2.9.0
with:
php-version: '7.4'
coverage: none
- name: Checkout code
uses: actions/checkout@v2
- name: Download dependencies
run: composer update --no-interaction --prefer-dist
- name: PHPStan
uses: docker://oskarstark/phpstan-ga:0.12.70
with:
entrypoint: /composer/vendor/bin/phpstan
args: analyze --no-progress
php-cs-fixer:
name: PHP-CS-Fixer
runs-on: Ubuntu-20.04
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: PHP-CS-Fixer
uses: docker://oskarstark/php-cs-fixer-ga:2.18.2
with:
args: --dry-run --diff-format udiff
psalm:
name: Psalm
runs-on: Ubuntu-20.04
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Psalm
uses: docker://vimeo/psalm-github-actions:4.4.1
with:
args: --no-progress --show-info=false --stats
roave-bc-check:
name: Roave BC Check
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Roave BC Check
uses: docker://nyholm/roave-bc-check-ga
composer-normalize:
name: Composer Normalize
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up PHP
uses: shivammathur/setup-php@2.9.0
with:
php-version: 7.4
coverage: none
tools: composer-normalize
- name: Validate composer.json
run: composer validate
- name: Normalize composer.json
run: composer-normalize --dry-run

2
.gitignore vendored
View File

@ -6,3 +6,5 @@ phpunit.phar
phpunit.xml phpunit.xml
modd.conf modd.conf
.phpunit.result.cache .phpunit.result.cache
.php_cs.cache
.phpunit.result.cache

View File

@ -1,19 +1,35 @@
{ {
"name": "mailgun/mailgun-php", "name": "mailgun/mailgun-php",
"description": "The Mailgun SDK provides methods for all API functions.", "description": "The Mailgun SDK provides methods for all API functions.",
"license": "MIT",
"authors": [
{
"name": "Travis Swientek",
"email": "travis@mailgunhq.com"
}
],
"require": { "require": {
"php": "^7.3 || ^8.0", "php": "^7.3 || ^8.0",
"psr/http-client": "^1.0.1",
"php-http/multipart-stream-builder": "^1.1.2",
"php-http/client-common": "^2.2.1", "php-http/client-common": "^2.2.1",
"php-http/discovery": "^1.9.1", "php-http/discovery": "^1.9.1",
"php-http/multipart-stream-builder": "^1.1.2",
"psr/http-client": "^1.0.1",
"webmozart/assert": "^1.9.1" "webmozart/assert": "^1.9.1"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^9.3", "nyholm/nsa": "^1.2.1",
"php-http/guzzle7-adapter": "^0.1.1",
"nyholm/psr7": "^1.3.1", "nyholm/psr7": "^1.3.1",
"nyholm/nsa": "^1.2.1" "php-http/guzzle7-adapter": "^0.1.1",
"phpunit/phpunit": "^9.3"
},
"suggest": {
"guzzlehttp/psr7": "PSR-7 message implementation that also provides common utility methods",
"php-http/curl-client": "cURL client for PHP-HTTP"
},
"extra": {
"branch-alias": {
"dev-master": "3.0-dev"
}
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
@ -24,25 +40,5 @@
"psr-4": { "psr-4": {
"Mailgun\\Tests\\": "tests/" "Mailgun\\Tests\\": "tests/"
} }
},
"suggest": {
"php-http/curl-client": "cURL client for PHP-HTTP",
"guzzlehttp/psr7": "PSR-7 message implementation that also provides common utility methods"
},
"license": "MIT",
"authors": [
{
"name": "Travis Swientek",
"email": "travis@mailgunhq.com"
}
],
"scripts": {
"test": "vendor/bin/phpunit",
"test-coverage": "vendor/bin/phpunit --coverage-text --coverage-clover=build/coverage.xml"
},
"extra": {
"branch-alias": {
"dev-master": "3.0-dev"
}
} }
} }

88
psalm.baseline.xml Normal file
View File

@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
<files psalm-version="4.4.1@9fd7a7d885b3a216cff8dec9d8c21a132f275224">
<file src="src/Api/Domain.php">
<PossiblyUndefinedVariable occurrences="1">
<code>$params</code>
</PossiblyUndefinedVariable>
<RedundantCondition occurrences="5">
<code>boolean</code>
<code>boolean</code>
<code>nullOrString</code>
<code>stringNotEmpty</code>
<code>stringNotEmpty</code>
</RedundantCondition>
<TypeDoesNotContainNull occurrences="1">
<code>nullOrString</code>
</TypeDoesNotContainNull>
</file>
<file src="src/Api/HttpApi.php">
<ParamNameMismatch occurrences="1">
<code>$class</code>
</ParamNameMismatch>
</file>
<file src="src/Api/Ip.php">
<RedundantCondition occurrences="1">
<code>boolean</code>
</RedundantCondition>
</file>
<file src="src/Api/MailingList.php">
<PossiblyNullArgument occurrences="1">
<code>$this-&gt;hydrator</code>
</PossiblyNullArgument>
<RedundantCondition occurrences="1">
<code>isArray</code>
</RedundantCondition>
</file>
<file src="src/Api/MailingList/Member.php">
<RedundantCondition occurrences="2">
<code>isArray</code>
<code>isArray</code>
</RedundantCondition>
</file>
<file src="src/Api/Message.php">
<RedundantCondition occurrences="3">
<code>nullOrIsArray</code>
<code>string</code>
<code>string</code>
</RedundantCondition>
<TypeDoesNotContainNull occurrences="1">
<code>nullOrIsArray</code>
</TypeDoesNotContainNull>
</file>
<file src="src/Api/Pagination.php">
<PossiblyNullArgument occurrences="4">
<code>$response-&gt;getFirstUrl()</code>
<code>$response-&gt;getLastUrl()</code>
<code>$response-&gt;getNextUrl()</code>
<code>$response-&gt;getPreviousUrl()</code>
</PossiblyNullArgument>
</file>
<file src="src/Api/Route.php">
<RedundantCondition occurrences="1">
<code>isArray</code>
</RedundantCondition>
</file>
<file src="src/Api/Suppression/Complaint.php">
<PossiblyUndefinedVariable occurrences="1">
<code>$params</code>
</PossiblyUndefinedVariable>
</file>
<file src="src/Assert.php">
<MissingImmutableAnnotation occurrences="1">
<code>protected static function reportInvalidArgument($message)</code>
</MissingImmutableAnnotation>
</file>
<file src="src/HttpClient/Plugin/HistoryTrait.php">
<UnrecognizedStatement occurrences="1"/>
</file>
<file src="src/Mailgun.php">
<PossiblyNullArgument occurrences="1">
<code>$this-&gt;apiKey</code>
</PossiblyNullArgument>
</file>
<file src="src/Message/BatchMessage.php">
<PossiblyUndefinedMethod occurrences="1">
<code>getId</code>
</PossiblyUndefinedMethod>
</file>
</files>

16
psalm.xml Normal file
View File

@ -0,0 +1,16 @@
<?xml version="1.0"?>
<psalm
errorLevel="3"
resolveFromConfigFile="true"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://getpsalm.org/schema/config"
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
errorBaseline="psalm.baseline.xml"
>
<projectFiles>
<directory name="src" />
<ignoreFiles>
<directory name="vendor" />
</ignoreFiles>
</projectFiles>
</psalm>

View File

@ -19,7 +19,7 @@ class UnsubscribeTest extends BaseModelTest
/** /**
* @test * @test
*/ */
public function it_gets_empty_list_of_tags_by_default() public function itGetsEmptyListOfTagsByDefault()
{ {
$unsubscribe = Unsubscribe::create(['address' => 'dummy@mailgun.net']); $unsubscribe = Unsubscribe::create(['address' => 'dummy@mailgun.net']);
$this->assertEquals([], $unsubscribe->getTags()); $this->assertEquals([], $unsubscribe->getTags());
@ -28,7 +28,7 @@ class UnsubscribeTest extends BaseModelTest
/** /**
* @test * @test
*/ */
public function it_gets_tags() public function itGetsTags()
{ {
$tags = ['tag1', 'tag2']; $tags = ['tag1', 'tag2'];
$unsubscribe = Unsubscribe::create(['address' => 'dummy@mailgun.net', 'tags' => $tags]); $unsubscribe = Unsubscribe::create(['address' => 'dummy@mailgun.net', 'tags' => $tags]);