Skip to content

Commit 88aeadb

Browse files
authored
[Optimization] Add coverage reporting & some tests (#25)
* add coverage * upload coverage * Add test * add tests * Add @Covers * remove unless @Covers * Add test * Add test * add badge * up version
1 parent 551390b commit 88aeadb

36 files changed

+183
-17
lines changed

.github/workflows/testing.yml

+16-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ jobs:
1414
steps:
1515
- uses: actions/checkout@v2
1616

17+
- name: Setup PHP with PECL extension
18+
uses: shivammathur/setup-php@v2
19+
with:
20+
php-version: '8.1'
21+
extensions: xdebug
22+
1723
- name: Validate composer.json
1824
run: composer validate
1925

@@ -45,4 +51,13 @@ jobs:
4551
run: composer deptrac
4652

4753
- name: Run Tests
48-
run: composer test
54+
env:
55+
XDEBUG_MODE: coverage
56+
run: composer test-coverage
57+
58+
- name: Upload to Codecov
59+
uses: codecov/codecov-action@v2
60+
with:
61+
token: ${{ secrets.CODECOV_TOKEN }}
62+
files: ./coverage.xml
63+
verbose: true

README.MD

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Merge Request Linter
22

33
![Testing](https://github.com/ArtARTs36/php-merge-request-linter/workflows/Testing/badge.svg?branch=master)
4+
[![codecov](https://codecov.io/gh/ArtARTs36/php-merge-request-linter/branch/master/graph/badge.svg?token=OGRWW81OHH)](https://codecov.io/gh/ArtARTs36/php-merge-request-linter)
45
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
56
![Latest Version](https://img.shields.io/packagist/v/artarts36/merge-request-linter)
67
![Total Downloads](https://poser.pugx.org/artarts36/merge-request-linter/d/total.svg)

composer.json

+3
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@
4747
"test": [
4848
"./vendor/bin/phpunit -v --coverage-text --colors=always --configuration phpunit.xml"
4949
],
50+
"test-coverage": [
51+
"./vendor/bin/phpunit -v --coverage-text --colors=always --configuration phpunit.xml --coverage-clover ./coverage.xml"
52+
],
5053
"stat-analyse": [
5154
"./vendor/bin/phpstan analyse -l 8 src"
5255
],

src/Condition/Evaluator/DefaultEvaluators.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ final class DefaultEvaluators
1111
EqualsEvaluator::NAME => EqualsEvaluator::class,
1212
EqualsEvaluator::SYMBOL => EqualsEvaluator::class,
1313
StartsEvaluator::NAME => StartsEvaluator::class,
14-
NotStartsOperator::NAME => NotStartsOperator::class,
14+
NotStartsEvaluator::NAME => NotStartsEvaluator::class,
1515
HasEvaluator::NAME => HasEvaluator::class,
1616
EndsEvaluator::NAME => EndsEvaluator::class,
1717
NotEndsEvaluator::NAME => NotEndsEvaluator::class,
@@ -26,7 +26,7 @@ final class DefaultEvaluators
2626
ContainsEvaluator::NAME => ContainsEvaluator::class,
2727
NotEqualsEvaluator::NAME => NotEqualsEvaluator::class,
2828
NotEqualsEvaluator::SYMBOL => NotEqualsEvaluator::class,
29-
NotHasOperator::NAME => NotHasOperator::class,
29+
NotHasEvaluator::NAME => NotHasEvaluator::class,
3030
EqualsAnyEvaluator::NAME => EqualsAnyEvaluator::class,
3131
HasAnyEvaluator::NAME => HasAnyEvaluator::class,
3232
CountEqualsEvaluator::NAME => CountEqualsEvaluator::class,

src/Condition/Evaluator/NotHasOperator.php renamed to src/Condition/Evaluator/NotHasEvaluator.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* Check if an array not contains some value.
1010
*/
1111
#[EvaluatesGenericType]
12-
class NotHasOperator extends ScalarEvaluator
12+
class NotHasEvaluator extends ScalarEvaluator
1313
{
1414
public const NAME = 'notHas';
1515

src/Condition/Evaluator/NotStartsOperator.php renamed to src/Condition/Evaluator/NotStartsEvaluator.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
/**
99
* Check if a string not contains a prefix.
1010
*/
11-
class NotStartsOperator extends StringEvaluator
11+
class NotStartsEvaluator extends StringEvaluator
1212
{
1313
public const NAME = 'notStarts';
1414

src/Console/Application/Application.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
class Application extends \Symfony\Component\Console\Application
1414
{
15-
public const VERSION = '0.7.7';
15+
public const VERSION = '0.7.8';
1616

1717
public function __construct(
1818
private readonly MetricManager $metrics,

src/Request/Data/Author.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
use ArtARTs36\MergeRequestLinter\Condition\Evaluator\LengthMinOperator;
1212
use ArtARTs36\MergeRequestLinter\Condition\Evaluator\NotEndsEvaluator;
1313
use ArtARTs36\MergeRequestLinter\Condition\Evaluator\NotEqualsEvaluator;
14-
use ArtARTs36\MergeRequestLinter\Condition\Evaluator\NotStartsOperator;
14+
use ArtARTs36\MergeRequestLinter\Condition\Evaluator\NotStartsEvaluator;
1515
use ArtARTs36\MergeRequestLinter\Condition\Evaluator\StartsEvaluator;
1616

1717
class Author
@@ -22,7 +22,7 @@ public function __construct(
2222
LengthMinOperator::class,
2323
LengthMaxEvaluator::class,
2424
StartsEvaluator::class,
25-
NotStartsOperator::class,
25+
NotStartsEvaluator::class,
2626
EndsEvaluator::class,
2727
NotEndsEvaluator::class,
2828
ContainsEvaluator::class,

src/Request/Data/MergeRequest.php

+6-6
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
use ArtARTs36\MergeRequestLinter\Condition\Evaluator\LengthMinOperator;
1919
use ArtARTs36\MergeRequestLinter\Condition\Evaluator\NotEndsEvaluator;
2020
use ArtARTs36\MergeRequestLinter\Condition\Evaluator\NotEqualsEvaluator;
21-
use ArtARTs36\MergeRequestLinter\Condition\Evaluator\NotHasOperator;
22-
use ArtARTs36\MergeRequestLinter\Condition\Evaluator\NotStartsOperator;
21+
use ArtARTs36\MergeRequestLinter\Condition\Evaluator\NotHasEvaluator;
22+
use ArtARTs36\MergeRequestLinter\Condition\Evaluator\NotStartsEvaluator;
2323
use ArtARTs36\MergeRequestLinter\Condition\Evaluator\StartsEvaluator;
2424
use ArtARTs36\MergeRequestLinter\Contracts\DataStructure\Map;
2525
use ArtARTs36\MergeRequestLinter\Support\DataStructure\Set;
@@ -38,7 +38,7 @@ public function __construct(
3838
LengthMinOperator::class,
3939
LengthMaxEvaluator::class,
4040
StartsEvaluator::class,
41-
NotStartsOperator::class,
41+
NotStartsEvaluator::class,
4242
EndsEvaluator::class,
4343
NotEndsEvaluator::class,
4444
ContainsEvaluator::class,
@@ -51,7 +51,7 @@ public function __construct(
5151
LengthMinOperator::class,
5252
LengthMaxEvaluator::class,
5353
StartsEvaluator::class,
54-
NotStartsOperator::class,
54+
NotStartsEvaluator::class,
5555
EndsEvaluator::class,
5656
NotEndsEvaluator::class,
5757
ContainsEvaluator::class,
@@ -67,7 +67,7 @@ public function __construct(
6767
CountNotEqualsEvaluator::class,
6868
CountEqualsAnyEvaluator::class,
6969
HasEvaluator::class,
70-
NotHasOperator::class,
70+
NotHasEvaluator::class,
7171
HasAnyEvaluator::class,
7272
])]
7373
public Set $labels,
@@ -92,7 +92,7 @@ public function __construct(
9292
LengthMinOperator::class,
9393
LengthMaxEvaluator::class,
9494
StartsEvaluator::class,
95-
NotStartsOperator::class,
95+
NotStartsEvaluator::class,
9696
EndsEvaluator::class,
9797
NotEndsEvaluator::class,
9898
ContainsEvaluator::class,

tests/Unit/Condition/Evaluator/ContainsEvaluatorTest.php

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public function providerForTestEvaluate(): array
2020

2121
/**
2222
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\ContainsEvaluator::evaluate
23+
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\ContainsEvaluator::doEvaluate
2324
* @dataProvider providerForTestEvaluate
2425
*/
2526
public function testEvaluate(mixed $propertyValue, mixed $value, bool $expected): void
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace ArtARTs36\MergeRequestLinter\Tests\Unit\Condition\Evaluator;
4+
5+
use ArtARTs36\MergeRequestLinter\Condition\Evaluator\EndsEvaluator;
6+
use ArtARTs36\MergeRequestLinter\Tests\Mocks\MockEvaluatingSubject;
7+
use ArtARTs36\MergeRequestLinter\Tests\TestCase;
8+
9+
class EndsEvaluatorTest extends TestCase
10+
{
11+
public function providerForTestEvaluate(): array
12+
{
13+
return [
14+
['Artem', 'em', true],
15+
['Artem1', 'em', false],
16+
];
17+
}
18+
19+
/**
20+
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\EndsEvaluator::evaluate
21+
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\EndsEvaluator::doEvaluate
22+
* @dataProvider providerForTestEvaluate
23+
*/
24+
public function testEvaluate(string $propertyValue, mixed $value, bool $expected): void
25+
{
26+
$operator = new EndsEvaluator($value);
27+
28+
self::assertEquals($expected, $operator->evaluate(new MockEvaluatingSubject($propertyValue)));
29+
}
30+
}

tests/Unit/Condition/Evaluator/EqualsEvaluatorTest.php

-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ public function providerForTestEvaluate(): array
1919
/**
2020
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\EqualsEvaluator::evaluate
2121
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\EqualsEvaluator::doEvaluate
22-
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\EqualsEvaluator::__construct
2322
* @dataProvider providerForTestEvaluate
2423
*/
2524
public function testEvaluate(string $propertyValue, string $value, bool $expected): void

tests/Unit/Condition/Evaluator/GteEvaluatorTest.php

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public function providerForEvaluate(): array
2222

2323
/**
2424
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\GteEvaluator::doEvaluate
25+
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\GteEvaluator::evaluate
2526
* @dataProvider providerForEvaluate
2627
*/
2728
public function testEvaluate(int|float $propertyValue, int|float $value, bool $expected): void

tests/Unit/Condition/Evaluator/HasEvaluatorTest.php

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public function providerForTestEvaluate(): array
1818

1919
/**
2020
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\HasEvaluator::evaluate
21+
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\HasEvaluator::doEvaluate
2122
* @dataProvider providerForTestEvaluate
2223
*/
2324
public function testEvaluate(array $propertyValue, mixed $value, bool $expected): void

tests/Unit/Condition/Evaluator/LengthMaxEvaluatorTest.php

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public function providerForEvaluate(): array
2626

2727
/**
2828
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\LengthMaxEvaluator::evaluate
29+
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\LengthMaxEvaluator::doEvaluate
2930
* @dataProvider providerForEvaluate
3031
*/
3132
public function testEvaluate(string $propertyValue, int $value, bool $expected): void

tests/Unit/Condition/Evaluator/LengthMinEvaluatorTest.php

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public function providerForEvaluate(): array
2626

2727
/**
2828
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\LengthMinOperator::evaluate
29+
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\LengthMinOperator::doEvaluateF
2930
* @dataProvider providerForEvaluate
3031
*/
3132
public function testEvaluate(string $propertyValue, int $value, bool $expected): void

tests/Unit/Condition/Evaluator/LteEvaluatorTest.php

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public function providerForEvaluate(): array
2121
}
2222

2323
/**
24+
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\LteEvaluator::evaluate
2425
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\LteEvaluator::doEvaluate
2526
* @dataProvider providerForEvaluate
2627
*/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace ArtARTs36\MergeRequestLinter\Tests\Unit\Condition\Evaluator;
4+
5+
use ArtARTs36\MergeRequestLinter\Condition\Evaluator\NotEndsEvaluator;
6+
use ArtARTs36\MergeRequestLinter\Tests\Mocks\MockEvaluatingSubject;
7+
use ArtARTs36\MergeRequestLinter\Tests\TestCase;
8+
9+
class NotEndsEvaluatorTest extends TestCase
10+
{
11+
public function providerForTestEvaluate(): array
12+
{
13+
return [
14+
['Artem', 'em', false],
15+
['Artem1', 'em', true],
16+
];
17+
}
18+
19+
/**
20+
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\NotEndsEvaluator::evaluate
21+
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\NotEndsEvaluator::doEvaluate
22+
* @dataProvider providerForTestEvaluate
23+
*/
24+
public function testEvaluate(string $propertyValue, mixed $value, bool $expected): void
25+
{
26+
$operator = new NotEndsEvaluator($value);
27+
28+
self::assertEquals($expected, $operator->evaluate(new MockEvaluatingSubject($propertyValue)));
29+
}
30+
}

tests/Unit/Condition/Evaluator/NotEqualsEvaluatorTest.php

-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ public function providerForTestEvaluate(): array
2727
/**
2828
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\NotEqualsEvaluator::evaluate
2929
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\NotEqualsEvaluator::doEvaluate
30-
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\NotEqualsEvaluator::__construct
3130
* @dataProvider providerForTestEvaluate
3231
*/
3332
public function testEvaluate(string $propertyValue, string $value, bool $expected): void
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace ArtARTs36\MergeRequestLinter\Tests\Unit\Condition\Evaluator;
4+
5+
use ArtARTs36\MergeRequestLinter\Condition\Evaluator\NotHasEvaluator;
6+
use ArtARTs36\MergeRequestLinter\Tests\Mocks\MockEvaluatingSubject;
7+
use ArtARTs36\MergeRequestLinter\Tests\TestCase;
8+
9+
class NotHasEvaluatorTest extends TestCase
10+
{
11+
public function providerForTestEvaluate(): array
12+
{
13+
return [
14+
[[1, 2], 1, false],
15+
[[1, 2], 3, true],
16+
];
17+
}
18+
19+
/**
20+
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\HasEvaluator::evaluate
21+
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\HasEvaluator::doEvaluate
22+
* @dataProvider providerForTestEvaluate
23+
*/
24+
public function testEvaluate(array $propertyValue, mixed $value, bool $expected): void
25+
{
26+
$operator = new NotHasEvaluator($value);
27+
28+
self::assertEquals($expected, $operator->evaluate(new MockEvaluatingSubject($propertyValue)));
29+
}
30+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace ArtARTs36\MergeRequestLinter\Tests\Unit\Condition\Evaluator;
4+
5+
use ArtARTs36\MergeRequestLinter\Condition\Evaluator\NotStartsEvaluator;
6+
use ArtARTs36\MergeRequestLinter\Tests\Mocks\MockEvaluatingSubject;
7+
use ArtARTs36\MergeRequestLinter\Tests\TestCase;
8+
9+
final class NotStartsEvaluatorTest extends TestCase
10+
{
11+
public function providerForTestEvaluate(): array
12+
{
13+
return [
14+
['babcd', 'ab', true],
15+
['abcd', 'ab', false],
16+
];
17+
}
18+
19+
/**
20+
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\NotStartsEvaluator::evaluate
21+
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\NotStartsEvaluator::doEvaluate
22+
* @dataProvider providerForTestEvaluate
23+
*/
24+
public function testEvaluate(mixed $propertyValue, string $value, bool $expected): void
25+
{
26+
$operator = new NotStartsEvaluator($value);
27+
28+
self::assertTrue($expected === $operator->evaluate(new MockEvaluatingSubject($propertyValue)));
29+
}
30+
}

tests/Unit/Condition/Evaluator/StartsEvaluatorTest.php

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public function providerForTestEvaluate(): array
1717
}
1818

1919
/**
20+
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\StartsEvaluator::evaluate
2021
* @covers \ArtARTs36\MergeRequestLinter\Condition\Evaluator\StartsEvaluator::doEvaluate
2122
* @dataProvider providerForTestEvaluate
2223
*/

tests/Unit/Rule/ChangedFilesLimitRuleTest.php

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public function providerForTestLint(): array
3131
/**
3232
* @dataProvider providerForTestLint
3333
* @covers \ArtARTs36\MergeRequestLinter\Rule\ChangedFilesLimitRule::lint
34+
* @covers \ArtARTs36\MergeRequestLinter\Rule\ChangedFilesLimitRule::doLint
3435
* @covers \ArtARTs36\MergeRequestLinter\Rule\ChangedFilesLimitRule::__construct
3536
*/
3637
public function testLint(MergeRequest $request, int $limit, bool $expected): void

tests/Unit/Rule/DescriptionContainsLinkOfAnyDomainsRuleTest.php

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public function providerForLint(): array
3030
/**
3131
* @dataProvider providerForLint
3232
* @covers \ArtARTs36\MergeRequestLinter\Rule\DescriptionContainsLinkOfAnyDomainsRule::lint
33+
* @covers \ArtARTs36\MergeRequestLinter\Rule\DescriptionContainsLinkOfAnyDomainsRule::doLint
3334
* @covers \ArtARTs36\MergeRequestLinter\Rule\DescriptionContainsLinkOfAnyDomainsRule::__construct
3435
*/
3536
public function testLint(MergeRequest $request, array $domains, bool $hasNotes): void

tests/Unit/Rule/DescriptionContainsLinksOfAllDomainsRuleTest.php

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public function providerForTestLint(): array
3737
/**
3838
* @dataProvider providerForTestLint
3939
* @covers \ArtARTs36\MergeRequestLinter\Rule\DescriptionContainsLinksOfAllDomainsRule::lint
40+
* @covers \ArtARTs36\MergeRequestLinter\Rule\DescriptionContainsLinksOfAllDomainsRule::doLint
4041
* @covers \ArtARTs36\MergeRequestLinter\Rule\DescriptionContainsLinksOfAllDomainsRule::__construct
4142
*/
4243
public function testLint(MergeRequest $request, array $domains, bool $hasNotes): void

tests/Unit/Rule/DescriptionNotEmptyRuleTest.php

+2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public function providerForTestLint(): array
2727
/**
2828
* @dataProvider providerForTestLint
2929
* @covers \ArtARTs36\MergeRequestLinter\Rule\DescriptionNotEmptyRule::lint
30+
* @covers \ArtARTs36\MergeRequestLinter\Rule\DescriptionNotEmptyRule::doLint
31+
* @covers \ArtARTs36\MergeRequestLinter\Rule\DescriptionNotEmptyRule::__construct
3032
*/
3133
public function testLint(MergeRequest $request, bool $hasNotes): void
3234
{

0 commit comments

Comments
 (0)