Issue #3400485 by googletorp, nod_: LibraryDependencyResolver::getMinimalRepresentativeSubset() calculates dependencies incorrectly

merge-requests/5394/head
xjm 2023-11-14 14:35:54 -06:00
parent bd38a5a1d8
commit c0895d5769
No known key found for this signature in database
GPG Key ID: 206B0B8743BDF4C2
2 changed files with 5 additions and 1 deletions

View File

@ -86,7 +86,7 @@ class LibraryDependencyResolver implements LibraryDependencyResolverInterface {
foreach ($libraries as $library) {
$with_deps = $this->getLibrariesWithDependencies([$library]);
// We don't need library itself listed in the dependencies.
$all_dependencies += array_diff($with_deps, [$library]);
$all_dependencies = array_unique(array_merge($all_dependencies, array_diff($with_deps, [$library])));
}
return array_values(array_diff($libraries, array_intersect($all_dependencies, $libraries)));

View File

@ -41,9 +41,11 @@ class LibraryDependencyResolverTest extends UnitTestCase {
'no_deps_a' => ['js' => [], 'css' => []],
'no_deps_b' => ['js' => [], 'css' => []],
'no_deps_c' => ['js' => [], 'css' => []],
'no_deps_d' => ['js' => [], 'css' => []],
'deps_a' => ['js' => [], 'css' => [], 'dependencies' => ['test/no_deps_a']],
'deps_b' => ['js' => [], 'css' => [], 'dependencies' => ['test/no_deps_a', 'test/no_deps_b']],
'deps_c' => ['js' => [], 'css' => [], 'dependencies' => ['test/no_deps_b', 'test/no_deps_a']],
'deps_d' => ['js' => [], 'css' => [], 'dependencies' => ['test/no_deps_d']],
'nested_deps_a' => ['js' => [], 'css' => [], 'dependencies' => ['test/deps_a']],
'nested_deps_b' => ['js' => [], 'css' => [], 'dependencies' => ['test/nested_deps_a']],
'nested_deps_c' => ['js' => [], 'css' => [], 'dependencies' => ['test/nested_deps_b']],
@ -139,6 +141,8 @@ class LibraryDependencyResolverTest extends UnitTestCase {
[['test/deps_b', 'test/deps_a'], ['test/deps_b', 'test/deps_a']],
[['test/deps_b', 'test/deps_c'], ['test/deps_b', 'test/deps_c']],
[['test/deps_c', 'test/deps_b'], ['test/deps_c', 'test/deps_b']],
[['test/deps_a', 'test/deps_d', 'test/no_deps_a'], ['test/deps_a', 'test/deps_d']],
[['test/deps_a', 'test/deps_d', 'test/no_deps_d'], ['test/deps_a', 'test/deps_d']],
// Multi-level (indirect) dependencies.
[['test/nested_deps_a'], ['test/nested_deps_a']],
[['test/nested_deps_b'], ['test/nested_deps_b']],