Activate test mode for database
authorMichael <heluecht@pirati.ca>
Fri, 15 May 2020 15:05:17 +0000 (15:05 +0000)
committerMichael <heluecht@pirati.ca>
Fri, 15 May 2020 15:05:17 +0000 (15:05 +0000)
mod/item.php
src/Database/Database.php
tests/include/ApiTest.php

index 8588391..9994b1b 100644 (file)
@@ -720,7 +720,7 @@ function item_post(App $a) {
                if ($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]);
index ad0c857..faa83d8 100644 (file)
 
 namespace Friendica\Database;
 
+use Exception;
 use Friendica\Core\Config\Cache;
 use Friendica\Core\System;
+use Friendica\DI;
 use Friendica\Network\HTTPException\InternalServerErrorException;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Profiler;
@@ -63,6 +65,7 @@ class Database
        private $affected_rows  = 0;
        protected $in_transaction = false;
        protected $in_retrial     = false;
+       protected $testmode       = false;
        private $relation       = [];
 
        public function __construct(Cache $configCache, Profiler $profiler, LoggerInterface $logger, array $server = [])
@@ -181,6 +184,10 @@ class Database
                return $this->connected;
        }
 
+       public function setTestmode(bool $test)
+       {
+               $this->testmode = $test;
+       }
        /**
         * Sets the logger for DBA
         *
@@ -630,6 +637,10 @@ class Database
                        $error   = $this->error;
                        $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', [
                                'code'      => $this->errorno,
                                'error'     => $this->error,
index 9970ced..df2c030 100644 (file)
@@ -71,6 +71,8 @@ class ApiTest extends DatabaseTest
                /** @var Database $dba */
                $dba = $this->dice->create(Database::class);
 
+               $dba->setTestmode(true);
+
                /** @var IConfig $config */
                $this->config = $this->dice->create(IConfig::class);