Issue #2594669 by Wim Leers, borisson_, catch, dawehner: LibraryDependencyResolver::getMinimalRepresentativeSubset() accepts a set as the input but doesn't complain if it's not actually a set
parent
246a31c42f
commit
b8c09bea47
|
@ -65,6 +65,8 @@ class LibraryDependencyResolver implements LibraryDependencyResolverInterface {
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
public function getMinimalRepresentativeSubset(array $libraries) {
|
public function getMinimalRepresentativeSubset(array $libraries) {
|
||||||
|
assert(count($libraries) === count(array_unique($libraries)), '$libraries can\'t contain duplicate items.');
|
||||||
|
|
||||||
$minimal = [];
|
$minimal = [];
|
||||||
|
|
||||||
// Determine each library's dependencies.
|
// Determine each library's dependencies.
|
||||||
|
|
|
@ -766,10 +766,10 @@ function system_js_settings_alter(&$settings, AttachedAssetsInterface $assets) {
|
||||||
}
|
}
|
||||||
// Provide the page with information about the individual asset libraries
|
// Provide the page with information about the individual asset libraries
|
||||||
// used, information not otherwise available when aggregation is enabled.
|
// used, information not otherwise available when aggregation is enabled.
|
||||||
$minimal_libraries = $library_dependency_resolver->getMinimalRepresentativeSubset(array_merge(
|
$minimal_libraries = $library_dependency_resolver->getMinimalRepresentativeSubset(array_unique(array_merge(
|
||||||
$assets->getLibraries(),
|
$assets->getLibraries(),
|
||||||
$assets->getAlreadyLoadedLibraries()
|
$assets->getAlreadyLoadedLibraries()
|
||||||
));
|
)));
|
||||||
sort($minimal_libraries);
|
sort($minimal_libraries);
|
||||||
$settings['ajaxPageState']['libraries'] = implode(',', $minimal_libraries);
|
$settings['ajaxPageState']['libraries'] = implode(',', $minimal_libraries);
|
||||||
}
|
}
|
||||||
|
|
|
@ -169,4 +169,12 @@ class LibraryDependencyResolverTest extends UnitTestCase {
|
||||||
$this->assertEquals($expected, $this->libraryDependencyResolver->getMinimalRepresentativeSubset($libraries));
|
$this->assertEquals($expected, $this->libraryDependencyResolver->getMinimalRepresentativeSubset($libraries));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers ::getMinimalRepresentativeSubset
|
||||||
|
*/
|
||||||
|
public function testGetMinimalRepresentativeSubsetInvalidInput() {
|
||||||
|
$this->setExpectedException(\AssertionError::class, '$libraries can\'t contain duplicate items.');
|
||||||
|
$this->libraryDependencyResolver->getMinimalRepresentativeSubset(['test/no_deps_a', 'test/no_deps_a']);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue