FIX illegalExtensions are optional, requiredExtensions are mandatory with useful error messages.

This commit is contained in:
Damian Mooyman 2017-03-29 10:24:17 +13:00 committed by Sam Minnée
parent 8c486da3df
commit ede549a6ed

View File

@ -352,8 +352,13 @@ class SapphireTest extends PHPUnit_Framework_TestCase
// Remove any illegal extensions that are present // Remove any illegal extensions that are present
foreach ($this->illegalExtensions as $class => $extensions) { foreach ($this->illegalExtensions as $class => $extensions) {
if (!class_exists($class)) {
continue;
}
foreach ($extensions as $extension) { foreach ($extensions as $extension) {
if ($class::has_extension($extension)) { if (!class_exists($extension) || $class::has_extension($extension)) {
continue;
}
if (!isset($this->extensionsToReapply[$class])) { if (!isset($this->extensionsToReapply[$class])) {
$this->extensionsToReapply[$class] = array(); $this->extensionsToReapply[$class] = array();
} }
@ -362,12 +367,19 @@ class SapphireTest extends PHPUnit_Framework_TestCase
$isAltered = true; $isAltered = true;
} }
} }
}
// Add any required extensions that aren't present // Add any required extensions that aren't present
foreach ($this->requiredExtensions as $class => $extensions) { foreach ($this->requiredExtensions as $class => $extensions) {
if (!class_exists($class)) {
$self = static::class;
throw new LogicException("Test {$self} requires class {$class} which doesn't exist");
}
$this->extensionsToRemove[$class] = array(); $this->extensionsToRemove[$class] = array();
foreach ($extensions as $extension) { foreach ($extensions as $extension) {
if (!class_exists($extension)) {
$self = static::class;
throw new LogicException("Test {$self} requires extension {$extension} which doesn't exist");
}
if (!$class::has_extension($extension)) { if (!$class::has_extension($extension)) {
if (!isset($this->extensionsToRemove[$class])) { if (!isset($this->extensionsToRemove[$class])) {
$this->extensionsToReapply[$class] = array(); $this->extensionsToReapply[$class] = array();