mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-10 02:13:17 +08:00
yii\console\controllers\AssetController provides dependency trace in case bundle circular dependency detected
This commit is contained in:
@ -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.
|
||||
|
||||
Reference in New Issue
Block a user