Skip to content

Commit 3eadf73

Browse files
beberleifabpot
authored andcommitted
[DoctrineBundle] Stop the cache warmer if proxies are auto-generated anyways.
1 parent 5700be7 commit 3eadf73

File tree

2 files changed

+39
-2
lines changed

2 files changed

+39
-2
lines changed

src/Symfony/Bundle/DoctrineBundle/CacheWarmer/ProxyCacheWarmer.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ public function isOptional()
4949

5050
public function warmUp($cacheDir)
5151
{
52+
// we need the directory no matter the proxy cache generation strategy.
5253
$proxyCacheDir = $this->container->getParameter('doctrine.orm.proxy_dir');
5354
if (!file_exists($proxyCacheDir)) {
5455
if (false === @mkdir($proxyCacheDir, 0777, true)) {
@@ -58,6 +59,11 @@ public function warmUp($cacheDir)
5859
throw new \RuntimeException(sprintf('Doctrine Proxy directory (%s) is not writeable for the current system user.', $proxyCacheDir));
5960
}
6061

62+
// if proxys are autogenerated we don't need to generate them in the cache warmer.
63+
if ($this->container->getParameter('doctrine.orm.auto_generate_proxy_classes') === true) {
64+
return;
65+
}
66+
6167
$entityManagers = $this->container->getParameter('doctrine.orm.entity_managers');
6268
foreach ($entityManagers AS $entityManagerName) {
6369
$em = $this->container->get(sprintf('doctrine.orm.%s_entity_manager', $entityManagerName));

src/Symfony/Bundle/DoctrineBundle/Tests/CacheWarmer/ProxyCacheWarmerTest.php

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,25 @@ public function testWarmCache()
2828
$testManager = $this->createTestEntityManager(array(
2929
__DIR__ . "/../DependencyInjection/Fixtures/Bundles/AnnotationsBundle/Entity")
3030
);
31+
3132
$container = $this->getMock('Symfony\Component\DependencyInjection\Container');
3233
$container->expects($this->at(0))
3334
->method('getParameter')
3435
->with($this->equalTo('doctrine.orm.proxy_dir'))
3536
->will($this->returnValue(sys_get_temp_dir()));
3637
$container->expects($this->at(1))
38+
->method('getParameter')
39+
->with($this->equalTo('doctrine.orm.auto_generate_proxy_classes'))
40+
->will($this->returnValue( false ));
41+
$container->expects($this->at(2))
3742
->method('getParameter')
3843
->with($this->equalTo('doctrine.orm.entity_managers'))
3944
->will($this->returnValue(array('default', 'foo')));
40-
$container->expects($this->at(2))
45+
$container->expects($this->at(3))
4146
->method('get')
4247
->with($this->equalTo('doctrine.orm.default_entity_manager'))
4348
->will($this->returnValue($testManager));
44-
$container->expects($this->at(3))
49+
$container->expects($this->at(4))
4550
->method('get')
4651
->with($this->equalTo('doctrine.orm.foo_entity_manager'))
4752
->will($this->returnValue($testManager));
@@ -50,6 +55,32 @@ public function testWarmCache()
5055
$cacheWarmer->warmUp(sys_get_temp_dir());
5156
}
5257

58+
public function testSkipWhenProxiesAreAutoGenerated()
59+
{
60+
$testManager = $this->createTestEntityManager(array(
61+
__DIR__ . "/../DependencyInjection/Fixtures/Bundles/AnnotationsBundle/Entity")
62+
);
63+
64+
$container = $this->getMock('Symfony\Component\DependencyInjection\Container');
65+
$container->expects($this->at(0))
66+
->method('getParameter')
67+
->with($this->equalTo('doctrine.orm.proxy_dir'))
68+
->will($this->returnValue(sys_get_temp_dir()));
69+
$container->expects($this->at(1))
70+
->method('getParameter')
71+
->with($this->equalTo('doctrine.orm.auto_generate_proxy_classes'))
72+
->will($this->returnValue( true ));
73+
$container->expects($this->at(2))
74+
->method('getParameter')
75+
->with($this->equalTo('assertion'))
76+
->will($this->returnValue( true ));
77+
78+
$cacheWarmer = new ProxyCacheWarmer($container);
79+
$cacheWarmer->warmUp(sys_get_temp_dir());
80+
81+
$container->getParameter('assertion'); // check that the assertion is really the third call.
82+
}
83+
5384
public function testProxyCacheWarmingIsNotOptional()
5485
{
5586
$container = $this->getMock('Symfony\Component\DependencyInjection\Container');

0 commit comments

Comments
 (0)