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