diff --git a/lib/private/db/sqlitemigrator.php b/lib/private/db/sqlitemigrator.php index 81bbcb567e..94b421c556 100644 --- a/lib/private/db/sqlitemigrator.php +++ b/lib/private/db/sqlitemigrator.php @@ -9,6 +9,7 @@ namespace OC\DB; use Doctrine\DBAL\DBALException; +use Doctrine\DBAL\Schema\Schema; class SQLiteMigrator extends Migrator { @@ -61,4 +62,16 @@ class SQLiteMigrator extends Migrator { $tmpFile = uniqid("oc_"); return "$dataDir/$tmpFile.db"; } + + /** + * @param Schema $targetSchema + * @param \Doctrine\DBAL\Connection $connection + * @return \Doctrine\DBAL\Schema\SchemaDiff + */ + protected function getDiff(Schema $targetSchema, \Doctrine\DBAL\Connection $connection) { + $platform = $connection->getDatabasePlatform(); + $platform->registerDoctrineTypeMapping('tinyint unsigned', 'integer'); + + return parent::getDiff($targetSchema, $connection); + } } diff --git a/tests/lib/db/migration.php b/tests/lib/db/mysqlmigration.php similarity index 94% rename from tests/lib/db/migration.php rename to tests/lib/db/mysqlmigration.php index 820a1431f5..584df1d446 100644 --- a/tests/lib/db/migration.php +++ b/tests/lib/db/mysqlmigration.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -class TestMigration extends \PHPUnit_Framework_TestCase { +class TestMySqlMigration extends \PHPUnit_Framework_TestCase { /** @var \Doctrine\DBAL\Connection */ private $connection; diff --git a/tests/lib/db/sqlitemigration.php b/tests/lib/db/sqlitemigration.php new file mode 100644 index 0000000000..adfc03a2ca --- /dev/null +++ b/tests/lib/db/sqlitemigration.php @@ -0,0 +1,39 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +class TestSqliteMigration extends \PHPUnit_Framework_TestCase { + + /** @var \Doctrine\DBAL\Connection */ + private $connection; + + /** @var string */ + private $tableName; + + public function setUp() { + $this->connection = \OC_DB::getConnection(); + if (!$this->connection->getDatabasePlatform() instanceof \Doctrine\DBAL\Platforms\SqlitePlatform) { + $this->markTestSkipped("Test only relevant on Sqlite"); + } + + $dbPrefix = \OC::$server->getConfig()->getSystemValue("dbtableprefix"); + $this->tableName = uniqid($dbPrefix . "_enum_bit_test"); + $this->connection->exec("CREATE TABLE $this->tableName(t0 tinyint unsigned, t1 tinyint)"); + } + + public function tearDown() { + $this->connection->getSchemaManager()->dropTable($this->tableName); + } + + public function testNonOCTables() { + $manager = new \OC\DB\MDB2SchemaManager($this->connection); + $manager->updateDbFromStructure(__DIR__ . '/testschema.xml'); + + $this->assertTrue(true); + } + +}