27 self::$observerClasses = array_merge(
28 self::getObserverClasses(
'{*/events.xml,events.xml}',
'//observer')
35 foreach (self::$observerClasses as $observerClass) {
46 '%d of observers which not implement \Magento\Framework\Event\ObserverInterface: %s',
57 foreach (self::$observerClasses as $observerClass) {
58 $reflection = (new \ReflectionClass($observerClass));
59 $maxCountMethod = $reflection->getConstructor() ? 2 : 1;
61 if (count($reflection->getMethods(\ReflectionMethod::IS_PUBLIC)) > $maxCountMethod) {
71 '%d of observers have extra public methods: %s',
87 foreach (
Files::init()->getConfigFiles($fileNamePattern, [],
false) as $configFile) {
88 foreach (simplexml_load_file($configFile)->xpath($xpath) as
$observer) {
97 $blacklistFiles = str_replace(
'\\',
'/', realpath(
__DIR__)) .
'/_files/blacklist/observers*.txt';
98 $blacklistExceptions = [];
99 foreach (glob($blacklistFiles) as
$fileName) {
100 $blacklistExceptions = array_merge(
101 $blacklistExceptions,
102 file(
$fileName, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)
is_subclass_of($obj, $className)
static setUpBeforeClass()
defined('TESTS_BP')||define('TESTS_BP' __DIR__
testObserverInterfaceImplementation()
static getObserverClasses($fileNamePattern, $xpath)
testObserverHasNoExtraPublicMethods()