Make WordPress Core

Changeset 39125


Ignore:
Timestamp:
11/03/2016 07:56:53 PM (9 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.