Skip to content

Commit 48e71c7

Browse files
committed
Add PhpExtensionsQuestion test
1 parent 605726f commit 48e71c7

18 files changed

+173
-43
lines changed

phpunit.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
<report>
2424
<html outputDirectory=".coverage"/>
25-
<text outputFile="php://stdout"/>
25+
<text outputFile="php://stdout" showOnlySummary="true"/>
2626
</report>
2727
</coverage>
2828
</phpunit>

src/Commands/GenerateQuestions/PhpExtensionsQuestion.php

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,37 +21,39 @@ class PhpExtensionsQuestion extends BaseQuestion
2121
*/
2222
public function getAnswer(BaseCommand $command, string $phpVersion): array
2323
{
24-
$supportedExtensions = PhpExtensions::values($phpVersion);
24+
$supported = PhpExtensions::values($phpVersion);
2525

2626
if ($option = $command->option('php-extensions')) {
2727
$extensions = explode(',', $option);
2828

2929
foreach ($extensions as $extension) {
30-
if (in_array($extension, $supportedExtensions)) {
30+
if (in_array($extension, $supported)) {
3131
continue;
3232
}
3333

3434
throw new InvalidOptionValueException("Extension [$extension] is not supported.");
3535
}
3636

37-
return array_intersect($extensions, $supportedExtensions);
37+
return array_intersect($extensions, $supported);
3838
}
3939

40-
$detected = app(PhpExtensionsDetector::class, ['supportedExtensions' => $supportedExtensions])->detect();
40+
$detected = app(PhpExtensionsDetector::class)
41+
->supported($supported)
42+
->detect();
4143

4244
if ($command->option('detect')) {
4345
$detected = explode(',', $detected);
4446

4547
foreach ($detected as $key => $value) {
46-
$detected[$key] = $supportedExtensions[$value];
48+
$detected[$key] = $supported[$value];
4749
}
4850

4951
return $detected;
5052
}
5153

5254
return $command->choice(
5355
question: 'PHP extensions',
54-
choices: $supportedExtensions,
56+
choices: $supported,
5557
default: $detected,
5658
multiple: true,
5759
);

src/Detector/PhpExtensionsDetector.php

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,17 @@
77

88
class PhpExtensionsDetector implements DetectorContract
99
{
10-
/**
11-
* @param string[] $supportedExtensions
12-
*/
13-
public function __construct(private array $supportedExtensions)
10+
private array $supported;
11+
12+
public function supported(array $supported = null): self|array
1413
{
14+
if (is_null($supported)) {
15+
return $this->supported;
16+
}
17+
18+
$this->supported = $supported;
19+
20+
return $this;
1521
}
1622

1723
public function detect(): string|false
@@ -29,9 +35,9 @@ public function detect(): string|false
2935
->flatten()
3036
->unique()
3137
->sort()
32-
->intersect($this->supportedExtensions)
33-
->map(fn (string $extension) => array_search($extension, $this->supportedExtensions))
34-
->filter()
38+
->intersect($this->supported())
39+
->map(fn (string $extension) => array_search($extension, $this->supported()))
40+
->filter(fn ($value) => is_int($value))
3541
->join(',');
3642
}
3743

src/DockerServiceProvider.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,16 @@
66
use BlameButton\LaravelDockerBuilder\Commands\DockerCiCommand;
77
use BlameButton\LaravelDockerBuilder\Commands\DockerGenerateCommand;
88
use BlameButton\LaravelDockerBuilder\Commands\DockerPushCommand;
9+
use BlameButton\LaravelDockerBuilder\Integrations\SupportedPhpExtensions;
910
use Illuminate\Support\ServiceProvider;
1011

1112
class DockerServiceProvider extends ServiceProvider
1213
{
14+
public function register(): void
15+
{
16+
$this->app->singleton(SupportedPhpExtensions::class);
17+
}
18+
1319
public function boot(): void
1420
{
1521
if ($this->app->runningInConsole()) {

tests/Feature/Commands/DockerGenerateCommandTest.php

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,25 @@
77
use Mockery\MockInterface;
88

99
/**
10-
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider::boot()
10+
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider
1111
* @uses \BlameButton\LaravelDockerBuilder\Detector\FileDetector
1212
* @uses \BlameButton\LaravelDockerBuilder\Detector\PhpVersionDetector
1313
* @uses \BlameButton\LaravelDockerBuilder\Detector\PhpExtensionsDetector
1414
* @uses \BlameButton\LaravelDockerBuilder\Detector\NodePackageManagerDetector
1515
* @uses \BlameButton\LaravelDockerBuilder\Detector\NodeBuildToolDetector
1616
* @uses package_path()
17+
* @uses \BlameButton\LaravelDockerBuilder\Commands\BaseCommand::optionalChoice
18+
* @uses \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\PhpVersion
19+
* @uses \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\PhpVersionQuestion
20+
* @uses \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\PhpExtensions
21+
* @uses \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\PhpExtensionsQuestion
22+
* @uses \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\ArtisanOptimizeQuestion
23+
* @uses \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\AlpineQuestion
24+
* @uses \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\NodePackageManager
25+
* @uses \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\NodePackageManagerQuestion
26+
* @uses \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\NodeBuildTool
27+
* @uses \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\NodeBuildToolQuestion
1728
*
18-
* @covers \BlameButton\LaravelDockerBuilder\Commands\BaseCommand::optionalChoice
19-
* @covers \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\PhpVersion
20-
* @covers \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\PhpVersionQuestion
21-
* @covers \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\PhpExtensions
22-
* @covers \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\PhpExtensionsQuestion
23-
* @covers \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\ArtisanOptimizeQuestion
24-
* @covers \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\AlpineQuestion
25-
* @covers \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\NodePackageManager
26-
* @covers \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\NodePackageManagerQuestion
27-
* @covers \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\NodeBuildTool
28-
* @covers \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\NodeBuildToolQuestion
2929
* @covers \BlameButton\LaravelDockerBuilder\Objects\Configuration
3030
* @covers \BlameButton\LaravelDockerBuilder\Commands\DockerGenerateCommand
3131
*/

tests/Unit/Commands/BaseDockerCommandTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use Symfony\Component\Process\Process;
99

1010
/**
11-
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider::boot()
11+
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider
1212
*
1313
* @covers \BlameButton\LaravelDockerBuilder\Commands\BaseDockerCommand
1414
*/

tests/Unit/Commands/DockerBuildCommandTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
use Symfony\Component\Process\Process;
88

99
/**
10-
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider::boot()
11-
* @uses package_path()
10+
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider
11+
* @uses package_path()
1212
*
1313
* @covers \BlameButton\LaravelDockerBuilder\Commands\DockerBuildCommand
1414
*/

tests/Unit/Commands/DockerPushCommandTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
use Symfony\Component\Process\Process;
88

99
/**
10-
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider::boot()
11-
* @uses package_path()
10+
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider
11+
* @uses package_path()
1212
*
1313
* @covers \BlameButton\LaravelDockerBuilder\Commands\DockerPushCommand
1414
*/

tests/Unit/Commands/GenerateQuestions/AlpineQuestionTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use BlameButton\LaravelDockerBuilder\Tests\TestCase;
88

99
/**
10-
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider::boot()
10+
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider
1111
*
1212
* @covers \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\AlpineQuestion
1313
*/

tests/Unit/Commands/GenerateQuestions/ArtisanOptimizeQuestionTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use BlameButton\LaravelDockerBuilder\Tests\TestCase;
88

99
/**
10-
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider::boot()
10+
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider
1111
*
1212
* @covers \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\ArtisanOptimizeQuestion
1313
*/

0 commit comments

Comments
 (0)