From c3fd1145396ce059505fe1e225b860e425860d5c Mon Sep 17 00:00:00 2001 From: Pascal Birchler Date: Tue, 16 Jan 2024 12:10:47 +0000 Subject: [PATCH] I18N: Do not use `trailingslashit` in `WP_Textdomain_Registry`. This usage of `trailingslashit()`, introduced in [57287], is not only redundant, but also discouraged in order to avoid `formatting.php` dependency (which might not always be loaded). Props SergeyBiryukov. See #58919. git-svn-id: https://develop.svn.wordpress.org/trunk@57290 602fd350-edb4-49c9-b593-d223f7449a82 --- .../class-wp-textdomain-registry.php | 8 ++--- .../tests/l10n/wpTextdomainRegistry.php | 36 +++++++++---------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/wp-includes/class-wp-textdomain-registry.php b/src/wp-includes/class-wp-textdomain-registry.php index f0c8b8ded7..4121ecb091 100644 --- a/src/wp-includes/class-wp-textdomain-registry.php +++ b/src/wp-includes/class-wp-textdomain-registry.php @@ -161,7 +161,7 @@ class WP_Textdomain_Registry { * @return array Array of .mo file paths. */ public function get_language_files_from_path( $path ) { - $path = trailingslashit( $path ); + $path = rtrim( $path, '/' ) . '/'; /** * Filters the .mo files retrieved from a specified path before the actual lookup. @@ -237,13 +237,13 @@ class WP_Textdomain_Registry { foreach ( $translation_types as $type ) { switch ( $type ) { case 'plugin': - wp_cache_delete( 'cached_mo_files_' . md5( trailingslashit( WP_LANG_DIR ) . '/plugins/' ), 'translations' ); + wp_cache_delete( 'cached_mo_files_' . md5( WP_LANG_DIR . '/plugins' ), 'translations' ); break; case 'theme': - wp_cache_delete( 'cached_mo_files_' . md5( trailingslashit( WP_LANG_DIR ) . '/themes/' ), 'translations' ); + wp_cache_delete( 'cached_mo_files_' . md5( WP_LANG_DIR . '/themes' ), 'translations' ); break; default: - wp_cache_delete( 'cached_mo_files_' . md5( trailingslashit( WP_LANG_DIR ) ), 'translations' ); + wp_cache_delete( 'cached_mo_files_' . md5( WP_LANG_DIR ), 'translations' ); break; } } diff --git a/tests/phpunit/tests/l10n/wpTextdomainRegistry.php b/tests/phpunit/tests/l10n/wpTextdomainRegistry.php index c333eb9272..6b117b5f50 100644 --- a/tests/phpunit/tests/l10n/wpTextdomainRegistry.php +++ b/tests/phpunit/tests/l10n/wpTextdomainRegistry.php @@ -19,10 +19,10 @@ class Tests_L10n_wpTextdomainRegistry extends WP_UnitTestCase { } public function tear_down() { - wp_cache_delete( 'cached_mo_files_' . md5( trailingslashit( WP_LANG_DIR ) . '/foobar/' ), 'translations' ); - wp_cache_delete( 'cached_mo_files_' . md5( trailingslashit( WP_LANG_DIR ) . '/plugins/' ), 'translations' ); - wp_cache_delete( 'cached_mo_files_' . md5( trailingslashit( WP_LANG_DIR ) . '/themes/' ), 'translations' ); - wp_cache_delete( 'cached_mo_files_' . md5( trailingslashit( WP_LANG_DIR ) ), 'translations' ); + wp_cache_delete( 'cached_mo_files_' . md5( WP_LANG_DIR . '/foobar' ), 'translations' ); + wp_cache_delete( 'cached_mo_files_' . md5( WP_LANG_DIR . '/plugins' ), 'translations' ); + wp_cache_delete( 'cached_mo_files_' . md5( WP_LANG_DIR . '/themes' ), 'translations' ); + wp_cache_delete( 'cached_mo_files_' . md5( WP_LANG_DIR ), 'translations' ); parent::tear_down(); } @@ -84,14 +84,14 @@ class Tests_L10n_wpTextdomainRegistry extends WP_UnitTestCase { * @covers ::get_language_files_from_path */ public function test_get_language_files_from_path_caches_results() { - $this->instance->get_language_files_from_path( trailingslashit( WP_LANG_DIR ) . '/foobar/' ); - $this->instance->get_language_files_from_path( trailingslashit( WP_LANG_DIR ) . '/plugins/' ); - $this->instance->get_language_files_from_path( trailingslashit( WP_LANG_DIR ) . '/themes/' ); + $this->instance->get_language_files_from_path( trailingslashit( WP_LANG_DIR ) . 'foobar/' ); + $this->instance->get_language_files_from_path( trailingslashit( WP_LANG_DIR ) . 'plugins/' ); + $this->instance->get_language_files_from_path( trailingslashit( WP_LANG_DIR ) . 'themes/' ); $this->instance->get_language_files_from_path( trailingslashit( WP_LANG_DIR ) ); - $this->assertNotFalse( wp_cache_get( 'cached_mo_files_' . md5( trailingslashit( WP_LANG_DIR ) . '/plugins/' ), 'translations' ) ); - $this->assertNotFalse( wp_cache_get( 'cached_mo_files_' . md5( trailingslashit( WP_LANG_DIR ) . '/themes/' ), 'translations' ) ); - $this->assertNotFalse( wp_cache_get( 'cached_mo_files_' . md5( trailingslashit( WP_LANG_DIR ) . '/foobar/' ), 'translations' ) ); + $this->assertNotFalse( wp_cache_get( 'cached_mo_files_' . md5( trailingslashit( WP_LANG_DIR ) . 'plugins/' ), 'translations' ) ); + $this->assertNotFalse( wp_cache_get( 'cached_mo_files_' . md5( trailingslashit( WP_LANG_DIR ) . 'themes/' ), 'translations' ) ); + $this->assertNotFalse( wp_cache_get( 'cached_mo_files_' . md5( trailingslashit( WP_LANG_DIR ) . 'foobar/' ), 'translations' ) ); $this->assertNotFalse( wp_cache_get( 'cached_mo_files_' . md5( trailingslashit( WP_LANG_DIR ) ), 'translations' ) ); } @@ -100,10 +100,10 @@ class Tests_L10n_wpTextdomainRegistry extends WP_UnitTestCase { */ public function test_get_language_files_from_path_short_circuit() { add_filter( 'pre_get_language_files_from_path', '__return_empty_array' ); - $result = $this->instance->get_language_files_from_path( trailingslashit( WP_LANG_DIR ) . '/plugins/' ); + $result = $this->instance->get_language_files_from_path( WP_LANG_DIR . '/plugins' ); remove_filter( 'pre_get_language_files_from_path', '__return_empty_array' ); - $cache = wp_cache_get( 'cached_mo_files_' . md5( trailingslashit( WP_LANG_DIR ) . '/plugins/' ), 'translations' ); + $cache = wp_cache_get( 'cached_mo_files_' . md5( WP_LANG_DIR . 'plugins' ), 'translations' ); $this->assertEmpty( $result ); $this->assertFalse( $cache ); @@ -113,9 +113,9 @@ class Tests_L10n_wpTextdomainRegistry extends WP_UnitTestCase { * @covers ::invalidate_mo_files_cache */ public function test_invalidate_mo_files_cache() { - $this->instance->get_language_files_from_path( trailingslashit( WP_LANG_DIR ) . '/plugins/' ); - $this->instance->get_language_files_from_path( trailingslashit( WP_LANG_DIR ) . '/themes/' ); - $this->instance->get_language_files_from_path( trailingslashit( WP_LANG_DIR ) ); + $this->instance->get_language_files_from_path( WP_LANG_DIR . '/plugins' ); + $this->instance->get_language_files_from_path( WP_LANG_DIR . '/themes' ); + $this->instance->get_language_files_from_path( WP_LANG_DIR ); $this->instance->invalidate_mo_files_cache( null, @@ -144,9 +144,9 @@ class Tests_L10n_wpTextdomainRegistry extends WP_UnitTestCase { ) ); - $this->assertFalse( wp_cache_get( 'cached_mo_files_' . md5( trailingslashit( WP_LANG_DIR ) . '/plugins/' ), 'translations' ) ); - $this->assertFalse( wp_cache_get( 'cached_mo_files_' . md5( trailingslashit( WP_LANG_DIR ) . '/themes/' ), 'translations' ) ); - $this->assertFalse( wp_cache_get( 'cached_mo_files_' . md5( trailingslashit( WP_LANG_DIR ) ), 'translations' ) ); + $this->assertFalse( wp_cache_get( 'cached_mo_files_' . md5( WP_LANG_DIR . '/plugins' ), 'translations' ) ); + $this->assertFalse( wp_cache_get( 'cached_mo_files_' . md5( WP_LANG_DIR . '/themes' ), 'translations' ) ); + $this->assertFalse( wp_cache_get( 'cached_mo_files_' . md5( WP_LANG_DIR ), 'translations' ) ); } public function data_domains_locales() {