[HttpKernel] Remove old container files
This commit is contained in:
parent
aef502b1a2
commit
2e4e6ad626
@ -584,6 +584,11 @@ abstract class Kernel implements KernelInterface, TerminableInterface
|
||||
file_put_contents($this->getCacheDir().'/'.$class.'Compiler.log', null !== $container ? implode("\n", $container->getCompiler()->getLog()) : '');
|
||||
}
|
||||
}
|
||||
|
||||
if ($oldContainer = file_exists($cache->getPath()) ? @include $cache->getPath() : false) {
|
||||
$oldContainer = new \ReflectionClass($oldContainer);
|
||||
}
|
||||
|
||||
$this->dumpContainer($cache, $container, $class, $this->getContainerBaseClass());
|
||||
|
||||
$fresh = false;
|
||||
@ -592,7 +597,15 @@ abstract class Kernel implements KernelInterface, TerminableInterface
|
||||
$this->container = require $cache->getPath();
|
||||
$this->container->set('kernel', $this);
|
||||
|
||||
if (!$fresh && $this->container->has('cache_warmer')) {
|
||||
if ($fresh) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($oldContainer && get_class($this->container) !== $oldContainer->name) {
|
||||
(new Filesystem())->remove(dirname($oldContainer->getFileName()));
|
||||
}
|
||||
|
||||
if ($this->container->has('cache_warmer')) {
|
||||
$this->container->get('cache_warmer')->warmUp($this->container->getParameter('kernel.cache_dir'));
|
||||
}
|
||||
}
|
||||
@ -773,6 +786,9 @@ abstract class Kernel implements KernelInterface, TerminableInterface
|
||||
@chmod($dir.$file, 0666 & ~umask());
|
||||
}
|
||||
|
||||
// track changes made to the container directory
|
||||
$container->fileExists(dirname($dir.$file));
|
||||
|
||||
$cache->write($rootCode, $container->getResources());
|
||||
}
|
||||
|
||||
|
@ -771,13 +771,38 @@ EOF;
|
||||
|
||||
public function testProjectDirExtension()
|
||||
{
|
||||
$kernel = new CustomProjectDirKernel('test', true);
|
||||
$kernel = new CustomProjectDirKernel();
|
||||
$kernel->boot();
|
||||
|
||||
$this->assertSame('foo', $kernel->getProjectDir());
|
||||
$this->assertSame('foo', $kernel->getContainer()->getParameter('kernel.project_dir'));
|
||||
}
|
||||
|
||||
public function testKernelReset()
|
||||
{
|
||||
(new Filesystem())->remove(__DIR__.'/Fixtures/cache');
|
||||
|
||||
$kernel = new CustomProjectDirKernel();
|
||||
$kernel->boot();
|
||||
|
||||
$containerClass = get_class($kernel->getContainer());
|
||||
$containerFile = (new \ReflectionClass($kernel->getContainer()))->getFileName();
|
||||
unlink(__DIR__.'/Fixtures/cache/custom/FixturesCustomDebugProjectContainer.php.meta');
|
||||
|
||||
$kernel = new CustomProjectDirKernel();
|
||||
$kernel->boot();
|
||||
|
||||
$this->assertSame($containerClass, get_class($kernel->getContainer()));
|
||||
$this->assertFileExists($containerFile);
|
||||
unlink(__DIR__.'/Fixtures/cache/custom/FixturesCustomDebugProjectContainer.php.meta');
|
||||
|
||||
$kernel = new CustomProjectDirKernel(function ($container) { $container->register('foo', 'stdClass'); });
|
||||
$kernel->boot();
|
||||
|
||||
$this->assertTrue(get_class($kernel->getContainer()) !== $containerClass);
|
||||
$this->assertFileNotExists($containerFile);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a mock for the BundleInterface.
|
||||
*
|
||||
@ -878,12 +903,14 @@ class TestKernel implements HttpKernelInterface
|
||||
class CustomProjectDirKernel extends Kernel
|
||||
{
|
||||
private $baseDir;
|
||||
private $buildContainer;
|
||||
|
||||
public function __construct()
|
||||
public function __construct(\Closure $buildContainer = null)
|
||||
{
|
||||
parent::__construct('test', false);
|
||||
parent::__construct('custom', true);
|
||||
|
||||
$this->baseDir = 'foo';
|
||||
$this->buildContainer = $buildContainer;
|
||||
}
|
||||
|
||||
public function registerBundles()
|
||||
@ -904,4 +931,11 @@ class CustomProjectDirKernel extends Kernel
|
||||
{
|
||||
return __DIR__.'/Fixtures';
|
||||
}
|
||||
|
||||
protected function build(ContainerBuilder $container)
|
||||
{
|
||||
if ($build = $this->buildContainer) {
|
||||
$build($container);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user