function SimpleTestTest::stubTest

Test to be run and the results confirmed.

Here we force test results which must match the expected results from confirmStubResults().

1 call to SimpleTestTest::stubTest()
SimpleTestTest::testWebTestRunner in core/modules/simpletest/src/Tests/SimpleTestTest.php
Ensures the tests selected through the web interface are run and displayed.

File

core/modules/simpletest/src/Tests/SimpleTestTest.php, line 154

Class

SimpleTestTest
Tests SimpleTest's web interface: check that the intended tests were run and ensure that test reports display the intended results. Also test SimpleTest's internal browser and APIs implicitly.

Namespace

Drupal\simpletest\Tests

Code

public function stubTest() {
    // Ensure the .htkey file exists since this is only created just before a
    // request. This allows the stub test to make requests. The event does not
    // fire here and drupal_generate_test_ua() can not generate a key for a
    // test in a test since the prefix has changed.
    // @see \Drupal\Core\Test\HttpClientMiddleware\TestHttpClientMiddleware::onBeforeSendRequest()
    // @see drupal_generate_test_ua();
    $test_db = new TestDatabase($this->databasePrefix);
    $key_file = DRUPAL_ROOT . '/' . $test_db->getTestSitePath() . '/.htkey';
    $private_key = Crypt::randomBytesBase64(55);
    $site_path = $this->container
        ->get('site.path');
    file_put_contents($key_file, $private_key);
    // Check to see if runtime assertions are indeed on, if successful this
    // will be the first of sixteen passes asserted in confirmStubResults()
    try {
        // Test with minimum possible arguments to make sure no notice for
        // missing argument is thrown.
        assert(FALSE);
        $this->fail('Runtime assertions are not working.');
    } catch (\AssertionError $e) {
        try {
            // Now test with an error message to ensure it is correctly passed
            // along by the rethrow.
            assert(FALSE, 'Lorem Ipsum');
        } catch (\AssertionError $e) {
            $this->assertEqual($e->getMessage(), 'Lorem Ipsum', 'Runtime assertions Enabled and running.');
        }
    }
    // This causes the second of the sixteen passes asserted in
    // confirmStubResults().
    $this->pass($this->passMessage);
    // The first three fails are caused by enabling a non-existent module in
    // setUp().
    // This causes the fourth of the five fails asserted in
    // confirmStubResults().
    $this->fail($this->failMessage);
    // This causes the third to fifth of the sixteen passes asserted in
    // confirmStubResults().
    $user = $this->drupalCreateUser([
        $this->validPermission,
    ], 'SimpleTestTest');
    // This causes the fifth of the five fails asserted in confirmStubResults().
    $this->drupalCreateUser([
        $this->invalidPermission,
    ]);
    // Test logging in as a user.
    // This causes the sixth to tenth of the sixteen passes asserted in
    // confirmStubResults().
    $this->drupalLogin($user);
    // This causes the eleventh of the sixteen passes asserted in
    // confirmStubResults().
    $this->pass('Test ID is ' . $this->testId . '.');
    // These cause the twelfth to fifteenth of the sixteen passes asserted in
    // confirmStubResults().
    $this->assertTrue(file_exists($site_path . '/settings.testing.php'));
    // Check the settings.testing.php file got included.
    $this->assertTrue(function_exists('simpletest_test_stub_settings_function'));
    // Check that the test-specific service file got loaded.
    $this->assertTrue($this->container
        ->has('site.service.yml'));
    $this->assertIdentical(get_class($this->container
        ->get('cache.backend.database')), 'Drupal\\Core\\Cache\\MemoryBackendFactory');
    // These cause the two exceptions asserted in confirmStubResults().
    // Call trigger_error() without the required argument to trigger an E_WARNING.
    trigger_error();
    // Generates a warning inside a PHP function.
    array_key_exists(NULL, NULL);
    // This causes the sixteenth of the sixteen passes asserted in
    // confirmStubResults().
    $this->assertNothing();
    // This causes the debug message asserted in confirmStubResults().
    debug('Foo', 'Debug', FALSE);
}

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