ShutdownFunctionTest.php

Same filename in other branches
  1. 10 core/tests/Drupal/KernelTests/Core/Bootstrap/ShutdownFunctionTest.php
  2. 11.x core/tests/Drupal/KernelTests/Core/Bootstrap/ShutdownFunctionTest.php

Namespace

Drupal\KernelTests\Core\Bootstrap

File

core/tests/Drupal/KernelTests/Core/Bootstrap/ShutdownFunctionTest.php

View source
<?php

namespace Drupal\KernelTests\Core\Bootstrap;

use Drupal\KernelTests\KernelTestBase;

/**
 * Tests.
 *
 * @group Bootstrap
 */
class ShutdownFunctionTest extends KernelTestBase {
    
    /**
     * Flag to indicate if ::shutdownOne() called.
     *
     * @var bool
     */
    protected $shutDownOneCalled = FALSE;
    
    /**
     * Flag to indicate if ::shutdownTwo() called.
     *
     * @var bool
     */
    protected $shutDownTwoCalled = FALSE;
    
    /**
     * Tests that shutdown functions can be added by other shutdown functions.
     */
    public function testShutdownFunctionInShutdownFunction() {
        // Ensure there are no shutdown functions registered before starting the
        // test.
        $this->assertEmpty(drupal_register_shutdown_function());
        // Register a shutdown function that, when called, will register another
        // shutdown function.
        drupal_register_shutdown_function([
            $this,
            'shutdownOne',
        ]);
        $this->assertCount(1, drupal_register_shutdown_function());
        // Simulate the Drupal shutdown.
        _drupal_shutdown_function();
        // Test that the expected functions are called.
        $this->assertTrue($this->shutDownOneCalled);
        $this->assertTrue($this->shutDownTwoCalled);
        $this->assertCount(2, drupal_register_shutdown_function());
    }
    
    /**
     * Tests shutdown functions by registering another shutdown function.
     */
    public function shutdownOne() {
        drupal_register_shutdown_function([
            $this,
            'shutdownTwo',
        ]);
        $this->shutDownOneCalled = TRUE;
    }
    
    /**
     * Tests shutdown functions by being registered during shutdown.
     */
    public function shutdownTwo() {
        $this->shutDownTwoCalled = TRUE;
    }

}

Classes

Title Deprecated Summary
ShutdownFunctionTest Tests.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.