Activate test mode for database

This commit is contained in:
Michael 2020-05-15 15:05:17 +00:00
parent 8ca0186409
commit d71c3e0812
3 changed files with 14 additions and 1 deletions

View file

@ -720,7 +720,7 @@ function item_post(App $a) {
if ($return_path) { if ($return_path) {
DI::baseUrl()->redirect($return_path); DI::baseUrl()->redirect($return_path);
} }
throw new HTTPException\InternalServerErrorException(DI::l10n()->t('Item wasn\'t stored. Last database error: %d %s', DBA::errorNo(), dba::errorMessage())); throw new HTTPException\InternalServerErrorException(DI::l10n()->t('Item wasn\'t stored.'));
} }
$datarray = Item::selectFirst(Item::ITEM_FIELDLIST, ['id' => $post_id]); $datarray = Item::selectFirst(Item::ITEM_FIELDLIST, ['id' => $post_id]);

View file

@ -21,8 +21,10 @@
namespace Friendica\Database; namespace Friendica\Database;
use Exception;
use Friendica\Core\Config\Cache; use Friendica\Core\Config\Cache;
use Friendica\Core\System; use Friendica\Core\System;
use Friendica\DI;
use Friendica\Network\HTTPException\InternalServerErrorException; use Friendica\Network\HTTPException\InternalServerErrorException;
use Friendica\Util\DateTimeFormat; use Friendica\Util\DateTimeFormat;
use Friendica\Util\Profiler; use Friendica\Util\Profiler;
@ -63,6 +65,7 @@ class Database
private $affected_rows = 0; private $affected_rows = 0;
protected $in_transaction = false; protected $in_transaction = false;
protected $in_retrial = false; protected $in_retrial = false;
protected $testmode = false;
private $relation = []; private $relation = [];
public function __construct(Cache $configCache, Profiler $profiler, LoggerInterface $logger, array $server = []) public function __construct(Cache $configCache, Profiler $profiler, LoggerInterface $logger, array $server = [])
@ -181,6 +184,10 @@ class Database
return $this->connected; return $this->connected;
} }
public function setTestmode(bool $test)
{
$this->testmode = $test;
}
/** /**
* Sets the logger for DBA * Sets the logger for DBA
* *
@ -630,6 +637,10 @@ class Database
$error = $this->error; $error = $this->error;
$errorno = $this->errorno; $errorno = $this->errorno;
if ($this->testmode) {
throw new Exception(DI::l10n()->t('Database error %d "%s" at "%s"', $errorno, $error, $this->replaceParameters($sql, $args)));
}
$this->logger->error('DB Error', [ $this->logger->error('DB Error', [
'code' => $this->errorno, 'code' => $this->errorno,
'error' => $this->error, 'error' => $this->error,

View file

@ -71,6 +71,8 @@ class ApiTest extends DatabaseTest
/** @var Database $dba */ /** @var Database $dba */
$dba = $this->dice->create(Database::class); $dba = $this->dice->create(Database::class);
$dba->setTestmode(true);
/** @var IConfig $config */ /** @var IConfig $config */
$this->config = $this->dice->create(IConfig::class); $this->config = $this->dice->create(IConfig::class);