Пример #1
0
 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));
 }
Пример #2
0
 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) {
     }
 }