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()); }
/** * @see sfTask */ protected function execute($arguments = array(), $options = array()) { $databaseManager = new sfDatabaseManager($this->configuration); $config = $this->getCliConfig(); $migration = new Doctrine_Migration($config['migrations_path']); $from = $migration->getCurrentVersion(); if (is_numeric($arguments['version'])) { $version = $arguments['version']; } else { if ($options['up']) { $version = $from + 1; } else { if ($options['down']) { $version = $from - 1; } else { $version = $migration->getLatestVersion(); } } } if ($from == $version) { $this->logSection('doctrine', sprintf('Already at migration version %s', $version)); return; } $this->logSection('doctrine', sprintf('Migrating from version %s to %s%s', $from, $version, $options['dry-run'] ? ' (dry run)' : '')); try { $migration->migrate($version, $options['dry-run']); } catch (Exception $e) { } // render errors if ($migration->hasErrors()) { if ($this->commandApplication && $this->commandApplication->withTrace()) { $this->logSection('doctrine', 'The following errors occurred:'); foreach ($migration->getErrors() as $error) { $this->commandApplication->renderException($error); } } else { $this->logBlock(array_merge(array('The following errors occurred:', ''), array_map(create_function('$e', 'return \' - \'.$e->getMessage();'), $migration->getErrors())), 'ERROR_LARGE'); } return 1; } $this->logSection('doctrine', 'Migration complete'); }