Skip to content

Commit 30b1a8d

Browse files
f3l1xpaveljanda
authored andcommitted
QA: upgrade phpstan to v0.12, upgrade github actions, upgrade codestyle
1 parent d8851aa commit 30b1a8d

File tree

9 files changed

+455
-209
lines changed

9 files changed

+455
-209
lines changed

.github/workflows/main.yaml

Lines changed: 287 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,287 @@
1+
name: "build"
2+
3+
on:
4+
pull_request:
5+
paths-ignore:
6+
- ".docs/**"
7+
push:
8+
branches:
9+
- "master"
10+
schedule:
11+
- cron: "0 8 * * 1" # At 08:00 on Monday
12+
13+
env:
14+
extensions: "json, mysqli, pdo_sqlite"
15+
cache-version: "1"
16+
composer-version: "v2"
17+
composer-install: "composer update --no-interaction --no-progress --no-suggest --prefer-dist --prefer-stable"
18+
19+
jobs:
20+
qa:
21+
name: "Quality assurance"
22+
runs-on: "${{ matrix.operating-system }}"
23+
24+
strategy:
25+
matrix:
26+
php-version: ["7.4"]
27+
operating-system: ["ubuntu-latest"]
28+
fail-fast: false
29+
30+
steps:
31+
- name: "Checkout"
32+
uses: "actions/checkout@v2"
33+
34+
- name: "Setup PHP cache environment"
35+
id: "extcache"
36+
uses: "shivammathur/cache-extensions@v1"
37+
with:
38+
php-version: "${{ matrix.php-version }}"
39+
extensions: "${{ env.extensions }}"
40+
key: "${{ env.cache-version }}"
41+
42+
- name: "Cache PHP extensions"
43+
uses: "actions/cache@v2"
44+
with:
45+
path: "${{ steps.extcache.outputs.dir }}"
46+
key: "${{ steps.extcache.outputs.key }}"
47+
restore-keys: "${{ steps.extcache.outputs.key }}"
48+
49+
- name: "Install PHP"
50+
uses: "shivammathur/setup-php@v2"
51+
with:
52+
php-version: "${{ matrix.php-version }}"
53+
extensions: "${{ env.extensions }}"
54+
tools: "composer:${{ env.composer-version }} "
55+
56+
- name: "Setup problem matchers for PHP"
57+
run: 'echo "::add-matcher::${{ runner.tool_cache }}/php.json"'
58+
59+
- name: "Get Composer cache directory"
60+
id: "composercache"
61+
run: 'echo "::set-output name=dir::$(composer config cache-files-dir)"'
62+
63+
- name: "Cache PHP dependencies"
64+
uses: "actions/cache@v2"
65+
with:
66+
path: "${{ steps.composercache.outputs.dir }}"
67+
key: "${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}"
68+
restore-keys: "${{ runner.os }}-composer-"
69+
70+
- name: "Validate Composer"
71+
run: "composer validate"
72+
73+
- name: "Install dependencies"
74+
run: "${{ env.composer-install }}"
75+
76+
- name: "Coding Standard"
77+
run: "make cs"
78+
79+
static-analysis:
80+
name: "Static analysis"
81+
runs-on: "${{ matrix.operating-system }}"
82+
83+
strategy:
84+
matrix:
85+
php-version: ["7.4"]
86+
operating-system: ["ubuntu-latest"]
87+
fail-fast: false
88+
89+
steps:
90+
- name: "Checkout"
91+
uses: "actions/checkout@v2"
92+
93+
- name: "Setup PHP cache environment"
94+
id: "extcache"
95+
uses: "shivammathur/cache-extensions@v1"
96+
with:
97+
php-version: "${{ matrix.php-version }}"
98+
extensions: "${{ env.extensions }}"
99+
key: "${{ env.cache-version }}"
100+
101+
- name: "Cache PHP extensions"
102+
uses: "actions/cache@v2"
103+
with:
104+
path: "${{ steps.extcache.outputs.dir }}"
105+
key: "${{ steps.extcache.outputs.key }}"
106+
restore-keys: "${{ steps.extcache.outputs.key }}"
107+
108+
- name: "Install PHP"
109+
uses: "shivammathur/setup-php@v2"
110+
with:
111+
php-version: "${{ matrix.php-version }}"
112+
extensions: "${{ env.extensions }}"
113+
tools: "composer:${{ env.composer-version }} "
114+
115+
- name: "Setup problem matchers for PHP"
116+
run: 'echo "::add-matcher::${{ runner.tool_cache }}/php.json"'
117+
118+
- name: "Get Composer cache directory"
119+
id: "composercache"
120+
run: 'echo "::set-output name=dir::$(composer config cache-files-dir)"'
121+
122+
- name: "Cache PHP dependencies"
123+
uses: "actions/cache@v2"
124+
with:
125+
path: "${{ steps.composercache.outputs.dir }}"
126+
key: "${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}"
127+
restore-keys: "${{ runner.os }}-composer-"
128+
129+
- name: "Install dependencies"
130+
run: "${{ env.composer-install }}"
131+
132+
- name: "PHPStan"
133+
run: "make phpstan"
134+
135+
tests:
136+
name: "Tests"
137+
runs-on: "${{ matrix.operating-system }}"
138+
139+
services:
140+
mysql:
141+
image: mysql:5.7
142+
env:
143+
MYSQL_ALLOW_EMPTY_PASSWORD: yes
144+
MYSQL_DATABASE: tests
145+
ports:
146+
- 3306:3306
147+
148+
strategy:
149+
matrix:
150+
php-version: ["7.4"]
151+
operating-system: ["ubuntu-latest"]
152+
composer-args: [ "" ]
153+
include:
154+
- php-version: "7.4"
155+
operating-system: "ubuntu-latest"
156+
composer-args: "--prefer-lowest"
157+
- php-version: "8.0"
158+
operating-system: "ubuntu-latest"
159+
composer-args: "--ignore-platform-reqs"
160+
fail-fast: false
161+
162+
continue-on-error: "${{ matrix.php-version == '8.0' }}"
163+
164+
steps:
165+
- name: "Checkout"
166+
uses: "actions/checkout@v2"
167+
168+
- name: "Setup PHP cache environment"
169+
id: "extcache"
170+
uses: "shivammathur/cache-extensions@v1"
171+
with:
172+
php-version: "${{ matrix.php-version }}"
173+
extensions: "${{ env.extensions }}"
174+
key: "${{ env.cache-version }}"
175+
176+
- name: "Cache PHP extensions"
177+
uses: "actions/cache@v2"
178+
with:
179+
path: "${{ steps.extcache.outputs.dir }}"
180+
key: "${{ steps.extcache.outputs.key }}"
181+
restore-keys: "${{ steps.extcache.outputs.key }}"
182+
183+
- name: "Install PHP"
184+
uses: "shivammathur/setup-php@v2"
185+
with:
186+
php-version: "${{ matrix.php-version }}"
187+
extensions: "${{ env.extensions }}"
188+
tools: "composer:${{ env.composer-version }} "
189+
190+
- name: "Setup problem matchers for PHP"
191+
run: 'echo "::add-matcher::${{ runner.tool_cache }}/php.json"'
192+
193+
- name: "Get Composer cache directory"
194+
id: "composercache"
195+
run: 'echo "::set-output name=dir::$(composer config cache-files-dir)"'
196+
197+
- name: "Cache PHP dependencies"
198+
uses: "actions/cache@v2"
199+
with:
200+
path: "${{ steps.composercache.outputs.dir }}"
201+
key: "${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}"
202+
restore-keys: "${{ runner.os }}-composer-"
203+
204+
- name: "Install dependencies"
205+
run: "${{ env.composer-install }} ${{ matrix.composer-args }}"
206+
207+
- name: "Setup problem matchers for PHPUnit"
208+
run: 'echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"'
209+
210+
- name: "Tests"
211+
run: "make tests"
212+
213+
tests-code-coverage:
214+
name: "Tests with code coverage"
215+
runs-on: "${{ matrix.operating-system }}"
216+
217+
services:
218+
mysql:
219+
image: mysql:5.7
220+
env:
221+
MYSQL_ALLOW_EMPTY_PASSWORD: yes
222+
MYSQL_DATABASE: tests
223+
ports:
224+
- 3306:3306
225+
226+
strategy:
227+
matrix:
228+
php-version: ["7.4"]
229+
operating-system: ["ubuntu-latest"]
230+
fail-fast: false
231+
232+
if: "github.event_name == 'push'"
233+
234+
steps:
235+
- name: "Checkout"
236+
uses: "actions/checkout@v2"
237+
238+
- name: "Setup PHP cache environment"
239+
id: "extcache"
240+
uses: "shivammathur/cache-extensions@v1"
241+
with:
242+
php-version: "${{ matrix.php-version }}"
243+
extensions: "${{ env.extensions }}"
244+
key: "${{ env.cache-version }}"
245+
246+
- name: "Cache PHP extensions"
247+
uses: "actions/cache@v2"
248+
with:
249+
path: "${{ steps.extcache.outputs.dir }}"
250+
key: "${{ steps.extcache.outputs.key }}"
251+
restore-keys: "${{ steps.extcache.outputs.key }}"
252+
253+
- name: "Install PHP"
254+
uses: "shivammathur/setup-php@v2"
255+
with:
256+
php-version: "${{ matrix.php-version }}"
257+
extensions: "${{ env.extensions }}"
258+
tools: "composer:${{ env.composer-version }} "
259+
260+
- name: "Setup problem matchers for PHP"
261+
run: 'echo "::add-matcher::${{ runner.tool_cache }}/php.json"'
262+
263+
- name: "Get Composer cache directory"
264+
id: "composercache"
265+
run: 'echo "::set-output name=dir::$(composer config cache-files-dir)"'
266+
267+
- name: "Cache PHP dependencies"
268+
uses: "actions/cache@v2"
269+
with:
270+
path: "${{ steps.composercache.outputs.dir }}"
271+
key: "${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}"
272+
restore-keys: "${{ runner.os }}-composer-"
273+
274+
- name: "Install dependencies"
275+
run: "${{ env.composer-install }}"
276+
277+
- name: "Tests"
278+
run: "make coverage-clover"
279+
280+
- name: "Coveralls.io"
281+
env:
282+
CI_NAME: github
283+
CI: true
284+
COVERALLS_REPO_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
285+
run: |
286+
wget https://github.com/php-coveralls/php-coveralls/releases/download/v2.1.0/php-coveralls.phar
287+
php php-coveralls.phar --verbose --config tests/.coveralls.yml

.github/workflows/main.yml

Lines changed: 0 additions & 69 deletions
This file was deleted.

Makefile

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
.PHONY: install qa cs csf phpstan tests coverage-clover coverage-html
2+
3+
install:
4+
composer update
5+
6+
qa: phpstan cs
7+
8+
cs:
9+
vendor/bin/phpcs --standard=ruleset.xml --extensions=php,phpt --tab-width=4 --ignore=temp -sp src tests
10+
11+
csf:
12+
vendor/bin/phpcbf --standard=ruleset.xml --extensions=php,phpt --tab-width=4 --ignore=temp -sp src tests
13+
14+
phpstan:
15+
vendor/bin/phpstan analyse -l max -c phpstan.neon --memory-limit=512M src
16+
17+
tests:
18+
vendor/bin/tester -s -p php --colors 1 -C tests
19+
20+
coverage-clover:
21+
vendor/bin/tester -s -p phpdbg --colors 1 -C --coverage ./coverage.xml --coverage-src ./src ./tests
22+
23+
coverage-html:
24+
vendor/bin/tester -s -p phpdbg --colors 1 -C --coverage ./coverage.html --coverage-src ./src ./tests

0 commit comments

Comments
 (0)