CrossCheckTest.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. * (c) Fabien Potencier <fabien.potencier@symfony-project.com>
  5. *
  6. * For the full copyright and license information, please view the LICENSE
  7. * file that was distributed with this source code.
  8. */
  9. namespace Symfony\Tests\Components\DependencyInjection;
  10. use Symfony\Components\DependencyInjection\Builder;
  11. class CrossCheckTest extends \PHPUnit_Framework_TestCase
  12. {
  13. static protected $fixturesPath;
  14. static public function setUpBeforeClass()
  15. {
  16. self::$fixturesPath = __DIR__.'/../../../../fixtures/Symfony/Components/DependencyInjection/';
  17. require_once self::$fixturesPath.'/includes/classes.php';
  18. require_once self::$fixturesPath.'/includes/foo.php';
  19. }
  20. /**
  21. * @dataProvider crossCheckLoadersDumpers
  22. */
  23. public function testCrossCheck($fixture, $type)
  24. {
  25. $loaderClass = 'Symfony\\Components\\DependencyInjection\\Loader\\'.ucfirst($type).'FileLoader';
  26. $dumperClass = 'Symfony\\Components\\DependencyInjection\\Dumper\\'.ucfirst($type).'Dumper';
  27. $container1 = new Builder();
  28. $loader1 = new $loaderClass($container1);
  29. $loader1->load(self::$fixturesPath.'/'.$type.'/'.$fixture);
  30. $container1->setParameter('path', self::$fixturesPath.'/includes');
  31. $dumper = new $dumperClass($container1);
  32. $tmp = tempnam('sf_service_container', 'sf');
  33. file_put_contents($tmp, $dumper->dump());
  34. $container2 = new Builder();
  35. $loader2 = new $loaderClass($container2);
  36. $loader2->load($tmp);
  37. $container2->setParameter('path', self::$fixturesPath.'/includes');
  38. unlink($tmp);
  39. $this->assertEquals(serialize($container2), serialize($container1), 'loading a dump from a previously loaded container returns the same container');
  40. $this->assertEquals($container2->getParameters(), $container1->getParameters(), '->getParameters() returns the same value for both containers');
  41. $services1 = array();
  42. foreach ($container1 as $id => $service) {
  43. $services1[$id] = serialize($service);
  44. }
  45. $services2 = array();
  46. foreach ($container2 as $id => $service) {
  47. $services2[$id] = serialize($service);
  48. }
  49. unset($services1['service_container'], $services2['service_container']);
  50. $this->assertEquals($services2, $services1, 'Iterator on the containers returns the same services');
  51. }
  52. public function crossCheckLoadersDumpers()
  53. {
  54. return array(
  55. array('services1.xml', 'xml'),
  56. array('services2.xml', 'xml'),
  57. array('services6.xml', 'xml'),
  58. array('services8.xml', 'xml'),
  59. array('services9.xml', 'xml'),
  60. array('services1.yml', 'yaml'),
  61. array('services2.yml', 'yaml'),
  62. array('services6.yml', 'yaml'),
  63. array('services8.yml', 'yaml'),
  64. array('services9.yml', 'yaml'),
  65. );
  66. }
  67. }