diff --git a/core/tests/Drupal/KernelTests/KernelTestBase.php b/core/tests/Drupal/KernelTests/KernelTestBase.php index d07e633..cd12186 100644 --- a/core/tests/Drupal/KernelTests/KernelTestBase.php +++ b/core/tests/Drupal/KernelTests/KernelTestBase.php @@ -248,15 +248,16 @@ protected function checkRequirements() { * A list of requires annotations from either a method or class annotation. */ protected function checkModuleRequirements(array $annotations) { + static::initFileCache(); + // drupal_valid_ua() might not be loaded. + require_once $this->root . '/core/includes/bootstrap.inc'; foreach ($annotations as $requirement) { if (strpos($requirement, 'module ') === 0) { $module = trim(str_replace('module ', '', $requirement)); try { - static::initFileCache(); - // drupal_valid_ua() might not be loaded. - require_once $this->root . '/core/includes/bootstrap.inc'; $this->getExtensionsForModules([$module]); - } catch (\PHPUnit_Framework_Exception $e) { + } + catch (\PHPUnit_Framework_Exception $e) { throw new \PHPUnit_Framework_SkippedTestError("Module $module is required."); } } diff --git a/core/tests/Drupal/KernelTests/KernelTestBaseTest.php b/core/tests/Drupal/KernelTests/KernelTestBaseTest.php index 77b81d8..3fc67cc 100644 --- a/core/tests/Drupal/KernelTests/KernelTestBaseTest.php +++ b/core/tests/Drupal/KernelTests/KernelTestBaseTest.php @@ -206,12 +206,31 @@ public function testRenderWithTheme() { } /** - * This method should be skipped since it requires a module that is not found. - * - * @requires module drupal_dne_module + * @covers ::checkRequirements + * @covers ::checkModuleRequirements */ public function testRequiresModule() { - $this->fail('Running test with missing required module.'); + require __DIR__ . '/../../fixtures/MissingDependentModuleMethodTest.php'; + require __DIR__ . '/../../fixtures/MissingDependentModuleTest.php'; + + $test1 = new MissingDependentModuleMethodTest(); + $test1->setName('testRequiresModule'); + try { + $test1->checkRequirements(); + $this->fail('Requirement on method not found.'); + } + catch (\PHPUnit_Framework_SkippedTestError $e) { + $this->assertEquals('Module drupal_dne_module is required.', $e->getMessage()); + } + + $test2 = new MissingDependentModuleTest(); + try { + $test2->checkRequirements(); + $this->fail('Requirement on class not found.'); + } + catch (\PHPUnit_Framework_SkippedTestError $e) { + $this->assertEquals('Module drupal_dne_module is required.', $e->getMessage()); + } } /** diff --git a/core/tests/fixtures/MissingDependentModuleMethodTest.php b/core/tests/fixtures/MissingDependentModuleMethodTest.php new file mode 100644 index 0000000..6e59af2 --- /dev/null +++ b/core/tests/fixtures/MissingDependentModuleMethodTest.php @@ -0,0 +1,21 @@ +fail('Running test with missing required module.'); + } + +} diff --git a/core/tests/fixtures/MissingDependentModuleTest.php b/core/tests/fixtures/MissingDependentModuleTest.php new file mode 100644 index 0000000..fbd4051 --- /dev/null +++ b/core/tests/fixtures/MissingDependentModuleTest.php @@ -0,0 +1,8 @@ +