diff --git a/src/Eccube/Kernel.php b/src/Eccube/Kernel.php index 8a3b36e1ced..8836f567f17 100644 --- a/src/Eccube/Kernel.php +++ b/src/Eccube/Kernel.php @@ -110,6 +110,16 @@ public function registerBundles(): iterable } } } + + $customizeBundles = $this->getProjectDir().'/app/Customize/Resource/config/bundles.php'; + if (file_exists($customizeBundles)) { + $contents = require $customizeBundles; + foreach ($contents as $class => $envs) { + if (isset($envs['all']) || isset($envs[$this->environment])) { + yield new $class(); + } + } + } } /** diff --git a/tests/Eccube/Tests/CustomizeBundleTest.php b/tests/Eccube/Tests/CustomizeBundleTest.php new file mode 100644 index 00000000000..23bc253a3a2 --- /dev/null +++ b/tests/Eccube/Tests/CustomizeBundleTest.php @@ -0,0 +1,57 @@ +remove(__DIR__.'/../../../app/Customize/Bundle'); + $fs->remove(__DIR__.'/../../../app/Customize/Resource/config/bundles.php'); + + parent::tearDown(); + } + + public function testContainsCustomizeBundle() + { + $fs = new Filesystem(); + $originDir = __DIR__.'/../../Fixtures/Customize'; + $targetDir = __DIR__.'/../../../app/Customize'; + $fs->mirror($originDir, $targetDir); + + $kernel = static::bootKernel(); + $bundleNames = []; + foreach ($kernel->getBundles() as $bundle) { + $bundleNames[] = get_class($bundle); + } + + self::assertContains(CustomizeBundle::class, $bundleNames); + } + + public function testNotContainsCustomizeBundle() + { + $kernel = static::bootKernel(); + $bundleNames = []; + foreach ($kernel->getBundles() as $bundle) { + $bundleNames[] = get_class($bundle); + } + + self::assertNotContains(CustomizeBundle::class, $bundleNames); + } +} diff --git a/tests/Fixtures/Customize/Bundle/CustomizeBundle.php b/tests/Fixtures/Customize/Bundle/CustomizeBundle.php new file mode 100644 index 00000000000..d05b4aaeb6c --- /dev/null +++ b/tests/Fixtures/Customize/Bundle/CustomizeBundle.php @@ -0,0 +1,21 @@ + ['all' => true], +];