yii\console\controllers\AssetController provides dependency trace in case bundle circular dependency detected

This commit is contained in:
Paul Klimov
2015-04-03 19:22:42 +03:00
parent d8455835ee
commit 378937f8d5
3 changed files with 81 additions and 3 deletions

View File

@ -377,6 +377,61 @@ EOL;
$this->assertContains($externalAssetBundleClassName, $compressedRegularAssetConfig['depends'], 'Dependency on external bundle is lost!');
}
/**
* @depends testActionCompress
*
* @see https://github.com/yiisoft/yii2/issues/7539
*/
public function testDetectCircularDependency()
{
// Given :
$namespace = __NAMESPACE__;
$this->declareAssetBundleClass([
'namespace' => $namespace,
'class' => 'AssetStart',
'depends' => [
$namespace . '\AssetA'
],
]);
$this->declareAssetBundleClass([
'namespace' => $namespace,
'class' => 'AssetA',
'depends' => [
$namespace . '\AssetB'
],
]);
$this->declareAssetBundleClass([
'namespace' => $namespace,
'class' => 'AssetB',
'depends' => [
$namespace . '\AssetC'
],
]);
$this->declareAssetBundleClass([
'namespace' => $namespace,
'class' => 'AssetC',
'depends' => [
$namespace . '\AssetA'
],
]);
$bundles = [
$namespace . '\AssetStart'
];
$bundleFile = $this->testFilePath . DIRECTORY_SEPARATOR . 'bundle.php';
$configFile = $this->testFilePath . DIRECTORY_SEPARATOR . 'config.php';
$this->createCompressConfigFile($configFile, $bundles);
// Assert :
$expectedExceptionMessage = ": {$namespace}\AssetA -> {$namespace}\AssetB -> {$namespace}\AssetC -> {$namespace}\AssetA";
$this->setExpectedException('yii\console\Exception', $expectedExceptionMessage);
// When :
$this->runAssetControllerAction('compress', [$configFile, $bundleFile]);
}
/**
* Data provider for [[testAdjustCssUrl()]].
* @return array test data.