Issue #2526412 by neclimdul, hussainweb, Fabianx: Remove Singleton hack in registerWithSymfonyGuesser

8.0.x
Alex Pott 2015-07-15 17:01:55 +01:00
parent 6f78b08dea
commit 2873e81736
2 changed files with 6 additions and 14 deletions

View File

@ -118,21 +118,9 @@ class MimeTypeGuesser implements MimeTypeGuesserInterface {
* @see \Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser
*/
public static function registerWithSymfonyGuesser(ContainerInterface $container) {
// Reset state, so we do not store more and more services during test runs.
SymfonyMimeTypeGuesser::reset();
$singleton = SymfonyMimeTypeGuesser::getInstance();
// @todo Remove once Symfony adds a reset() method.
$property = new \ReflectionProperty(get_class($singleton), 'guessers');
$property->setAccessible(TRUE);
if (isset($singleton->_beforeDrupalRegistration)) {
// Reset state, else we store more and more services during test runs.
$property->setValue($singleton, $singleton->_beforeDrupalRegistration);
} else {
// Store original state before we register our services.
$singleton->_beforeDrupalRegistration = $property->getValue($singleton);
}
//$singleton->reset();
$singleton->register($container->get('file.mime_type.guesser'));
}

View File

@ -37,14 +37,18 @@ class MimeTypeGuesserTest extends UnitTestCase {
$container = new ContainerBuilder();
$container->set('file.mime_type.guesser', new MimeTypeGuesser(new StreamWrapperManager()));
MimeTypeGuesser::registerWithSymfonyGuesser($container);
$symfony_guesser = SymfonyMimeTypeGuesser::getInstance();
$guessers = $this->readAttribute($symfony_guesser, 'guessers');
$this->assertSame($container->get('file.mime_type.guesser'), $guessers[0]);
$this->assertInstanceOf('Drupal\Core\File\MimeType\MimeTypeGuesser', $guessers[0]);
$count = count($guessers);
$container = new ContainerBuilder();
$container->set('file.mime_type.guesser', new MimeTypeGuesser(new StreamWrapperManager()));
MimeTypeGuesser::registerWithSymfonyGuesser($container);
$symfony_guesser = SymfonyMimeTypeGuesser::getInstance();
$guessers = $this->readAttribute($symfony_guesser, 'guessers');
$this->assertSame($container->get('file.mime_type.guesser'), $guessers[0]);
$this->assertInstanceOf('Drupal\Core\File\MimeType\MimeTypeGuesser', $guessers[0]);
$new_count = count($guessers);
$this->assertEquals($count, $new_count, 'The count of mime type guessers remains the same after container re-init.');