Skip to content

Commit dabbb4f

Browse files
Add tests for #1066
1 parent bb7ae65 commit dabbb4f

File tree

7 files changed

+234
-0
lines changed

7 files changed

+234
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?php declare(strict_types=1);
2+
namespace SebastianBergmann\CodeCoverage\TestFixture\Target\Issue1066;
3+
4+
class BaseDummy
5+
{
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php declare(strict_types=1);
2+
namespace SebastianBergmann\CodeCoverage\TestFixture\Target\Issue1066;
3+
4+
class Dummy extends BaseDummy
5+
{
6+
public function method1()
7+
{
8+
return __FUNCTION__;
9+
}
10+
11+
public function method2()
12+
{
13+
return __FUNCTION__;
14+
}
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php declare(strict_types=1);
2+
namespace SebastianBergmann\CodeCoverage\TestFixture\Target\Issue1066;
3+
4+
class Dummy2
5+
{
6+
public function method1()
7+
{
8+
return __FUNCTION__;
9+
}
10+
11+
public function method2()
12+
{
13+
return __FUNCTION__;
14+
}
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php declare(strict_types=1);
2+
namespace SebastianBergmann\CodeCoverage\TestFixture\Target\Issue1066;
3+
4+
class DummyWithTrait extends BaseDummy
5+
{
6+
use SomeTrait; // commented in Case 1
7+
8+
public function method1()
9+
{
10+
return __FUNCTION__;
11+
}
12+
13+
public function method2()
14+
{
15+
return __FUNCTION__;
16+
}
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?php declare(strict_types=1);
2+
namespace SebastianBergmann\CodeCoverage\TestFixture\Target\Issue1066;
3+
4+
trait SomeTrait
5+
{
6+
}

tests/tests/Target/MapBuilderTest.php

+145
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,17 @@
1515
use PHPUnit\Framework\Attributes\CoversClass;
1616
use PHPUnit\Framework\Attributes\DataProvider;
1717
use PHPUnit\Framework\Attributes\Small;
18+
use PHPUnit\Framework\Attributes\Ticket;
1819
use PHPUnit\Framework\TestCase;
1920
use SebastianBergmann\CodeCoverage\Filter;
2021
use SebastianBergmann\CodeCoverage\StaticAnalysis\ParsingFileAnalyser;
2122
use SebastianBergmann\CodeCoverage\TestFixture\Target\ChildClass;
2223
use SebastianBergmann\CodeCoverage\TestFixture\Target\GrandParentClass;
24+
use SebastianBergmann\CodeCoverage\TestFixture\Target\Issue1066\BaseDummy;
25+
use SebastianBergmann\CodeCoverage\TestFixture\Target\Issue1066\Dummy;
26+
use SebastianBergmann\CodeCoverage\TestFixture\Target\Issue1066\Dummy2;
27+
use SebastianBergmann\CodeCoverage\TestFixture\Target\Issue1066\DummyWithTrait;
28+
use SebastianBergmann\CodeCoverage\TestFixture\Target\Issue1066\SomeTrait;
2329
use SebastianBergmann\CodeCoverage\TestFixture\Target\ParentClass;
2430
use SebastianBergmann\CodeCoverage\TestFixture\Target\T1;
2531
use SebastianBergmann\CodeCoverage\TestFixture\Target\T2;
@@ -416,6 +422,145 @@ public function testBuildsMap(array $expected, array $files): void
416422
$this->assertSame($expected, $this->map($files));
417423
}
418424

425+
#[Ticket('https://github.com/sebastianbergmann/php-code-coverage/issues/1066')]
426+
public function testIssue1066(): void
427+
{
428+
$baseDummy = realpath(__DIR__ . '/../../_files/Target/regression/1066/BaseDummy.php');
429+
$dummy = realpath(__DIR__ . '/../../_files/Target/regression/1066/Dummy.php');
430+
$dummy2 = realpath(__DIR__ . '/../../_files/Target/regression/1066/Dummy2.php');
431+
$dummyWithTrait = realpath(__DIR__ . '/../../_files/Target/regression/1066/DummyWithTrait.php');
432+
$someTrait = realpath(__DIR__ . '/../../_files/Target/regression/1066/SomeTrait.php');
433+
434+
$this->assertSame(
435+
[
436+
'namespaces' => [
437+
'SebastianBergmann' => [
438+
$someTrait => range(4, 6),
439+
$baseDummy => range(4, 6),
440+
$dummy => range(4, 15),
441+
$dummy2 => range(4, 15),
442+
$dummyWithTrait => range(4, 17),
443+
],
444+
'SebastianBergmann\CodeCoverage' => [
445+
$someTrait => range(4, 6),
446+
$baseDummy => range(4, 6),
447+
$dummy => range(4, 15),
448+
$dummy2 => range(4, 15),
449+
$dummyWithTrait => range(4, 17),
450+
],
451+
'SebastianBergmann\CodeCoverage\TestFixture' => [
452+
$someTrait => range(4, 6),
453+
$baseDummy => range(4, 6),
454+
$dummy => range(4, 15),
455+
$dummy2 => range(4, 15),
456+
$dummyWithTrait => range(4, 17),
457+
],
458+
'SebastianBergmann\CodeCoverage\TestFixture\Target' => [
459+
$someTrait => range(4, 6),
460+
$baseDummy => range(4, 6),
461+
$dummy => range(4, 15),
462+
$dummy2 => range(4, 15),
463+
$dummyWithTrait => range(4, 17),
464+
],
465+
'SebastianBergmann\CodeCoverage\TestFixture\Target\Issue1066' => [
466+
$someTrait => range(4, 6),
467+
$baseDummy => range(4, 6),
468+
$dummy => range(4, 15),
469+
$dummy2 => range(4, 15),
470+
$dummyWithTrait => range(4, 17),
471+
],
472+
],
473+
'traits' => [
474+
SomeTrait::class => [
475+
$someTrait => range(4, 6),
476+
],
477+
],
478+
'classes' => [
479+
BaseDummy::class => [
480+
$baseDummy => range(4, 6),
481+
],
482+
Dummy::class => [
483+
$dummy => range(4, 15),
484+
$baseDummy => range(4, 6),
485+
],
486+
Dummy2::class => [
487+
$dummy2 => range(4, 15),
488+
],
489+
DummyWithTrait::class => [
490+
$dummyWithTrait => range(4, 17),
491+
$someTrait => range(4, 6),
492+
$baseDummy => range(4, 6),
493+
],
494+
],
495+
'classesThatExtendClass' => [
496+
BaseDummy::class => [
497+
$dummy => range(4, 15),
498+
$dummyWithTrait => range(4, 17),
499+
],
500+
],
501+
'classesThatImplementInterface' => [
502+
],
503+
'methods' => [
504+
Dummy::class . '::method1' => [
505+
$dummy => range(6, 9),
506+
],
507+
Dummy::class . '::method2' => [
508+
$dummy => range(11, 14),
509+
],
510+
Dummy2::class . '::method1' => [
511+
$dummy2 => range(6, 9),
512+
],
513+
Dummy2::class . '::method2' => [
514+
$dummy2 => range(11, 14),
515+
],
516+
DummyWithTrait::class . '::method1' => [
517+
$dummyWithTrait => range(8, 11),
518+
],
519+
DummyWithTrait::class . '::method2' => [
520+
$dummyWithTrait => range(13, 16),
521+
],
522+
],
523+
'functions' => [
524+
],
525+
'reverseLookup' => [
526+
$dummy . ':6' => Dummy::class . '::method1',
527+
$dummy . ':7' => Dummy::class . '::method1',
528+
$dummy . ':8' => Dummy::class . '::method1',
529+
$dummy . ':9' => Dummy::class . '::method1',
530+
$dummy . ':11' => Dummy::class . '::method2',
531+
$dummy . ':12' => Dummy::class . '::method2',
532+
$dummy . ':13' => Dummy::class . '::method2',
533+
$dummy . ':14' => Dummy::class . '::method2',
534+
$dummy2 . ':6' => Dummy2::class . '::method1',
535+
$dummy2 . ':7' => Dummy2::class . '::method1',
536+
$dummy2 . ':8' => Dummy2::class . '::method1',
537+
$dummy2 . ':9' => Dummy2::class . '::method1',
538+
$dummy2 . ':11' => Dummy2::class . '::method2',
539+
$dummy2 . ':12' => Dummy2::class . '::method2',
540+
$dummy2 . ':13' => Dummy2::class . '::method2',
541+
$dummy2 . ':14' => Dummy2::class . '::method2',
542+
$dummyWithTrait . ':8' => DummyWithTrait::class . '::method1',
543+
$dummyWithTrait . ':9' => DummyWithTrait::class . '::method1',
544+
$dummyWithTrait . ':10' => DummyWithTrait::class . '::method1',
545+
$dummyWithTrait . ':11' => DummyWithTrait::class . '::method1',
546+
$dummyWithTrait . ':13' => DummyWithTrait::class . '::method2',
547+
$dummyWithTrait . ':14' => DummyWithTrait::class . '::method2',
548+
$dummyWithTrait . ':15' => DummyWithTrait::class . '::method2',
549+
$dummyWithTrait . ':16' => DummyWithTrait::class . '::method2',
550+
],
551+
],
552+
$this->map(
553+
[
554+
$baseDummy,
555+
$dummy,
556+
$dummy2,
557+
$dummyWithTrait,
558+
$someTrait,
559+
],
560+
),
561+
);
562+
}
563+
419564
/**
420565
* @param list<string> $files
421566
*

tests/tests/Target/MapperTest.php

+30
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
use PHPUnit\Framework\TestCase;
2323
use SebastianBergmann\CodeCoverage\Filter;
2424
use SebastianBergmann\CodeCoverage\StaticAnalysis\ParsingFileAnalyser;
25+
use SebastianBergmann\CodeCoverage\TestFixture\Target\Issue1066\DummyWithTrait;
2526
use SebastianBergmann\CodeCoverage\TestFixture\Target\TargetClass;
2627
use SebastianBergmann\CodeCoverage\TestFixture\Target\TargetEnumeration;
2728
use SebastianBergmann\CodeCoverage\TestFixture\Target\TraitOne;
@@ -276,6 +277,35 @@ public function testCodeUnitTargetingIsCaseInsensitive(): void
276277
);
277278
}
278279

280+
#[Ticket('https://github.com/sebastianbergmann/php-code-coverage/issues/1066')]
281+
public function testIssue1066(): void
282+
{
283+
$baseDummy = realpath(__DIR__ . '/../../_files/Target/regression/1066/BaseDummy.php');
284+
$dummy = realpath(__DIR__ . '/../../_files/Target/regression/1066/Dummy.php');
285+
$dummy2 = realpath(__DIR__ . '/../../_files/Target/regression/1066/Dummy2.php');
286+
$dummyWithTrait = realpath(__DIR__ . '/../../_files/Target/regression/1066/DummyWithTrait.php');
287+
$someTrait = realpath(__DIR__ . '/../../_files/Target/regression/1066/SomeTrait.php');
288+
289+
$mapper = $this->mapper(
290+
[
291+
$baseDummy,
292+
$dummy,
293+
$dummy2,
294+
$dummyWithTrait,
295+
$someTrait,
296+
],
297+
);
298+
299+
$this->assertSame(
300+
[
301+
$dummyWithTrait => range(8, 11),
302+
],
303+
$mapper->mapTarget(
304+
Target::forMethod(DummyWithTrait::class, 'method1'),
305+
),
306+
);
307+
}
308+
279309
/**
280310
* @param list<non-empty-string> $files
281311
*/

0 commit comments

Comments
 (0)