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

Breadcrumb

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

function TestCase::handleDependencies

1 call to TestCase::handleDependencies()
TestCase::run in vendor/phpunit/phpunit/src/Framework/TestCase.php
@internal This method is not covered by the backward compatibility promise for PHPUnit

File

vendor/phpunit/phpunit/src/Framework/TestCase.php, line 1601

Class

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

Namespace

PHPUnit\Framework

Code

private function handleDependencies() : bool {
    if ([] === $this->dependencies || $this->inIsolation) {
        return true;
    }
    $passedTests = PassedTests::instance();
    foreach ($this->dependencies as $dependency) {
        if (!$dependency->isValid()) {
            $this->markErrorForInvalidDependency();
            return false;
        }
        if ($dependency->targetIsClass()) {
            $dependencyClassName = $dependency->getTargetClassName();
            if (!class_exists($dependencyClassName)) {
                $this->markErrorForInvalidDependency($dependency);
                return false;
            }
            if (!$passedTests->hasTestClassPassed($dependencyClassName)) {
                $this->markSkippedForMissingDependency($dependency);
                return false;
            }
            continue;
        }
        $dependencyTarget = $dependency->getTarget();
        if (!$passedTests->hasTestMethodPassed($dependencyTarget)) {
            if (!$this->isCallableTestMethod($dependencyTarget)) {
                $this->markErrorForInvalidDependency($dependency);
            }
            else {
                $this->markSkippedForMissingDependency($dependency);
            }
            return false;
        }
        if ($passedTests->isGreaterThan($dependencyTarget, $this->size())) {
            Event\Facade::emitter()->testConsideredRisky($this->valueObjectForEvents(), 'This test depends on a test that is larger than itself');
            return false;
        }
        $returnValue = $passedTests->returnValue($dependencyTarget);
        if ($dependency->deepClone()) {
            $deepCopy = new DeepCopy();
            $deepCopy->skipUncloneable(false);
            $this->dependencyInput[$dependencyTarget] = $deepCopy->copy($returnValue);
        }
        elseif ($dependency->shallowClone()) {
            $this->dependencyInput[$dependencyTarget] = clone $returnValue;
        }
        else {
            $this->dependencyInput[$dependencyTarget] = $returnValue;
        }
    }
    $this->testValueObjectForEvents = null;
    return true;
}
RSS feed
Powered by Drupal