Browse Source

Restore all services when a tests failed/finished for better testcase isolation

Signed-off-by: Joas Schilling <coding@schilljs.com>
tags/v11.0RC2
Joas Schilling 7 years ago
parent
commit
9f2d9895a5
No account linked to committer's email address
1 changed files with 26 additions and 3 deletions
  1. 26
    3
      tests/lib/TestCase.php

+ 26
- 3
tests/lib/TestCase.php View File

@@ -102,6 +102,16 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase {
return false;
}

public function restoreAllServices() {
if (!empty($this->services)) {
if (!empty($this->services)) {
foreach ($this->services as $name => $service) {
$this->restoreService($name);
}
}
}
}

protected function getTestTraits() {
$traits = [];
$class = $this;
@@ -132,9 +142,7 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase {

// overwrite the command bus with one we can run ourselves
$this->commandBus = new QueueBus();
\OC::$server->registerService('AsyncCommandBus', function () {
return $this->commandBus;
});
$this->overwriteService('AsyncCommandBus', $this->commandBus);

$traits = $this->getTestTraits();
foreach ($traits as $trait) {
@@ -145,7 +153,22 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase {
}
}

protected function onNotSuccessfulTest($e) {
$this->restoreAllServices();

// restore database connection
if (!$this->IsDatabaseAccessAllowed()) {
\OC::$server->registerService('DatabaseConnection', function () {
return self::$realDatabase;
});
}

parent::onNotSuccessfulTest($e);
}

protected function tearDown() {
$this->restoreAllServices();

// restore database connection
if (!$this->IsDatabaseAccessAllowed()) {
\OC::$server->registerService('DatabaseConnection', function () {

Loading…
Cancel
Save