Issue #2282673 by stevepurkiss, ParisLiakos, mgifford: Add a PHPunit test for not using Drupal\Core code in Drupal\Component.
parent
f98cf1f60c
commit
914b78de24
|
@ -24,7 +24,7 @@ class PluginID extends AnnotationBase {
|
|||
public $value;
|
||||
|
||||
/**
|
||||
* Implements \Drupal\Core\Annotation\AnnotationInterface::get().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get() {
|
||||
return array(
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* @file
|
||||
* Definition of Drupal\Core\Plugin\Exception\InvalidDecoratedMethod.
|
||||
* Contains \Drupal\Component\Plugin\Exception\InvalidDecoratedMethod.
|
||||
*/
|
||||
|
||||
namespace Drupal\Component\Plugin\Exception;
|
||||
|
|
|
@ -20,7 +20,7 @@ class SortArray {
|
|||
* Note that the sorting is by the 'weight' array element, not by the render
|
||||
* element property '#weight'.
|
||||
*
|
||||
* Callback for uasort() used in various functions.
|
||||
* Callback for uasort().
|
||||
*
|
||||
* @param array $a
|
||||
* First item for comparison. The compared items should be associative
|
||||
|
@ -39,7 +39,7 @@ class SortArray {
|
|||
/**
|
||||
* Sorts a structured array by '#weight' property.
|
||||
*
|
||||
* Callback for uasort() within \Drupal\Core\Render\Element::children().
|
||||
* Callback for uasort().
|
||||
*
|
||||
* @param array $a
|
||||
* First item for comparison. The compared items should be associative
|
||||
|
@ -57,7 +57,7 @@ class SortArray {
|
|||
/**
|
||||
* Sorts a structured array by 'title' key (no # prefix).
|
||||
*
|
||||
* Callback for uasort() within system_admin_index().
|
||||
* Callback for uasort().
|
||||
*
|
||||
* @param array $a
|
||||
* First item for comparison. The compared items should be associative arrays
|
||||
|
@ -75,9 +75,7 @@ class SortArray {
|
|||
/**
|
||||
* Sorts a structured array by '#title' property.
|
||||
*
|
||||
* Callback for uasort() within:
|
||||
* - system_modules()
|
||||
* - theme_simpletest_test_table()
|
||||
* Callback for uasort().
|
||||
*
|
||||
* @param array $a
|
||||
* First item for comparison. The compared items should be associative arrays
|
||||
|
|
|
@ -288,9 +288,8 @@ class UrlHelper {
|
|||
* to being output to an HTML attribute value. It is often called as part of
|
||||
* check_url() or Drupal\Component\Utility\Xss::filter(), but those functions
|
||||
* return an HTML-encoded string, so this function can be called independently
|
||||
* when the output needs to be a plain-text string for passing to t(), _l(),
|
||||
* Drupal\Core\Template\Attribute, or another function that will call
|
||||
* \Drupal\Component\Utility\String::checkPlain() separately.
|
||||
* when the output needs to be a plain-text string for passing to functions
|
||||
* that will call \Drupal\Component\Utility\String::checkPlain() separately.
|
||||
*
|
||||
* @param string $uri
|
||||
* A plain-text URI that might contain dangerous protocols.
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\Tests\Component\DrupalComponentTest.
|
||||
*/
|
||||
|
||||
namespace Drupal\Tests\Component;
|
||||
|
||||
use Drupal\Tests\UnitTestCase;
|
||||
|
||||
/**
|
||||
* General tests for \Drupal\Component that can't go anywhere else.
|
||||
*
|
||||
* @group Component
|
||||
*/
|
||||
class DrupalComponentTest extends UnitTestCase {
|
||||
|
||||
/**
|
||||
* Tests that classes in Component do not use any Core class.
|
||||
*/
|
||||
public function testNoCoreInComponent() {
|
||||
$component_path = dirname(substr(__DIR__, 0, -strlen(__NAMESPACE__))) . '/lib/Drupal/Component';
|
||||
foreach ($this->findPhpClasses($component_path) as $class) {
|
||||
$this->assertNoCoreUsage($class);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that classes in Component Tests do not use any Core class.
|
||||
*/
|
||||
public function testNoCoreInComponentTests() {
|
||||
$component_path = dirname(substr(__DIR__, 0, -strlen(__NAMESPACE__))) . '/tests/Drupal/Tests/Component';
|
||||
foreach ($this->findPhpClasses($component_path) as $class) {
|
||||
$this->assertNoCoreUsage($class);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches a directory recursively for PHP classes.
|
||||
*
|
||||
* @param string $dir
|
||||
* The full path to the directory that should be checked.
|
||||
*
|
||||
* @return array
|
||||
* An array of class paths.
|
||||
*/
|
||||
protected function findPhpClasses($dir) {
|
||||
$classes = array();
|
||||
foreach (new \DirectoryIterator($dir) as $file) {
|
||||
if ($file->isDir() && !$file->isDot()) {
|
||||
$classes = array_merge($classes, $this->findPhpClasses($file->getPathname()));
|
||||
}
|
||||
elseif ($file->getExtension() == 'php') {
|
||||
$classes[] = $file->getPathname();
|
||||
}
|
||||
}
|
||||
|
||||
return $classes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that the given class is not using any class from Core namespace.
|
||||
*
|
||||
* @param string $class_path
|
||||
* The full path to the class that should be checked.
|
||||
*/
|
||||
protected function assertNoCoreUsage($class_path) {
|
||||
foreach (new \SplFileObject($class_path) as $line_number => $line) {
|
||||
// Allow linking to Core files with @see docs. Its harmless and boosts DX
|
||||
// because even outside projects can treat those links as examples.
|
||||
if ($line && (strpos($line, '@see ') === FALSE)) {
|
||||
$this->assertSame(FALSE, strpos($line, 'Drupal\\Core'), "Illegal reference to 'Drupal\\Core' namespace in $class_path at line $line_number");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -8,29 +8,12 @@
|
|||
namespace Drupal\Tests\Component\PhpStorage;
|
||||
|
||||
use Drupal\Tests\UnitTestCase;
|
||||
use Drupal\Core\PhpStorage\PhpStorageFactory;
|
||||
|
||||
/**
|
||||
* Base test for PHP storages.
|
||||
*/
|
||||
abstract class PhpStorageTestBase extends UnitTestCase {
|
||||
|
||||
/**
|
||||
* The storage factory object.
|
||||
*
|
||||
* @var \Drupal\Component\PhpStorage\PhpStorageFactory
|
||||
*/
|
||||
protected $storageFactory;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
$this->storageFactory = new PhpStorageFactory();
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert that a PHP storage's load/save/delete operations work.
|
||||
*/
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
|
||||
namespace Drupal\Tests\Component\Plugin;
|
||||
|
||||
use Drupal\Core\PhpStorage\PhpStorageFactory;
|
||||
use Drupal\Tests\UnitTestCase;
|
||||
|
||||
/**
|
||||
|
|
|
@ -12,7 +12,6 @@ use Drupal\Component\Uuid\UuidInterface;
|
|||
use Drupal\Component\Uuid\Com;
|
||||
use Drupal\Component\Uuid\Pecl;
|
||||
use Drupal\Component\Uuid\Php;
|
||||
use Drupal\Core\DependencyInjection\ContainerBuilder;
|
||||
use Drupal\Tests\UnitTestCase;
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue