Disable InstallCommand test for MySQL :(

This commit is contained in:
Jeremy Benoist
2022-12-21 09:41:48 +01:00
parent 1f2b00bdac
commit a2390a52d8

View File

@ -10,6 +10,7 @@ use Doctrine\DBAL\Platforms\MySQLPlatform;
use Doctrine\DBAL\Platforms\PostgreSQLPlatform;
use Doctrine\DBAL\Platforms\SqlitePlatform;
use Doctrine\Persistence\ManagerRegistry;
use PHPUnit\Runner\BaseTestRunner;
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Output\NullOutput;
@ -48,6 +49,16 @@ class InstallCommandTest extends WallabagCoreTestCase
$this->markTestSkipped('PostgreSQL spotted: can\'t find a good way to drop current database, skipping.');
}
if ($connection->getDatabasePlatform() instanceof MySQLPlatform) {
/*
* After upgrading to recent Doctrine version, we can't test anymore on MySQL without having side effect on the rest of the test suite.
* The best solution for now, is to disabled it...
*
* @see https://github.com/dmaicher/doctrine-test-bundle/issues/58
*/
$this->markTestSkipped('MySQL spotted: can\'t find a good way to isolate database actions, skipping.');
}
if ($connection->getDatabasePlatform() instanceof SqlitePlatform) {
// Environnement variable useful only for sqlite to avoid the error "attempt to write a readonly database"
// We can't define always this environnement variable because pdo_mysql seems to use it
@ -73,7 +84,7 @@ class InstallCommandTest extends WallabagCoreTestCase
if ($databasePath && file_exists($databasePath)) {
unlink($databasePath);
} else {
} elseif (BaseTestRunner::STATUS_SKIPPED !== $this->getStatus()) {
// Create a new client to avoid the error:
// Transaction commit failed because the transaction has been marked for rollback only.
$client = static::createClient();
@ -90,11 +101,6 @@ class InstallCommandTest extends WallabagCoreTestCase
/** @var InstallCommand $command */
$command = $application->find('wallabag:install');
// enable calling other commands for MySQL only because rollback isn't supported
if (!$this->getTestClient()->getContainer()->get(ManagerRegistry::class)->getConnection()->getDatabasePlatform() instanceof MySQLPlatform) {
$command->disableRunOtherCommands();
}
$tester = new CommandTester($command);
$tester->setInputs([
'y', // dropping database
@ -113,10 +119,6 @@ class InstallCommandTest extends WallabagCoreTestCase
public function testRunInstallCommandWithReset()
{
if ($this->getTestClient()->getContainer()->get(ManagerRegistry::class)->getConnection()->getDatabasePlatform() instanceof MySQLPlatform) {
$this->markTestSkipped('Rollback are not properly handled for MySQL, skipping.');
}
$application = new Application($this->getTestClient()->getKernel());
/** @var InstallCommand $command */
@ -146,10 +148,6 @@ class InstallCommandTest extends WallabagCoreTestCase
public function testRunInstallCommandWithDatabaseRemoved()
{
if ($this->getTestClient()->getContainer()->get(ManagerRegistry::class)->getConnection()->getDatabasePlatform() instanceof MySQLPlatform) {
$this->markTestSkipped('Rollback are not properly handled for MySQL, skipping.');
}
// 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->getTestClient()->getContainer()->get(ManagerRegistry::class)->getConnection()->getDatabasePlatform() instanceof SqlitePlatform) {
@ -190,10 +188,6 @@ class InstallCommandTest extends WallabagCoreTestCase
public function testRunInstallCommandChooseResetSchema()
{
if ($this->getTestClient()->getContainer()->get(ManagerRegistry::class)->getConnection()->getDatabasePlatform() instanceof MySQLPlatform) {
$this->markTestSkipped('Rollback are not properly handled for MySQL, skipping.');
}
$application = new Application($this->getTestClient()->getKernel());
/** @var InstallCommand $command */
@ -218,16 +212,6 @@ class InstallCommandTest extends WallabagCoreTestCase
public function testRunInstallCommandChooseNothing()
{
/*
* [PHPUnit\Framework\Error\Warning (2)]
* filemtime(): stat failed for /home/runner/work/wallabag/wallabag/var/cache/tes_/ContainerNVNxA24/appAppKernelTestDebugContainer.php
*
* I don't know from where the "/tes_/" come from, it should be "/test/" instead ...
*/
if ($this->getTestClient()->getContainer()->get(ManagerRegistry::class)->getConnection()->getDatabasePlatform() instanceof MySQLPlatform) {
$this->markTestSkipped('That test is failing when using MySQL when clearing the cache (see code comment)');
}
$application = new Application($this->getTestClient()->getKernel());
// drop database first, so the install command won't ask to reset things
@ -260,10 +244,6 @@ class InstallCommandTest extends WallabagCoreTestCase
public function testRunInstallCommandNoInteraction()
{
if ($this->getTestClient()->getContainer()->get(ManagerRegistry::class)->getConnection()->getDatabasePlatform() instanceof MySQLPlatform) {
$this->markTestSkipped('Rollback are not properly handled for MySQL, skipping.');
}
$application = new Application($this->getTestClient()->getKernel());
/** @var InstallCommand $command */