Commit 60c25e5d authored by catch's avatar catch
Browse files

Issue #2594669 by Wim Leers, borisson_, dawehner, catch:...

Issue #2594669 by Wim Leers, borisson_, dawehner, catch: LibraryDependencyResolver::getMinimalRepresentativeSubset() accepts a set as the input but doesn't complain if it's not actually a set
parent 7e411862
Loading
Loading
Loading
Loading
+2 −0
Changes for core/lib/Drupal/Core/Asset/LibraryDependencyResolver.php: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -65,6 +65,8 @@ protected function doGetDependencies(array $libraries_with_unresolved_dependenci
   * {@inheritdoc}
   */
  public function getMinimalRepresentativeSubset(array $libraries) {
    assert('count($libraries) === count(array_unique($libraries))', '$libraries can\'t contain duplicate items.');

    $minimal = [];

    // Determine each library's dependencies.
+2 −2
Changes for core/modules/system/system.module: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -766,10 +766,10 @@ function system_js_settings_alter(&$settings, AttachedAssetsInterface $assets) {
    }
    // Provide the page with information about the individual asset libraries
    // 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->getAlreadyLoadedLibraries()
    ));
    )));
    sort($minimal_libraries);
    $settings['ajaxPageState']['libraries'] = implode(',', $minimal_libraries);
  }
+8 −0
Changes for core/tests/Drupal/Tests/Core/Asset/LibraryDependencyResolverTest.php: 8 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -169,4 +169,12 @@ public function testGetMinimalRepresentativeSubset(array $libraries, array $expe
    $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']);
  }

}