public function testMigration() { $migration = new Doctrine_Migration('migration_classes'); $this->assertFalse($migration->hasMigrated()); $migration->setCurrentVersion(3); $migration->migrate(0); $this->assertEqual($migration->getCurrentVersion(), 0); $this->assertEqual($migration->getLatestVersion(), 4); $this->assertEqual($migration->getNextVersion(), 5); $current = $migration->getCurrentVersion(); $migration->setCurrentVersion(100); $this->assertEqual($migration->getCurrentVersion(), 100); $migration->setCurrentVersion($current); $migration->migrate(3); $this->assertTrue($migration->hasMigrated()); $this->assertEqual($migration->getCurrentVersion(), 3); $this->assertTrue($this->conn->import->tableExists('migration_phonenumber')); $this->assertTrue($this->conn->import->tableExists('migration_user')); $this->assertTrue($this->conn->import->tableExists('migration_profile')); $migration->migrate(4); $this->assertFalse($this->conn->import->tableExists('migration_profile')); $migration->migrate(0); $this->assertEqual($migration->getCurrentVersion(), 0); $this->assertTrue($migration->getMigrationClass(1) instanceof AddPhonenumber); $this->assertTrue($migration->getMigrationClass(2) instanceof AddUser); $this->assertTrue($migration->getMigrationClass(3) instanceof AddProfile); $this->assertTrue($migration->getMigrationClass(4) instanceof DropProfile); $this->assertFalse($this->conn->import->tableExists('migration_phonenumber')); $this->assertFalse($this->conn->import->tableExists('migration_user')); $this->assertFalse($this->conn->import->tableExists('migration_profile')); }
/** * @see sfTask */ protected function execute($arguments = array(), $options = array()) { $databaseManager = new sfDatabaseManager($this->configuration); $config = $this->getCliConfig(); $migration = new Doctrine_Migration($config['migrations_path']); $intValidator = new sfValidatorInteger(); $migration->setCurrentVersion($arguments['version']); $this->logSection('doctrine', 'Migration version set to ' . $arguments['version']); }
/** * Set a current migration version, without doing an actual migration. * Useful when fixing bugs, testing etc. */ private function actionSetMigrationVersion() { $version = $this->getDestinationVersion(); // Show information about current and latest available version $this->showMigrationVersions(); printf("Setting migration version: %s\n", ($this->cli->command->args['version'] === null ? 'latest' : $version)); if ($version > $this->getLatestVersion()) { printf("Warning: version provided (%d) greater than latest available migration (%d), Cthulhu will eat you!\n", $version, $this->getLatestVersion()); } // Dry run? Stop here. If not, process. if ($this->cli->options['dryrun'] === true) return; $this->migration->setCurrentVersion($version); }
protected function execute($arguments = array(), $options = array()) { // initialize the database connection $databaseManager = new sfDatabaseManager($this->configuration); $connection = $databaseManager->getDatabase($options['connection'])->getConnection(); $config = $this->getCliConfig(); $migration = new Doctrine_Migration($config['migrations_path']); $from = $migration->getCurrentVersion(); $new_version = $arguments['new_version']; if ($new_version !== $from) { $migration->setCurrentVersion($new_version); } $this->log('Current migration version is ' . $new_version); }
/** * @see sfTask */ protected function execute($arguments = array(), $options = array()) { $databaseManager = new sfDatabaseManager($this->configuration); $migration = new Doctrine_Migration(); $currentVersion = $migration->getCurrentVersion(); if (!isset($arguments['version'])) { $this->logSection('doctrine', 'Current migration version is ' . $currentVersion); } else { $version = $arguments['version']; if (!is_numeric($version)) { $this->logSection('doctrine', 'Unknown version ' . $version, null, 'ERROR'); return; } $migration->setCurrentVersion($version); $this->logSection('doctrine', 'Current migration version was forced to ' . $version); } }
public function testMigrateClearsErrors() { $migration = new Doctrine_Migration('migration_classes'); $migration->setCurrentVersion(3); try { $migration->migrate(3); } catch (Doctrine_Migration_Exception $e) { $this->assertTrue($migration->hasErrors()); $this->assertEqual(1, $migration->getNumErrors()); } try { $migration->migrate(3); } catch (Doctrine_Migration_Exception $e) { $this->assertTrue($migration->hasErrors()); $this->assertEqual(1, $migration->getNumErrors()); } $migration->clearErrors(); $this->assertFalse($migration->hasErrors()); $this->assertEqual(0, $migration->getNumErrors()); }
/** * Set the current version of the database * * @param integer $number * @return void */ public function setCurrentVersion($number) { $this->_migration->setCurrentVersion($number); }