packages/requirements/tests/Unit/Test/RunnerExtensionTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Test;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\Small;
9use PHPUnit\Framework\Attributes\UsesClass;
10use PHPUnit\Framework\TestCase;
11use Requirements\Test\RunnerConfig;
12use Requirements\Test\RunnerExtension;
13use Requirements\Test\TestResult;
14use Tests\Fake\CountingRunner;
15use Tests\Fake\ProjectDirectory;
16
17#[CoversClass(RunnerExtension::class)]
18#[UsesClass(RunnerConfig::class)]
19#[UsesClass(TestResult::class)]
20#[Small]
21final class RunnerExtensionTest extends TestCase
22{
23 public function testRunReportsTheResultOfTheTarget(): void
24 {
25 $project = new ProjectDirectory();
26 $runner = new CountingRunner();
27 $config = new RunnerConfig('custom', ['example'], $project->directory);
28 $result = $runner->run($config, 'shared');
29 self::assertSame(['status' => 'passed', 'tests' => 1, 'message' => ''], $result->toArray());
30 self::assertSame(['status' => 'passed', 'tests' => 0, 'message' => ''], $runner->run($config, 'empty')->toArray());
31 self::assertSame("shared\nempty\n", $project->read('executions.txt'));
32 }
33}
34