summaryrefslogtreecommitdiffstats
path: root/tests/lib/testcase.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lib/testcase.php')
-rw-r--r--tests/lib/testcase.php35
1 files changed, 32 insertions, 3 deletions
diff --git a/tests/lib/testcase.php b/tests/lib/testcase.php
index 8cfa2a72598..f6a4febefc7 100644
--- a/tests/lib/testcase.php
+++ b/tests/lib/testcase.php
@@ -25,14 +25,16 @@ namespace Test;
use OC\Command\QueueBus;
use OC\Files\Filesystem;
use OCP\DB\QueryBuilder\IQueryBuilder;
+use OCP\IDBConnection;
use OCP\Security\ISecureRandom;
abstract class TestCase extends \PHPUnit_Framework_TestCase {
- /**
- * @var \OC\Command\QueueBus
- */
+ /** @var \OC\Command\QueueBus */
private $commandBus;
+ /** @var IDBConnection */
+ static private $realDatabase;
+
protected function getTestTraits() {
$traits = [];
$class = $this;
@@ -49,6 +51,16 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase {
}
protected function setUp() {
+ // detect database access
+ if (!$this->IsDatabaseAccessAllowed()) {
+ if (is_null(self::$realDatabase)) {
+ self::$realDatabase = \OC::$server->getDatabaseConnection();
+ }
+ \OC::$server->registerService('DatabaseConnection', function () {
+ $this->fail('Your test case is not allowed to access the database.');
+ });
+ }
+
// overwrite the command bus with one we can run ourselves
$this->commandBus = new QueueBus();
\OC::$server->registerService('AsyncCommandBus', function () {
@@ -65,6 +77,14 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase {
}
protected function tearDown() {
+ // restore database connection
+ if (!$this->IsDatabaseAccessAllowed()) {
+ \OC::$server->registerService('DatabaseConnection', function () {
+ return self::$realDatabase;
+ });
+ }
+
+ // further cleanup
$hookExceptions = \OC_Hook::$thrownExceptions;
\OC_Hook::$thrownExceptions = [];
\OC::$server->getLockingProvider()->releaseAll();
@@ -316,4 +336,13 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase {
return true;
}
}
+
+ private function IsDatabaseAccessAllowed() {
+ $annotations = $this->getAnnotations();
+ if (isset($annotations['class']['group']) && in_array('DB', $annotations['class']['group'])) {
+ return true;
+ }
+
+ return false;
+ }
}