Make WordPress Core

Changeset 39125


Ignore:
Timestamp:
11/03/2016 07:56:53 PM (10 years ago)
Author:
swissspidy
Message:

I18N: Move load_textdomain() tests to separate file.

See #38485.

Location:
trunk/tests/phpunit/tests
Files:
1 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/l10n.php

    r38930 r39125  
    3434        }
    3535
    36         function test_load_unload_textdomain() {
    37                 $this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
    38                 $this->assertFalse( unload_textdomain( 'wp-tests-domain' ) );
    39 
    40                 $file = DIR_TESTDATA . '/pomo/simple.mo';
    41                 $this->assertTrue( load_textdomain( 'wp-tests-domain', $file ) );
    42                 $this->assertTrue( is_textdomain_loaded( 'wp-tests-domain' ) );
    43                 $this->assertTrue( unload_textdomain( 'wp-tests-domain' ) );
    44                 $this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
    45         }
    46 
    4736        /**
    4837         * @ticket 35073
     
    5241                $this->assertEquals( 'before-last-bar', before_last_bar( 'before-last-bar|after-bar' ) );
    5342                $this->assertEquals( 'first-before-bar|second-before-bar', before_last_bar( 'first-before-bar|second-before-bar|after-last-bar' ) );
    54         }
    55 
    56         /**
    57          * @ticket 21319
    58          */
    59         function test_is_textdomain_loaded_for_no_translations() {
    60                 $this->assertFalse( load_textdomain( 'wp-tests-domain', DIR_TESTDATA . '/non-existent-file' ) );
    61                 $this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
    62                 $this->assertInstanceOf( 'NOOP_Translations', get_translations_for_domain( 'wp-tests-domain' ) );
    63                 // Ensure that we don't confuse NOOP_Translations to be a loaded text domain.
    64                 $this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
    65                 $this->assertFalse( unload_textdomain( 'wp-tests-domain' ) );
    66         }
    67 
    68         /**
    69          * @ticket 21319
    70          */
    71         function test_is_textdomain_is_not_loaded_after_gettext_call_with_no_translations() {
    72                 $this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
    73                 __( 'just some string', 'wp-tests-domain' );
    74                 $this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
    7543        }
    7644
     
    177145                $this->assertNotEmpty( $array['X-Generator'] );
    178146        }
    179 
    180         function test_override_load_textdomain_noop() {
    181                 add_filter( 'override_load_textdomain', '__return_true' );
    182                 $load_textdomain = load_textdomain( 'wp-tests-domain', DIR_TESTDATA . '/non-existent-file' );
    183                 remove_filter( 'override_load_textdomain', '__return_true' );
    184 
    185                 $this->assertTrue( $load_textdomain );
    186                 $this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
    187         }
    188 
    189         function test_override_load_textdomain_non_existent_mofile() {
    190                 add_filter( 'override_load_textdomain', array( $this, '_override_load_textdomain_filter' ), 10, 3 );
    191                 $load_textdomain = load_textdomain( 'wp-tests-domain', WP_LANG_DIR . '/non-existent-file.mo' );
    192                 remove_filter( 'override_load_textdomain', array( $this, '_override_load_textdomain_filter' ) );
    193 
    194                 $is_textdomain_loaded = is_textdomain_loaded( 'wp-tests-domain' );
    195                 unload_textdomain( 'wp-tests-domain' );
    196                 $is_textdomain_loaded_after = is_textdomain_loaded( 'wp-tests-domain' );
    197 
    198                 $this->assertFalse( $load_textdomain );
    199                 $this->assertFalse( $is_textdomain_loaded );
    200                 $this->assertFalse( $is_textdomain_loaded_after );
    201         }
    202 
    203         function test_override_load_textdomain_custom_mofile() {
    204                 add_filter( 'override_load_textdomain', array( $this, '_override_load_textdomain_filter' ), 10, 3 );
    205                 $load_textdomain = load_textdomain( 'wp-tests-domain', WP_LANG_DIR . '/plugins/internationalized-plugin-de_DE.mo' );
    206                 remove_filter( 'override_load_textdomain', array( $this, '_override_load_textdomain_filter' ) );
    207 
    208                 $is_textdomain_loaded = is_textdomain_loaded( 'wp-tests-domain' );
    209                 unload_textdomain( 'wp-tests-domain' );
    210                 $is_textdomain_loaded_after = is_textdomain_loaded( 'wp-tests-domain' );
    211 
    212                 $this->assertTrue( $load_textdomain );
    213                 $this->assertTrue( $is_textdomain_loaded );
    214                 $this->assertFalse( $is_textdomain_loaded_after );
    215         }
    216 
    217         /**
    218          * @param bool   $override Whether to override the .mo file loading. Default false.
    219          * @param string $domain   Text domain. Unique identifier for retrieving translated strings.
    220          * @param string $mofile   Path to the MO file.
    221          * @return bool
    222          */
    223         function _override_load_textdomain_filter( $override, $domain, $file ) {
    224                 global $l10n;
    225 
    226                 if ( ! is_readable( $file ) ) {
    227                         return false;
    228                 }
    229 
    230                 $mo = new MO();
    231 
    232                 if ( ! $mo->import_from_file( $file ) ) {
    233                         return false;
    234                 }
    235 
    236                 if ( isset( $l10n[ $domain ] ) ) {
    237                         $mo->merge_with( $l10n[ $domain ] );
    238                 }
    239 
    240                 $l10n[ $domain ] = &$mo;
    241 
    242                 return true;
    243         }
    244147}
  • trunk/tests/phpunit/tests/l10n/loadTextdomain.php

    r39124 r39125  
    55 * @group i18n
    66 */
    7 class Tests_L10n extends WP_UnitTestCase {
     7class Tests_L10n_loadTextdomain extends WP_UnitTestCase {
     8        protected $locale;
    89
    9         /**
    10          * @ticket 35961
    11          */
    12         function test_n_noop() {
    13                 $text_domain   = 'text-domain';
    14                 $nooped_plural = _n_noop( '%s post', '%s posts', $text_domain );
     10        public function setUp() {
     11                parent::setUp();
    1512
    16                 $this->assertNotEmpty( $nooped_plural['domain'] );
    17                 $this->assertEquals( '%s posts', translate_nooped_plural( $nooped_plural, 0, $text_domain ) );
    18                 $this->assertEquals( '%s post', translate_nooped_plural( $nooped_plural, 1, $text_domain ) );
    19                 $this->assertEquals( '%s posts', translate_nooped_plural( $nooped_plural, 2, $text_domain ) );
     13                $this->locale = '';
     14
     15                add_filter( 'plugin_locale', array( $this, 'store_locale' ) );
     16                add_filter( 'theme_locale', array( $this, 'store_locale' ) );
    2017        }
    2118
    22         /**
    23          * @ticket 35961
    24          */
    25         function test_nx_noop() {
    26                 $text_domain   = 'text-domain';
    27                 $nooped_plural = _nx_noop( '%s post', '%s posts', 'my-context', $text_domain );
     19        public function tearDown() {
     20                remove_filter( 'plugin_locale', array( $this, 'store_locale' ) );
     21                remove_filter( 'theme_locale', array( $this, 'store_locale' ) );
    2822
    29                 $this->assertNotEmpty( $nooped_plural['domain'] );
    30                 $this->assertNotEmpty( $nooped_plural['context'] );
    31                 $this->assertEquals( '%s posts', translate_nooped_plural( $nooped_plural, 0, $text_domain ) );
    32                 $this->assertEquals( '%s post', translate_nooped_plural( $nooped_plural, 1, $text_domain ) );
    33                 $this->assertEquals( '%s posts', translate_nooped_plural( $nooped_plural, 2, $text_domain ) );
     23                parent::tearDown();
    3424        }
    3525
    36         function test_load_unload_textdomain() {
    37                 $this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
    38                 $this->assertFalse( unload_textdomain( 'wp-tests-domain' ) );
     26        public function store_locale( $locale ) {
     27                $this->locale = $locale;
    3928
    40                 $file = DIR_TESTDATA . '/pomo/simple.mo';
    41                 $this->assertTrue( load_textdomain( 'wp-tests-domain', $file ) );
    42                 $this->assertTrue( is_textdomain_loaded( 'wp-tests-domain' ) );
    43                 $this->assertTrue( unload_textdomain( 'wp-tests-domain' ) );
     29                return $locale;
     30        }
     31
     32        public function test_is_textdomain_loaded(  ) {
    4433                $this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
    4534        }
    4635
    47         /**
    48          * @ticket 35073
    49          */
    50         function test_before_last_bar() {
    51                 $this->assertEquals( 'no-bar-at-all', before_last_bar( 'no-bar-at-all' ) );
    52                 $this->assertEquals( 'before-last-bar', before_last_bar( 'before-last-bar|after-bar' ) );
    53                 $this->assertEquals( 'first-before-bar|second-before-bar', before_last_bar( 'first-before-bar|second-before-bar|after-last-bar' ) );
     36        public function test_unload_textdomain(  ) {
     37                $this->assertFalse( unload_textdomain( 'wp-tests-domain' ) );
     38        }
     39
     40        public function test_load_textdomain() {
     41                $loaded = load_textdomain( 'wp-tests-domain', DIR_TESTDATA . '/pomo/simple.mo' );
     42
     43                unload_textdomain( 'wp-tests-domain' );
     44
     45                $this->assertTrue( $loaded );
     46        }
     47
     48        public function test_is_textdomain_loaded_after_loading(  ) {
     49                load_textdomain( 'wp-tests-domain', DIR_TESTDATA . '/pomo/simple.mo' );
     50
     51                $loaded = is_textdomain_loaded( 'wp-tests-domain' );
     52
     53                unload_textdomain( 'wp-tests-domain' );
     54
     55                $this->assertTrue( $loaded );
     56        }
     57
     58        public function test_unload_textdomain_after_loading(  ) {
     59                load_textdomain( 'wp-tests-domain', DIR_TESTDATA . '/pomo/simple.mo' );
     60
     61                $this->assertTrue( unload_textdomain( 'wp-tests-domain' ) );
     62        }
     63
     64        public function test_is_textdomain_loaded_after_unloading(  ) {
     65                load_textdomain( 'wp-tests-domain', DIR_TESTDATA . '/pomo/simple.mo' );
     66
     67                unload_textdomain( 'wp-tests-domain' );
     68
     69                $this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
    5470        }
    5571
     
    5773         * @ticket 21319
    5874         */
    59         function test_is_textdomain_loaded_for_no_translations() {
     75        public function test_load_textdomain_non_existent_file() {
    6076                $this->assertFalse( load_textdomain( 'wp-tests-domain', DIR_TESTDATA . '/non-existent-file' ) );
     77        }
     78
     79        /**
     80         * @ticket 21319
     81         */
     82        public function test_is_textdomain_loaded_non_existent_file(  ) {
     83                load_textdomain( 'wp-tests-domain', DIR_TESTDATA . '/non-existent-file' );
     84
    6185                $this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
     86        }
     87
     88        /**
     89         * @ticket 21319
     90         */
     91        public function test_get_translations_for_domain_non_existent_file(  ) {
     92                load_textdomain( 'wp-tests-domain', DIR_TESTDATA . '/non-existent-file' );
     93
    6294                $this->assertInstanceOf( 'NOOP_Translations', get_translations_for_domain( 'wp-tests-domain' ) );
    63                 // Ensure that we don't confuse NOOP_Translations to be a loaded text domain.
    64                 $this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
     95        }
     96
     97        /**
     98         * @ticket 21319
     99         */
     100        public function test_unload_textdomain_non_existent_file() {
     101                load_textdomain( 'wp-tests-domain', DIR_TESTDATA . '/non-existent-file' );
     102
    65103                $this->assertFalse( unload_textdomain( 'wp-tests-domain' ) );
    66104        }
     
    73111                __( 'just some string', 'wp-tests-domain' );
    74112                $this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
    75         }
    76 
    77         /**
    78          * @ticket 35950
    79          */
    80         function test_get_available_languages() {
    81                 $array = get_available_languages();
    82                 $this->assertInternalType( 'array', $array );
    83 
    84                 $array = get_available_languages( '.' );
    85                 $this->assertEmpty( $array );
    86 
    87                 $array = get_available_languages( DIR_TESTDATA . '/languages/' );
    88                 $this->assertEquals( array( 'de_DE', 'en_GB', 'es_ES' ), $array );
    89         }
    90 
    91         /**
    92          * @ticket 35284
    93          */
    94         function test_wp_get_installed_translations_for_core() {
    95                 $installed_translations = wp_get_installed_translations( 'core' );
    96                 $this->assertInternalType( 'array', $installed_translations );
    97                 $textdomains_expected = array( 'admin', 'admin-network', 'continents-cities', 'default' );
    98                 $this->assertEqualSets( $textdomains_expected, array_keys( $installed_translations ) );
    99 
    100                 $this->assertNotEmpty( $installed_translations['default']['en_GB'] );
    101                 $data_en_GB = $installed_translations['default']['en_GB'];
    102                 $this->assertEquals( '2016-10-26 00:01+0200', $data_en_GB['PO-Revision-Date'] );
    103                 $this->assertEquals( 'Development (4.4.x)', $data_en_GB['Project-Id-Version'] );
    104                 $this->assertEquals( 'Poedit 1.8.10', $data_en_GB['X-Generator'] );
    105 
    106                 $this->assertNotEmpty( $installed_translations['admin']['es_ES'] );
    107                 $data_es_ES = $installed_translations['admin']['es_ES'];
    108                 $this->assertEquals( '2016-10-25 18:29+0200', $data_es_ES['PO-Revision-Date'] );
    109                 $this->assertEquals( 'Administration', $data_es_ES['Project-Id-Version'] );
    110                 $this->assertEquals( 'Poedit 1.8.10', $data_es_ES['X-Generator'] );
    111         }
    112 
    113         /**
    114          * @ticket 35294
    115          */
    116         function test_wp_dropdown_languages() {
    117                 $args = array(
    118                         'id'           => 'foo',
    119                         'name'         => 'bar',
    120                         'languages'    => array( 'de_DE' ),
    121                         'translations' => $this->wp_dropdown_languages_filter(),
    122                         'selected'     => 'de_DE',
    123                         'echo'         => false,
    124                 );
    125                 $actual = wp_dropdown_languages( $args );
    126 
    127                 $this->assertContains( 'id="foo"', $actual );
    128                 $this->assertContains( 'name="bar"', $actual );
    129                 $this->assertContains( '<option value="" lang="en" data-installed="1">English (United States)</option>', $actual );
    130                 $this->assertContains( '<option value="de_DE" lang="de" selected=\'selected\' data-installed="1">Deutsch</option>', $actual );
    131                 $this->assertContains( '<option value="it_IT" lang="it">Italiano</option>', $actual );
    132         }
    133 
    134         /**
    135          * We don't want to call the API when testing.
    136          *
    137          * @return array
    138          */
    139         function wp_dropdown_languages_filter() {
    140                 return array(
    141                         'de_DE' => array(
    142                                 'language'    => 'de_DE',
    143                                 'native_name' => 'Deutsch',
    144                                 'iso'         => array( 'de' ),
    145                         ),
    146                         'it_IT' => array(
    147                                 'language'    => 'it_IT',
    148                                 'native_name' => 'Italiano',
    149                                 'iso'         => array( 'it', 'ita' ),
    150                         ),
    151                 );
    152         }
    153 
    154         /**
    155          * @ticket 35284
    156          */
    157         function test_wp_get_pomo_file_data() {
    158                 $file  = DIR_TESTDATA . '/pomo/empty.po';
    159                 $array = wp_get_pomo_file_data( $file );
    160                 $this->assertArrayHasKey( 'POT-Creation-Date', $array );
    161                 $this->assertArrayHasKey( 'PO-Revision-Date', $array );
    162                 $this->assertArrayHasKey( 'Project-Id-Version', $array );
    163                 $this->assertArrayHasKey( 'X-Generator', $array );
    164 
    165                 $file  = DIR_TESTDATA . '/pomo/mo.pot';
    166                 $array = wp_get_pomo_file_data( $file );
    167                 $this->assertNotEmpty( $array['POT-Creation-Date'] );
    168                 $this->assertNotEmpty( $array['PO-Revision-Date'] );
    169                 $this->assertNotEmpty( $array['Project-Id-Version'] );
    170                 $this->assertArrayHasKey( 'X-Generator', $array );
    171 
    172                 $file  = DIR_TESTDATA . '/languages/es_ES.po';
    173                 $array = wp_get_pomo_file_data( $file );
    174                 $this->assertArrayHasKey( 'POT-Creation-Date', $array );
    175                 $this->assertNotEmpty( $array['PO-Revision-Date'] );
    176                 $this->assertNotEmpty( $array['Project-Id-Version'] );
    177                 $this->assertNotEmpty( $array['X-Generator'] );
    178113        }
    179114
     
    218153         * @param bool   $override Whether to override the .mo file loading. Default false.
    219154         * @param string $domain   Text domain. Unique identifier for retrieving translated strings.
    220          * @param string $mofile   Path to the MO file.
     155         * @param string $file     Path to the MO file.
    221156         * @return bool
    222157         */
     
    242177                return true;
    243178        }
     179
     180        public function test_load_muplugin_textdomain_site_locale() {
     181                load_muplugin_textdomain( 'wp-tests-domain' );
     182
     183                $this->assertSame( get_locale(), $this->locale );
     184        }
     185
     186        public function test_load_plugin_textdomain_site_locale() {
     187                load_plugin_textdomain( 'wp-tests-domain' );
     188
     189                $this->assertSame( get_locale(), $this->locale );
     190        }
     191
     192        public function test_load_theme_textdomain_site_locale() {
     193                load_theme_textdomain( 'wp-tests-domain' );
     194
     195                $this->assertSame( get_locale(), $this->locale );
     196        }
    244197}
Note: See TracChangeset for help on using the changeset viewer.