protected function doApply() { $dataDir = $this->dataDir->getAbsolutePath(); $htmlDir = $this->htmlDir->getAbsolutePath(); define('HTML_REALDIR', rtrim(realpath($htmlDir), '/\\') . '/'); require_once HTML_REALDIR . '/define.php'; require_once HTML_REALDIR . HTML2DATA_DIR . '/require_base.php'; $query = SC_Query_Ex::getSingletonInstance(); $storage = new Zeclib_DefaultMigrationStorage($query, $this->system); $storage->versionTable = $this->versionTable; $storage->containerDirectories[] = $this->containerDir->getPath(); $migrator = new Zeclib_Migrator($storage, $query); $migrator->logger = new Zeclib_Phing_TaskMigrationLogger($this); $migrations = array(); $versions = preg_split('/[,\\s]+/', $this->version, 0, PREG_SPLIT_NO_EMPTY); foreach ($versions as $version) { try { $migrations[] = $migrator->loadMigration($version); } catch (Zeclib_MigrationException $e) { $message = $e->getMessage(); $this->log($message, Zeclib_MigrationLogger::TYPE_WARNING); } } $num = $migrator->apply($migrations); $this->log(sprintf('%d migrations are applied.', $num)); }
public function testTransactionRollbackIfApplyIsIncompleted() { $this->query->expects($this->once())->method('begin'); $this->query->expects($this->once())->method('rollback'); $this->query->expects($this->once())->method('inTransaction')->willReturn(true); $migrator = new Zeclib_Migrator($this->storage, $this->query); $migras = array(); $migra01 = $this->getMockForAbstractClass('Zeclib_Migration', array('01', $this->query)); $migra01->expects($this->once())->method('up')->willThrowException(new Zeclib_MigrationException()); $migras[] = $migra01; try { $migrator->apply($migras); } catch (Zeclib_MigrationException $e) { } }