/** * * * @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); }
/** * 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; }