78 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			78 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								declare(strict_types=1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace Drupal\KernelTests;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @coversDefaultClass \Drupal\KernelTests\KernelTestBase
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @group PHPUnit
							 | 
						||
| 
								 | 
							
								 * @group Test
							 | 
						||
| 
								 | 
							
								 * @group KernelTests
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								class KernelTestBaseShutdownTest extends KernelTestBase {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * Indicates which shutdown functions are expected to be called.
							 | 
						||
| 
								 | 
							
								   *
							 | 
						||
| 
								 | 
							
								   * @var array
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								  protected $expectedShutdownCalled;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * Indicates which shutdown functions have been called.
							 | 
						||
| 
								 | 
							
								   *
							 | 
						||
| 
								 | 
							
								   * @var array
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								  protected static $shutdownCalled;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * {@inheritdoc}
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								  protected function setUp(): void {
							 | 
						||
| 
								 | 
							
								    // Initialize static variable prior to testing.
							 | 
						||
| 
								 | 
							
								    self::$shutdownCalled = [];
							 | 
						||
| 
								 | 
							
								    parent::setUp();
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * @covers ::assertPostConditions
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								  public function testShutdownFunction(): void {
							 | 
						||
| 
								 | 
							
								    $this->expectedShutdownCalled = ['shutdownFunction', 'shutdownFunction2'];
							 | 
						||
| 
								 | 
							
								    drupal_register_shutdown_function([$this, 'shutdownFunction']);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * @covers ::assertPostConditions
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								  public function testNoShutdownFunction(): void {
							 | 
						||
| 
								 | 
							
								    $this->expectedShutdownCalled = [];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * Registers that this shutdown function has been called.
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								  public function shutdownFunction(): void {
							 | 
						||
| 
								 | 
							
								    self::$shutdownCalled[] = 'shutdownFunction';
							 | 
						||
| 
								 | 
							
								    drupal_register_shutdown_function([$this, 'shutdownFunction2']);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * Registers that this shutdown function has been called.
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								  public function shutdownFunction2(): void {
							 | 
						||
| 
								 | 
							
								    self::$shutdownCalled[] = 'shutdownFunction2';
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * {@inheritdoc}
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								  protected function assertPostConditions(): void {
							 | 
						||
| 
								 | 
							
								    parent::assertPostConditions();
							 | 
						||
| 
								 | 
							
								    $this->assertSame($this->expectedShutdownCalled, self::$shutdownCalled);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 |