]> source.dussan.org Git - nextcloud-server.git/commitdiff
Restore all services when a tests failed/finished for better testcase isolation 1845/head
authorJoas Schilling <coding@schilljs.com>
Thu, 20 Oct 2016 13:15:54 +0000 (15:15 +0200)
committerJoas Schilling <coding@schilljs.com>
Fri, 21 Oct 2016 08:58:59 +0000 (10:58 +0200)
Signed-off-by: Joas Schilling <coding@schilljs.com>
tests/lib/TestCase.php

index 514cb6ea3a5a096d8f9d7a1c50717245f0d9cb95..0896b1f3a81ad4242cc19940a26af46202cdd825 100644 (file)
@@ -83,6 +83,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;
@@ -113,9 +123,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) {
@@ -126,7 +134,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 () {