Browse Source

Rollback failed transactions in TestCase.php to not break followup tests

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Christoph Wurst 3 years ago
parent
commit
f0c6cfde3a
1 changed files with 6 additions and 1 deletions
  1. 6 1
      tests/lib/TestCase.php

+ 6 - 1
tests/lib/TestCase.php

@@ -261,7 +261,12 @@ abstract class TestCase extends \PHPUnit\Framework\TestCase {
 		}
 		$dataDir = \OC::$server->getConfig()->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data-autotest');
 		if (self::$wasDatabaseAllowed && \OC::$server->getDatabaseConnection()) {
-			$queryBuilder = \OC::$server->getDatabaseConnection()->getQueryBuilder();
+			$db = \OC::$server->getDatabaseConnection();
+			if ($db->inTransaction()) {
+				$db->rollBack();
+				throw new \Exception('There was a transaction still in progress and needed to be rolled back. Please fix this in your test.');
+			}
+			$queryBuilder = $db->getQueryBuilder();
 
 			self::tearDownAfterClassCleanShares($queryBuilder);
 			self::tearDownAfterClassCleanStorages($queryBuilder);