Issue #338403 by klausi, jhodgdon, grisendo, YesCT, drewish: Use {@inheritdoc} on all class methods (including tests).

8.0.x
Dries 2013-10-21 16:07:49 -04:00
parent 49689cf077
commit e7836c2df4
3 changed files with 54 additions and 14 deletions

View File

@ -195,6 +195,30 @@ abstract class TestBase {
$this->testId = $test_id;
}
/**
* Provides meta information about this test case, such as test name.
*
* @return array
* An array of untranslated strings with the following keys:
* - name: An overview of what is tested by the class; for example, "User
* access rules".
* - description: One sentence describing the test, starting with a verb.
* - group: The human-readable name of the module ("Node", "Statistics"), or
* the human-readable name of the Drupal facility tested (e.g. "Form API"
* or "XML-RPC").
*/
public static function getInfo() {
// PHP does not allow us to declare this method as abstract public static,
// so we simply throw an exception here if this has not been implemented by
// a child class.
throw new \RuntimeException("Sub-class must implement the getInfo method!");
}
/**
* Performs setup tasks before each individual test method is run.
*/
abstract protected function setUp();
/**
* Checks the matching requirements for Test.
*
@ -1018,6 +1042,8 @@ abstract class TestBase {
}
/**
* Performs cleanup tasks after each individual test method has been run.
*
* Deletes created files, database tables, and reverts environment changes.
*
* This method needs to be invoked for both unit and integration tests.

View File

@ -480,8 +480,23 @@ function simpletest_test_get_all() {
foreach ($classes as $class) {
// Test classes need to implement getInfo() to be valid.
if (class_exists($class) && method_exists($class, 'getInfo')) {
$info = call_user_func(array($class, 'getInfo'));
$reflectionClass = new ReflectionClass($class);
// Skip abstract classes and interfaces.
if ($reflectionClass->isInstantiable()) {
$reflectionMethod = new ReflectionMethod($class, 'getInfo');
$declaringClass = $reflectionMethod->getDeclaringClass()->getName();
// Avoid testing intermediate classes which do not implement the
// method.
if ($class == $declaringClass) {
$info = call_user_func(array($class, 'getInfo'));
}
else {
continue;
}
}
else {
continue;
}
// If this test class requires a non-existing module, skip it.
if (!empty($info['dependencies'])) {
foreach ($info['dependencies'] as $module) {

View File

@ -22,22 +22,21 @@ abstract class UnitTestCase extends \PHPUnit_Framework_TestCase {
protected $randomGenerator;
/**
* This method exists to support the simpletest UI runner.
*
* It should eventually be replaced with something native to phpunit.
*
* Also, this method is empty because you can't have an abstract static
* method. Sub-classes should always override it.
* Provides meta information about this test case, such as test name.
*
* @return array
* An array describing the test like so:
* array(
* 'name' => 'Something Test',
* 'description' => 'Tests Something',
* 'group' => 'Something',
* )
* An array of untranslated strings with the following keys:
* - name: An overview of what is tested by the class; for example, "User
* access rules".
* - description: One sentence describing the test, starting with a verb.
* - group: The human-readable name of the module ("Node", "Statistics"), or
* the human-readable name of the Drupal facility tested (e.g. "Form API"
* or "XML-RPC").
*/
public static function getInfo() {
// PHP does not allow us to declare this method as abstract public static,
// so we simply throw an exception here if this has not been implemented by
// a child class.
throw new \RuntimeException("Sub-class must implement the getInfo method!");
}