Exemplo n.º 1
0
 /**
  *
  *
  * @param $index
  * @param array $data
  *
  * @dataProvider configProvider
  *
  * @return void
  * @since
  */
 public function testRewrite($index, array $data)
 {
     $basePath = \Yii::getPathOfAlias('application.tests._data.config');
     $rawFilePath = sprintf('%s/raw.%s.php', $basePath, $index);
     $rewrittenFilePath = sprintf('%s/rewritten.%s.php', $basePath, $index);
     $dumpPath = sprintf(\Yii::getPathOfAlias('application.runtime.rewritten-config') . '.%d.php', $index);
     $rawFileContent = file_get_contents($rawFilePath);
     // $rawFileData = require $rawFilePath;
     $rewrittenFileContent = file_get_contents($rewrittenFilePath);
     // $rewrittenFileData = require $rewrittenFilePath;
     $hambda = new \ConfigEditor();
     $newConfig = $hambda->rewriteConfig($rawFileContent, $data);
     file_put_contents($dumpPath, $newConfig);
     $this->assertSame($rewrittenFileContent, $newConfig);
     // it won't be same because of __FILE__ and __DIR__ usage. Text
     // comparison is quite an ok way to test.
     //$this->assertSame($rewrittenFileData, include $dumpPath);
 }
Exemplo n.º 2
0
 /**
  * Writes provided config into config file.
  * 
  * @param string $alias  Yii path alias for config file.
  * @param array  $config New config.
  *
  * @return int Number of written bytes or one of self::CONFIG_FILE_* error
  * constants. Since number of written bytes should be big (20+), error
  * codes should no intersect with it.
  * @since 0.1.0
  */
 protected function writeConfig($alias, array $updates)
 {
     \Yii::beginProfile('applicationModel.writeConfig');
     $path = \Yii::getPathOfAlias($alias) . '.php';
     if (!file_exists($path)) {
         return self::CONFIG_FILE_MISSING;
     } elseif (!is_writable($path)) {
         return self::CONFIG_FILE_NOT_WRITABLE;
     }
     $editor = new ConfigEditor();
     $configText = file_get_contents($path);
     $config = $editor->rewriteConfig($configText, $updates);
     $result = file_put_contents($path, $config);
     \Yii::endProfile('applicationModel.writeConfig');
     return $result;
 }