-
-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #68 from kynx/mezzio-development-config
Added Mezzio development config discovery and injection
- Loading branch information
Showing
17 changed files
with
506 additions
and
234 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Laminas\ComponentInstaller\ConfigDiscovery; | ||
|
||
/** | ||
* @internal | ||
*/ | ||
final class MezzioDevelopmentConfig implements DiscoveryInterface | ||
{ | ||
private const CONFIG_FILE = 'config/development.config.php.dist'; | ||
|
||
private ConfigAggregator $discovery; | ||
|
||
public function __construct(string $projectDirectory = '') | ||
{ | ||
$this->discovery = new ConfigAggregator($projectDirectory, self::CONFIG_FILE); | ||
} | ||
|
||
public function locate(): bool | ||
{ | ||
return $this->discovery->locate(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Laminas\ComponentInstaller\ConfigDiscovery; | ||
|
||
/** | ||
* @internal | ||
*/ | ||
final class MezzioDevelopmentWorkConfig implements DiscoveryInterface | ||
{ | ||
private const CONFIG_FILE = 'config/development.config.php'; | ||
|
||
private ConfigAggregator $discovery; | ||
|
||
public function __construct(string $projectDirectory = '') | ||
{ | ||
$this->discovery = new ConfigAggregator($projectDirectory, self::CONFIG_FILE); | ||
} | ||
|
||
public function locate(): bool | ||
{ | ||
return $this->discovery->locate(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Laminas\ComponentInstaller\Injector; | ||
|
||
/** | ||
* @internal | ||
*/ | ||
final class MezzioDevelopmentConfigInjector implements InjectorInterface | ||
{ | ||
private const CONFIG_FILE = 'config/development.config.php.dist'; | ||
|
||
private ConfigAggregatorInjector $injector; | ||
|
||
public function __construct(string $projectRoot) | ||
{ | ||
$this->injector = new ConfigAggregatorInjector($projectRoot, self::CONFIG_FILE); | ||
} | ||
|
||
public function registersType(int $type): bool | ||
{ | ||
return $this->injector->registersType($type); | ||
} | ||
|
||
public function getTypesAllowed(): array | ||
{ | ||
return $this->injector->getTypesAllowed(); | ||
} | ||
|
||
public function isRegistered(string $package): bool | ||
{ | ||
return $this->injector->isRegistered($package); | ||
} | ||
|
||
public function inject(string $package, int $type): bool | ||
{ | ||
return $this->injector->inject($package, $type); | ||
} | ||
|
||
public function remove(string $package): bool | ||
{ | ||
return $this->injector->remove($package); | ||
} | ||
|
||
public function setApplicationModules(array $modules): InjectorInterface | ||
{ | ||
return $this->injector->setApplicationModules($modules); | ||
} | ||
|
||
public function setModuleDependencies(array $modules): InjectorInterface | ||
{ | ||
return $this->injector->setModuleDependencies($modules); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace Laminas\ComponentInstaller\Injector; | ||
|
||
/** | ||
* @internal | ||
*/ | ||
final class MezzioDevelopmentWorkConfigInjector implements InjectorInterface | ||
{ | ||
private const CONFIG_FILE = 'config/development.config.php'; | ||
|
||
private ConfigAggregatorInjector $injector; | ||
|
||
public function __construct(string $projectRoot) | ||
{ | ||
$this->injector = new ConfigAggregatorInjector($projectRoot, self::CONFIG_FILE); | ||
} | ||
|
||
public function registersType(int $type): bool | ||
{ | ||
return $this->injector->registersType($type); | ||
} | ||
|
||
public function getTypesAllowed(): array | ||
{ | ||
return $this->injector->getTypesAllowed(); | ||
} | ||
|
||
public function isRegistered(string $package): bool | ||
{ | ||
return $this->injector->isRegistered($package); | ||
} | ||
|
||
public function inject(string $package, int $type): bool | ||
{ | ||
return $this->injector->inject($package, $type); | ||
} | ||
|
||
public function remove(string $package): bool | ||
{ | ||
return $this->injector->remove($package); | ||
} | ||
|
||
public function setApplicationModules(array $modules): InjectorInterface | ||
{ | ||
return $this->injector->setApplicationModules($modules); | ||
} | ||
|
||
public function setModuleDependencies(array $modules): InjectorInterface | ||
{ | ||
return $this->injector->setModuleDependencies($modules); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace LaminasTest\ComponentInstaller\ConfigDiscovery; | ||
|
||
use Laminas\ComponentInstaller\ConfigDiscovery\DiscoveryInterface; | ||
use org\bovigo\vfs\vfsStream; | ||
use org\bovigo\vfs\vfsStreamDirectory; | ||
use PHPUnit\Framework\TestCase; | ||
|
||
abstract class AbstractConfigAggregatorTestCase extends TestCase | ||
{ | ||
private vfsStreamDirectory $configDir; | ||
|
||
private DiscoveryInterface $locator; | ||
|
||
/** @var class-string<DiscoveryInterface> */ | ||
protected string $discoveryClass; | ||
|
||
protected string $configFile; | ||
|
||
protected function setUp(): void | ||
{ | ||
$this->configDir = vfsStream::setup('project'); | ||
$this->locator = new $this->discoveryClass( | ||
vfsStream::url('project') | ||
); | ||
} | ||
|
||
public function testAbsenceOfFileReturnsFalseOnLocate(): void | ||
{ | ||
$this->assertFalse($this->locator->locate()); | ||
} | ||
|
||
public function testLocateReturnsFalseWhenFileDoesNotHaveExpectedContents(): void | ||
{ | ||
vfsStream::newFile($this->configFile) | ||
->at($this->configDir) | ||
->setContent('<' . "?php\nreturn [];"); | ||
$this->assertFalse($this->locator->locate()); | ||
} | ||
|
||
/** | ||
* @psalm-return array<string, array{ | ||
* 0: string | ||
* }> | ||
*/ | ||
public function validMezzioConfigContents(): array | ||
{ | ||
// @codingStandardsIgnoreStart | ||
return [ | ||
'fqcn-short-array' => ['<' . "?php\n\$aggregator = new Laminas\ConfigAggregator\ConfigAggregator([\n]);"], | ||
'globally-qualified-short-array' => ['<' . "?php\n\$aggregator = new \Laminas\ConfigAggregator\ConfigAggregator([\n]);"], | ||
'imported-short-array' => ['<' . "?php\n\$aggregator = new ConfigAggregator([\n]);"], | ||
'fqcn-long-array' => ['<' . "?php\n\$aggregator = new Laminas\ConfigAggregator\ConfigAggregator(array(\n));"], | ||
'globally-qualified-long-array' => ['<' . "?php\n\$aggregator = new \Laminas\ConfigAggregator\ConfigAggregator(array(\n));"], | ||
'imported-long-array' => ['<' . "?php\n\$aggregator = new ConfigAggregator(array(\n));"], | ||
]; | ||
// @codingStandardsIgnoreEnd | ||
} | ||
|
||
/** | ||
* @dataProvider validMezzioConfigContents | ||
*/ | ||
public function testLocateReturnsTrueWhenFileExistsAndHasExpectedContent(string $contents): void | ||
{ | ||
vfsStream::newFile($this->configFile) | ||
->at($this->configDir) | ||
->setContent($contents); | ||
|
||
$this->assertTrue($this->locator->locate()); | ||
} | ||
} |
Oops, something went wrong.