.../LibraryDefinitionMissingLicenseException.php | 15 +++++++ core/lib/Drupal/Core/Asset/LibraryDiscovery.php | 6 +++ core/modules/system/system.routing.yml | 8 ---- .../Tests/Core/Asset/LibraryDiscoveryTest.php | 46 +++++++++++++++++++--- .../licenses_missing_information.libraries.yml | 9 +++++ 5 files changed, 70 insertions(+), 14 deletions(-) diff --git a/core/lib/Drupal/Core/Asset/Exception/LibraryDefinitionMissingLicenseException.php b/core/lib/Drupal/Core/Asset/Exception/LibraryDefinitionMissingLicenseException.php index e69de29..2ed2c70 100644 --- a/core/lib/Drupal/Core/Asset/Exception/LibraryDefinitionMissingLicenseException.php +++ b/core/lib/Drupal/Core/Asset/Exception/LibraryDefinitionMissingLicenseException.php @@ -0,0 +1,15 @@ +moduleHandler->expects($this->atLeastOnce()) + ->method('moduleExists') + ->with('licenses_missing_information') + ->will($this->returnValue(TRUE)); + + $path = __DIR__ . '/library_test_files'; + $path = substr($path, strlen(DRUPAL_ROOT) + 1); + $this->libraryDiscovery->setPaths('module', 'licenses_missing_information', $path); + + // For libraries without license info, the default license is applied. + $library = $this->libraryDiscovery->getLibraryByName('licenses_missing_information', 'no-license-info-but-remote'); + $this->assertCount(1, $library['css']); + $this->assertCount(1, $library['js']); + $this->assertTrue(isset($library['license'])); + $default_license = array( + 'name' => 'GNU-GPL-2.0-or-later', + 'url' => 'https://drupal.org/licensing/faq', + 'gpl-compatible' => TRUE, + ); + $this->assertEquals($library['license'], $default_license); + } + + /** * Tests a library with various licenses, some GPL-compatible, some not. * * @covers ::buildLibrariesByExtension() @@ -400,7 +434,7 @@ public function testLibraryWithLicenses() { 'url' => 'https://drupal.org/licensing/faq', 'gpl-compatible' => TRUE, ); - $this->assertEquals($library['license'], $default_license, 'Default license is applied.'); + $this->assertEquals($library['license'], $default_license); // GPL2-licensed libraries. $library = $this->libraryDiscovery->getLibraryByName('licenses', 'gpl2'); @@ -411,7 +445,7 @@ public function testLibraryWithLicenses() { 'url' => 'https://url-to-gpl2-license', 'gpl-compatible' => TRUE, ); - $this->assertEquals($library['license'], $expected_license, 'Expected license metadata found.'); + $this->assertEquals($library['license'], $expected_license); // MIT-licensed libraries. $library = $this->libraryDiscovery->getLibraryByName('licenses', 'mit'); @@ -422,7 +456,7 @@ public function testLibraryWithLicenses() { 'url' => 'https://url-to-mit-license', 'gpl-compatible' => TRUE, ); - $this->assertEquals($library['license'], $expected_license, 'Expected license metadata found.'); + $this->assertEquals($library['license'], $expected_license); // Libraries in the Public Domain. $library = $this->libraryDiscovery->getLibraryByName('licenses', 'public-domain'); @@ -433,7 +467,7 @@ public function testLibraryWithLicenses() { 'url' => 'https://url-to-public-domain-license', 'gpl-compatible' => TRUE, ); - $this->assertEquals($library['license'], $expected_license, 'Expected license metadata found.'); + $this->assertEquals($library['license'], $expected_license); // Apache-licensed libraries. $library = $this->libraryDiscovery->getLibraryByName('licenses', 'apache'); @@ -444,7 +478,7 @@ public function testLibraryWithLicenses() { 'url' => 'https://url-to-apache-license', 'gpl-compatible' => FALSE, ); - $this->assertEquals($library['license'], $expected_license, 'Expected license metadata found.'); + $this->assertEquals($library['license'], $expected_license); // Copyrighted libraries. $library = $this->libraryDiscovery->getLibraryByName('licenses', 'copyright'); @@ -454,7 +488,7 @@ public function testLibraryWithLicenses() { 'name' => '© Some company', 'gpl-compatible' => FALSE, ); - $this->assertEquals($library['license'], $expected_license, 'Expected license metadata found.'); + $this->assertEquals($library['license'], $expected_license); } /** diff --git a/core/tests/Drupal/Tests/Core/Asset/library_test_files/licenses_missing_information.libraries.yml b/core/tests/Drupal/Tests/Core/Asset/library_test_files/licenses_missing_information.libraries.yml index e69de29..f36d061 100644 --- a/core/tests/Drupal/Tests/Core/Asset/library_test_files/licenses_missing_information.libraries.yml +++ b/core/tests/Drupal/Tests/Core/Asset/library_test_files/licenses_missing_information.libraries.yml @@ -0,0 +1,9 @@ +# No license information for a 3rd party library (it has the 'remote' key). +no-license-info-but-remote: + version: 1.0 + remote: https://url-to-remote + js: + no-license-info-but-remote.js: {} + css: + base: + no-license-info-but-remote.css: {}