ClassExistenceResourceTest.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Symfony\Component\Config\Tests\Resource;
  11. use PHPUnit\Framework\TestCase;
  12. use Symfony\Component\Config\Resource\ClassExistenceResource;
  13. use Symfony\Component\Config\Tests\Fixtures\BadParent;
  14. use Symfony\Component\Config\Tests\Fixtures\Resource\ConditionalClass;
  15. class ClassExistenceResourceTest extends TestCase
  16. {
  17. public function testToString()
  18. {
  19. $res = new ClassExistenceResource('BarClass');
  20. $this->assertSame('BarClass', (string) $res);
  21. }
  22. public function testGetResource()
  23. {
  24. $res = new ClassExistenceResource('BarClass');
  25. $this->assertSame('BarClass', $res->getResource());
  26. }
  27. public function testIsFreshWhenClassDoesNotExist()
  28. {
  29. $res = new ClassExistenceResource('Symfony\Component\Config\Tests\Fixtures\BarClass');
  30. $this->assertTrue($res->isFresh(time()));
  31. eval(<<<EOF
  32. namespace Symfony\Component\Config\Tests\Fixtures;
  33. class BarClass
  34. {
  35. }
  36. EOF
  37. );
  38. $this->assertFalse($res->isFresh(time()));
  39. }
  40. public function testIsFreshWhenClassExists()
  41. {
  42. $res = new ClassExistenceResource('Symfony\Component\Config\Tests\Resource\ClassExistenceResourceTest');
  43. $this->assertTrue($res->isFresh(time()));
  44. }
  45. public function testExistsKo()
  46. {
  47. spl_autoload_register($autoloader = function ($class) use (&$loadedClass) { $loadedClass = $class; });
  48. try {
  49. $res = new ClassExistenceResource('MissingFooClass');
  50. $this->assertTrue($res->isFresh(0));
  51. $this->assertSame('MissingFooClass', $loadedClass);
  52. $loadedClass = 123;
  53. $res = new ClassExistenceResource('MissingFooClass', false);
  54. $this->assertSame(123, $loadedClass);
  55. } finally {
  56. spl_autoload_unregister($autoloader);
  57. }
  58. }
  59. public function testBadParentWithTimestamp()
  60. {
  61. $res = new ClassExistenceResource(BadParent::class, false);
  62. $this->assertTrue($res->isFresh(time()));
  63. }
  64. /**
  65. * @expectedException \ReflectionException
  66. * @expectedExceptionMessage Class Symfony\Component\Config\Tests\Fixtures\MissingParent not found
  67. */
  68. public function testBadParentWithNoTimestamp()
  69. {
  70. $res = new ClassExistenceResource(BadParent::class, false);
  71. $res->isFresh(0);
  72. }
  73. public function testConditionalClass()
  74. {
  75. $res = new ClassExistenceResource(ConditionalClass::class, false);
  76. $this->assertFalse($res->isFresh(0));
  77. }
  78. }