mirror of
https://github.com/wallabag/wallabag.git
synced 2024-12-16 10:22:14 +01:00
Merge pull request #2262 from wallabag/install-check-db-connection
Add a check for the database connection
This commit is contained in:
commit
2b9c5097d4
@ -72,8 +72,10 @@ class InstallCommand extends ContainerAwareCommand
|
|||||||
{
|
{
|
||||||
$this->defaultOutput->writeln('<info><comment>Step 1 of 5.</comment> Checking system requirements.</info>');
|
$this->defaultOutput->writeln('<info><comment>Step 1 of 5.</comment> Checking system requirements.</info>');
|
||||||
|
|
||||||
$fulfilled = true;
|
$rows = [];
|
||||||
|
|
||||||
|
// testing if database driver exists
|
||||||
|
$fulfilled = true;
|
||||||
$label = '<comment>PDO Driver</comment>';
|
$label = '<comment>PDO Driver</comment>';
|
||||||
$status = '<info>OK!</info>';
|
$status = '<info>OK!</info>';
|
||||||
$help = '';
|
$help = '';
|
||||||
@ -84,7 +86,23 @@ class InstallCommand extends ContainerAwareCommand
|
|||||||
$help = 'Database driver "'.$this->getContainer()->getParameter('database_driver').'" is not installed.';
|
$help = 'Database driver "'.$this->getContainer()->getParameter('database_driver').'" is not installed.';
|
||||||
}
|
}
|
||||||
|
|
||||||
$rows = [];
|
$rows[] = [$label, $status, $help];
|
||||||
|
|
||||||
|
// testing if connection to the database can be etablished
|
||||||
|
$label = '<comment>Database connection</comment>';
|
||||||
|
$status = '<info>OK!</info>';
|
||||||
|
$help = '';
|
||||||
|
|
||||||
|
try {
|
||||||
|
$this->getContainer()->get('doctrine')->getManager()->getConnection()->connect();
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
if (false === strpos($e->getMessage(), 'Unknown database')) {
|
||||||
|
$fulfilled = false;
|
||||||
|
$status = '<error>ERROR!</error>';
|
||||||
|
$help = 'Can\'t connect to the database: '.$e->getMessage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$rows[] = [$label, $status, $help];
|
$rows[] = [$label, $status, $help];
|
||||||
|
|
||||||
foreach ($this->functionExists as $functionRequired) {
|
foreach ($this->functionExists as $functionRequired) {
|
||||||
@ -456,7 +474,7 @@ class InstallCommand extends ContainerAwareCommand
|
|||||||
}
|
}
|
||||||
|
|
||||||
// custom verification for sqlite, since `getListDatabasesSQL` doesn't work for sqlite
|
// custom verification for sqlite, since `getListDatabasesSQL` doesn't work for sqlite
|
||||||
if ('sqlite' == $schemaManager->getDatabasePlatform()->getName()) {
|
if ('sqlite' === $schemaManager->getDatabasePlatform()->getName()) {
|
||||||
$params = $this->getContainer()->get('doctrine.dbal.default_connection')->getParams();
|
$params = $this->getContainer()->get('doctrine.dbal.default_connection')->getParams();
|
||||||
|
|
||||||
if (isset($params['path']) && file_exists($params['path'])) {
|
if (isset($params['path']) && file_exists($params['path'])) {
|
||||||
|
@ -127,6 +127,12 @@ class InstallCommandTest extends WallabagCoreTestCase
|
|||||||
|
|
||||||
public function testRunInstallCommandWithDatabaseRemoved()
|
public function testRunInstallCommandWithDatabaseRemoved()
|
||||||
{
|
{
|
||||||
|
// skipped SQLite check when database is removed because while testing for the connection,
|
||||||
|
// the driver will create the file (so the database) before testing if database exist
|
||||||
|
if ($this->getClient()->getContainer()->get('doctrine')->getConnection()->getDriver() instanceof \Doctrine\DBAL\Driver\PDOSqlite\Driver) {
|
||||||
|
$this->markTestSkipped('SQLite spotted: can\'t test with database removed.');
|
||||||
|
}
|
||||||
|
|
||||||
$application = new Application($this->getClient()->getKernel());
|
$application = new Application($this->getClient()->getKernel());
|
||||||
$application->add(new DropDatabaseDoctrineCommand());
|
$application->add(new DropDatabaseDoctrineCommand());
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user