Skip to content

Commit

Permalink
Remove fallback database config for unit testing
Browse files Browse the repository at this point in the history
Make the database explicit to avoid unexpected use of the wrong
driver in CI / test environments.
  • Loading branch information
acoulton committed Mar 17, 2021
1 parent 10c8633 commit f29f3e4
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 49 deletions.
4 changes: 4 additions & 0 deletions ci/github/phpunit/sqlite.xml
Expand Up @@ -7,6 +7,10 @@
failOnRisky="true"
>
<php>
<!-- use an in-memory sqlite database -->
<var name="db_driver" value="pdo_sqlite"/>
<var name="db_memory" value="true"/>

<!-- necessary change for some CLI/console output test assertions -->
<env name="COLUMNS" value="120"/>
</php>
Expand Down
18 changes: 11 additions & 7 deletions phpunit.xml.dist
Expand Up @@ -33,22 +33,26 @@

<php>
<!-- "Real" test database -->
<!-- uncomment, otherwise sqlite memory runs
<var name="db_driver" value="pdo_mysql"/>
<var name="db_host" value="localhost" />
<var name="db_user" value="root" />
<var name="db_password" value="" />
<var name="db_dbname" value="doctrine_tests" />
<var name="db_port" value="3306"/>-->
<var name="db_driver" value="pdo_sqlite"/>
<var name="db_memory" value="true"/>
<!-- to use another database driver / credentials, provide them like so:
<var name="db_driver" value="pdo_mysql"/>
<var name="db_host" value="localhost" />
<var name="db_user" value="root" />
<var name="db_password" value="" />
<var name="db_dbname" value="doctrine_tests" />
<var name="db_port" value="3306"/>-->
<!--<var name="db_event_subscribers" value="Doctrine\DBAL\Event\Listeners\OracleSessionInit">-->

<!-- Database for temporary connections (i.e. to drop/create the main database) -->
<!--
<var name="tmpdb_driver" value="pdo_mysql"/>
<var name="tmpdb_host" value="localhost" />
<var name="tmpdb_user" value="root" />
<var name="tmpdb_password" value="" />
<var name="tmpdb_dbname" value="doctrine_tests_tmp" />
<var name="tmpdb_port" value="3306"/>
-->

<env name="COLUMNS" value="120"/>
</php>
Expand Down
52 changes: 10 additions & 42 deletions tests/Doctrine/Tests/TestUtil.php
Expand Up @@ -16,7 +16,6 @@
use function strlen;
use function strpos;
use function substr;
use function unlink;

use const STDERR;

Expand Down Expand Up @@ -60,9 +59,8 @@ public static function getConnection(): Connection
fwrite(
STDERR,
sprintf(
"\nUsing DB driver %s (from %s connection params)\n",
get_class($conn->getDriver()),
$params['is_fallback'] ? 'fallback' : 'specified'
"\nUsing DB driver %s\n",
get_class($conn->getDriver())
)
);

Expand Down Expand Up @@ -100,25 +98,7 @@ public static function getTempConnection(): Connection
*/
private static function getConnectionParams()
{
if (self::hasRequiredConnectionParams()) {
return self::getSpecifiedConnectionParams();
}

return self::getFallbackConnectionParams();
}

private static function hasRequiredConnectionParams(): bool
{
return isset($GLOBALS['db_driver']);
}

/**
* @psalm-return array<string, mixed>
*/
private static function getSpecifiedConnectionParams()
{
$realDbParams = self::getParamsForMainConnection();
$realDbParams['is_fallback'] = false;
$realDbParams = self::getParamsForMainConnection();

if (! self::$initialized) {
$tmpDbParams = self::getParamsForTemporaryConnection();
Expand Down Expand Up @@ -154,25 +134,6 @@ private static function getSpecifiedConnectionParams()
return $realDbParams;
}

/**
* @psalm-return array<string, mixed>
*/
private static function getFallbackConnectionParams()
{
$params = [
'driver' => 'pdo_sqlite',
'memory' => true,
'is_fallback' => true,
];

if (isset($GLOBALS['db_path'])) {
$params['path'] = $GLOBALS['db_path'];
unlink($GLOBALS['db_path']);
}

return $params;
}

private static function addDbEventSubscribers(Connection $conn): void
{
if (isset($GLOBALS['db_event_subscribers'])) {
Expand Down Expand Up @@ -204,6 +165,12 @@ private static function getParamsForTemporaryConnection()
*/
private static function getParamsForMainConnection()
{
if (! isset($GLOBALS['db_driver'])) {
throw new UnexpectedValueException(
'You must provide database connection params including a db_driver value. See phpunit.xml.dist for details'
);
}

return self::mapConnectionParameters($GLOBALS, 'db_');
}

Expand All @@ -225,6 +192,7 @@ private static function mapConnectionParameters(array $configuration, string $pr
'dbname',
'port',
'server',
'memory',
'ssl_key',
'ssl_cert',
'ssl_ca',
Expand Down

0 comments on commit f29f3e4

Please sign in to comment.