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.