diff options
author | John Molakvoæ <skjnldsv@users.noreply.github.com> | 2023-05-12 10:47:46 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-12 10:47:46 +0200 |
commit | 174c226c28fbedacbe6c83ee6e8979b2eaa74ce1 (patch) | |
tree | d1e29fa4b621463c53a91051137785a703b5e39b | |
parent | 0d3df2c795ad1ae1222c1b3408fe02b7e2e1e1bf (diff) | |
parent | 31c01fa3da094897d2bffbbf2bd4848773c62c67 (diff) | |
download | nextcloud-server-174c226c28fbedacbe6c83ee6e8979b2eaa74ce1.tar.gz nextcloud-server-174c226c28fbedacbe6c83ee6e8979b2eaa74ce1.zip |
Merge pull request #38207 from nextcloud/fix/jsresourcelocator-l10n-handling
-rw-r--r-- | lib/private/Template/JSResourceLocator.php | 25 | ||||
-rw-r--r-- | tests/lib/Template/JSResourceLocatorTest.php | 22 |
2 files changed, 38 insertions, 9 deletions
diff --git a/lib/private/Template/JSResourceLocator.php b/lib/private/Template/JSResourceLocator.php index 120234146e1..61611c69b0f 100644 --- a/lib/private/Template/JSResourceLocator.php +++ b/lib/private/Template/JSResourceLocator.php @@ -99,21 +99,28 @@ class JSResourceLocator extends ResourceLocator { // gets turned into cwd. $app_path = realpath($app_path); - // missing translations files will be ignored - if (strpos($script, 'l10n/') === 0) { - $this->appendScriptIfExist($app_path, $script, $app_url); + // check combined files + if ($this->cacheAndAppendCombineJsonIfExist($app_path, $script.'.json', $app)) { return; } - if (!$this->cacheAndAppendCombineJsonIfExist($app_path, $script.'.json', $app)) { - $this->appendScriptIfExist($app_path, $script, $app_url); + // fallback to plain file location + if ($this->appendScriptIfExist($app_path, $script, $app_url)) { + return; } } catch (AppPathNotFoundException) { - $this->logger->error('Could not find resource {resource} to load', [ - 'resource' => $app . '/' . $script . '.js', - 'app' => 'jsresourceloader', - ]); + // pass (general error handling happens below) } + + // missing translations files will be ignored + if (strpos($script, 'l10n/') === 0) { + return; + } + + $this->logger->error('Could not find resource {resource} to load', [ + 'resource' => $app . '/' . $script . '.js', + 'app' => 'jsresourceloader', + ]); } /** diff --git a/tests/lib/Template/JSResourceLocatorTest.php b/tests/lib/Template/JSResourceLocatorTest.php index 9ac6a32e22c..f5af138060a 100644 --- a/tests/lib/Template/JSResourceLocatorTest.php +++ b/tests/lib/Template/JSResourceLocatorTest.php @@ -26,6 +26,7 @@ namespace Test\Template; use OC\SystemConfig; use OC\Template\JSCombiner; use OC\Template\JSResourceLocator; +use OCP\App\AppPathNotFoundException; use OCP\App\IAppManager; use OCP\Files\IAppData; use OCP\ICacheFactory; @@ -139,6 +140,27 @@ class JSResourceLocatorTest extends \Test\TestCase { $this->rrmdir($new_apps_path); } + public function testNotExistingTranslationHandledSilent() { + $this->appManager->expects($this->once()) + ->method('getAppPath') + ->with('core') + ->willThrowException(new AppPathNotFoundException()); + $this->appManager->expects($this->once()) + ->method('getAppWebPath') + ->with('core') + ->willThrowException(new AppPathNotFoundException()); + // Assert logger is not called + $this->logger->expects($this->never()) + ->method('error'); + + // Run the tests + $locator = $this->jsResourceLocator(); + $locator->find(["core/l10n/en.js"]); + + $resources = $locator->getResources(); + $this->assertCount(0, $resources); + } + public function testFindModuleJSWithFallback() { // First create new apps path, and a symlink to it $apps_dirname = $this->randomString(); |