ParallelTestingTest.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace Illuminate\Tests\Testing;
  3. use Illuminate\Container\Container;
  4. use Illuminate\Testing\ParallelTesting;
  5. use PHPUnit\Framework\TestCase;
  6. class ParallelTestingTest extends TestCase
  7. {
  8. protected function setUp(): void
  9. {
  10. parent::setUp();
  11. Container::setInstance(new Container);
  12. $_SERVER['LARAVEL_PARALLEL_TESTING'] = 1;
  13. }
  14. /**
  15. * @dataProvider callbacks
  16. */
  17. public function testCallbacks($callback)
  18. {
  19. $parallelTesting = new ParallelTesting(Container::getInstance());
  20. $caller = 'call'.ucfirst($callback).'Callbacks';
  21. $state = false;
  22. $parallelTesting->{$caller}($this);
  23. $this->assertFalse($state);
  24. $parallelTesting->{$callback}(function ($token, $testCase = null) use ($callback, &$state) {
  25. if (in_array($callback, ['setUpTestCase', 'tearDownTestCase'])) {
  26. $this->assertSame($this, $testCase);
  27. } else {
  28. $this->assertNull($testCase);
  29. }
  30. $this->assertSame('1', $token);
  31. $state = true;
  32. });
  33. $parallelTesting->{$caller}($this);
  34. $this->assertFalse($state);
  35. $parallelTesting->resolveTokenUsing(function () {
  36. return '1';
  37. });
  38. $parallelTesting->{$caller}($this);
  39. $this->assertTrue($state);
  40. }
  41. public function testOptions()
  42. {
  43. $parallelTesting = new ParallelTesting(Container::getInstance());
  44. $this->assertFalse($parallelTesting->option('recreate_databases'));
  45. $this->assertFalse($parallelTesting->option('without_databases'));
  46. $parallelTesting->resolveOptionsUsing(function ($option) {
  47. return $option === 'recreate_databases';
  48. });
  49. $this->assertFalse($parallelTesting->option('recreate_caches'));
  50. $this->assertFalse($parallelTesting->option('without_databases'));
  51. $this->assertTrue($parallelTesting->option('recreate_databases'));
  52. $parallelTesting->resolveOptionsUsing(function ($option) {
  53. return $option === 'without_databases';
  54. });
  55. $this->assertTrue($parallelTesting->option('without_databases'));
  56. }
  57. public function testToken()
  58. {
  59. $parallelTesting = new ParallelTesting(Container::getInstance());
  60. $this->assertFalse($parallelTesting->token());
  61. $parallelTesting->resolveTokenUsing(function () {
  62. return '1';
  63. });
  64. $this->assertSame('1', $parallelTesting->token());
  65. }
  66. public function callbacks()
  67. {
  68. return [
  69. ['setUpProcess'],
  70. ['setUpTestCase'],
  71. ['setUpTestDatabase'],
  72. ['tearDownTestCase'],
  73. ['tearDownProcess'],
  74. ];
  75. }
  76. public function tearDown(): void
  77. {
  78. parent::tearDown();
  79. Container::setInstance(null);
  80. unset($_SERVER['LARAVEL_PARALLEL_TESTING']);
  81. }
  82. }