Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. AnnotationParser.php

function AnnotationParser::forClass

@psalm-param class-string $className

Throws

AnnotationsAreNotSupportedForInternalClassesException

InvalidVersionOperatorException

ReflectionException

Overrides Parser::forClass

File

vendor/phpunit/phpunit/src/Metadata/Parser/AnnotationParser.php, line 52

Class

AnnotationParser
@no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit

Namespace

PHPUnit\Metadata\Parser

Code

public function forClass(string $className) : MetadataCollection {
    assert(class_exists($className));
    $result = [];
    foreach (AnnotationRegistry::getInstance()->forClassName($className)
        ->symbolAnnotations() as $annotation => $values) {
        switch ($annotation) {
            case 'backupGlobals':
                $result[] = Metadata::backupGlobalsOnClass($this->stringToBool($values[0]));
                break;
            case 'backupStaticAttributes':
            case 'backupStaticProperties':
                $result[] = Metadata::backupStaticPropertiesOnClass($this->stringToBool($values[0]));
                break;
            case 'covers':
                foreach ($values as $value) {
                    $value = $this->cleanUpCoversOrUsesTarget($value);
                    $result[] = Metadata::coversOnClass($value);
                }
                break;
            case 'coversDefaultClass':
                foreach ($values as $value) {
                    $result[] = Metadata::coversDefaultClass($value);
                }
                break;
            case 'coversNothing':
                $result[] = Metadata::coversNothingOnClass();
                break;
            case 'doesNotPerformAssertions':
                $result[] = Metadata::doesNotPerformAssertionsOnClass();
                break;
            case 'group':
            case 'ticket':
                foreach ($values as $value) {
                    $result[] = Metadata::groupOnClass($value);
                }
                break;
            case 'large':
                $result[] = Metadata::groupOnClass('large');
                break;
            case 'medium':
                $result[] = Metadata::groupOnClass('medium');
                break;
            case 'preserveGlobalState':
                $result[] = Metadata::preserveGlobalStateOnClass($this->stringToBool($values[0]));
                break;
            case 'runClassInSeparateProcess':
                $result[] = Metadata::runClassInSeparateProcess();
                break;
            case 'runTestsInSeparateProcesses':
                $result[] = Metadata::runTestsInSeparateProcesses();
                break;
            case 'small':
                $result[] = Metadata::groupOnClass('small');
                break;
            case 'testdox':
                $result[] = Metadata::testDoxOnClass($values[0]);
                break;
            case 'uses':
                foreach ($values as $value) {
                    $value = $this->cleanUpCoversOrUsesTarget($value);
                    $result[] = Metadata::usesOnClass($value);
                }
                break;
            case 'usesDefaultClass':
                foreach ($values as $value) {
                    $result[] = Metadata::usesDefaultClass($value);
                }
                break;
        }
    }
    try {
        $result = array_merge($result, $this->parseRequirements(AnnotationRegistry::getInstance()->forClassName($className)
            ->requirements(), 'class'));
    } catch (InvalidVersionRequirementException $e) {
        EventFacade::emitter()->testRunnerTriggeredWarning(sprintf('Class %s is annotated using an invalid version requirement: %s', $className, $e->getMessage()));
    }
    return MetadataCollection::fromArray($result);
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal