Skip to content

Commit 1c35b19

Browse files
Abstract the shit out of everything
1 parent 8ed1ab0 commit 1c35b19

File tree

8 files changed

+132
-58
lines changed

8 files changed

+132
-58
lines changed

phpunit.xml.dist

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,5 @@
1818
<include>
1919
<directory>src</directory>
2020
</include>
21-
<exclude>
22-
<file>src/Exitter.php</file>
23-
</exclude>
2421
</source>
2522
</phpunit>

src/ConsoleOutput.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44

55
use RobinIngelbrecht\PHPUnitCoverageTools\MinCoverage\MinCoverageResult;
66
use RobinIngelbrecht\PHPUnitCoverageTools\MinCoverage\ResultStatus;
7+
use RobinIngelbrecht\PHPUnitCoverageTools\Timer\ResourceUsageFormatter;
8+
use RobinIngelbrecht\PHPUnitCoverageTools\Timer\SystemResourceUsageFormatter;
79
use SebastianBergmann\Timer\Duration;
8-
use SebastianBergmann\Timer\ResourceUsageFormatter;
910
use Symfony\Component\Console\Formatter\OutputFormatterStyle;
1011
use Symfony\Component\Console\Helper\Table;
1112
use Symfony\Component\Console\Helper\TableCell;
@@ -18,6 +19,7 @@ final class ConsoleOutput
1819
{
1920
public function __construct(
2021
private readonly OutputInterface $output,
22+
private readonly ResourceUsageFormatter $resourceUsageFormatter,
2123
) {
2224
$this->output->setDecorated(true);
2325
$this->output->getFormatter()->setStyle(
@@ -40,7 +42,10 @@ public function __construct(
4042

4143
public static function create(): self
4244
{
43-
return new self(new \Symfony\Component\Console\Output\ConsoleOutput());
45+
return new self(
46+
output: new \Symfony\Component\Console\Output\ConsoleOutput(),
47+
resourceUsageFormatter: SystemResourceUsageFormatter::create()
48+
);
4449
}
4550

4651
/**
@@ -106,6 +111,6 @@ public function print(array $results, Duration $duration): void
106111
],
107112
]);
108113
$table->render();
109-
$this->output->writeln((new ResourceUsageFormatter())->resourceUsage($duration));
114+
$this->output->writeln($this->resourceUsageFormatter->resourceUsage($duration));
110115
}
111116
}

src/Exitter.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
namespace RobinIngelbrecht\PHPUnitCoverageTools;
44

5+
/**
6+
* @codeCoverageIgnore
7+
*/
58
class Exitter
69
{
710
public function exit(): void
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
namespace RobinIngelbrecht\PHPUnitCoverageTools\Timer;
4+
5+
use SebastianBergmann\Timer\Duration;
6+
7+
interface ResourceUsageFormatter
8+
{
9+
public function resourceUsage(Duration $duration): string;
10+
11+
public function resourceUsageSinceStartOfRequest(): string;
12+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
namespace RobinIngelbrecht\PHPUnitCoverageTools\Timer;
4+
5+
use SebastianBergmann\Timer\Duration;
6+
use SebastianBergmann\Timer\ResourceUsageFormatter as PhpUnitResourceUsageFormatter;
7+
8+
final class SystemResourceUsageFormatter implements ResourceUsageFormatter
9+
{
10+
private function __construct(
11+
private readonly PhpUnitResourceUsageFormatter $resourceUsageFormatter
12+
) {
13+
}
14+
15+
public static function create(): self
16+
{
17+
return new self(new PhpUnitResourceUsageFormatter());
18+
}
19+
20+
/**
21+
* @codeCoverageIgnore
22+
*/
23+
public function resourceUsage(Duration $duration): string
24+
{
25+
return $this->resourceUsageFormatter->resourceUsage($duration);
26+
}
27+
28+
/**
29+
* @codeCoverageIgnore
30+
*/
31+
public function resourceUsageSinceStartOfRequest(): string
32+
{
33+
return $this->resourceUsageFormatter->resourceUsageSinceStartOfRequest();
34+
}
35+
}

src/Timer/SystemTimer.php

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,24 @@ private function __construct(
1212
) {
1313
}
1414

15+
public static function create(): self
16+
{
17+
return new self(new PhpUnitTimer());
18+
}
19+
20+
/**
21+
* @codeCoverageIgnore
22+
*/
1523
public function start(): void
1624
{
1725
$this->timer->start();
1826
}
1927

28+
/**
29+
* @codeCoverageIgnore
30+
*/
2031
public function stop(): Duration
2132
{
2233
return $this->timer->stop();
2334
}
24-
25-
public static function create(): self
26-
{
27-
return new self(new PhpUnitTimer());
28-
}
2935
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
3+
namespace Tests;
4+
5+
use RobinIngelbrecht\PHPUnitCoverageTools\Timer\ResourceUsageFormatter;
6+
use SebastianBergmann\Timer\Duration;
7+
8+
final class FixedResourceUsageFormatter implements ResourceUsageFormatter
9+
{
10+
private function __construct(
11+
private readonly float $usageInMb
12+
) {
13+
}
14+
15+
public static function withUsageInMb(float $usageInMb): self
16+
{
17+
return new self($usageInMb);
18+
}
19+
20+
public function resourceUsage(Duration $duration): string
21+
{
22+
return sprintf(
23+
'Time: %s, Memory: %s MB',
24+
$duration->asString(),
25+
number_format($this->usageInMb, 2, '.', ''),
26+
);
27+
}
28+
29+
public function resourceUsageSinceStartOfRequest(): string
30+
{
31+
return sprintf(
32+
'Time: 00:00.350, Memory: %s MB',
33+
number_format($this->usageInMb, 2, '.', ''),
34+
);
35+
}
36+
}

0 commit comments

Comments
 (0)