Charset: Allow `_canonical_charset()` to handle mixed-case strings.
Add improved unit tests, and collect existing unit tests together. Props pbearne. Fixes #38337. git-svn-id: https://develop.svn.wordpress.org/trunk@38809 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
535ae49ab6
commit
2ba32a2d48
|
@ -555,7 +555,7 @@ function do_enclose( $content, $post_ID ) {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
|
|
||||||
//TODO: Tidy this ghetto code up and make the debug code optional
|
//TODO: Tidy this ghetto code up and make the debug code optional
|
||||||
include_once( ABSPATH . WPINC . '/class-IXR.php' );
|
include_once( ABSPATH . WPINC . '/class-IXR.php' );
|
||||||
|
|
||||||
$post_links = array();
|
$post_links = array();
|
||||||
|
|
||||||
|
@ -5250,13 +5250,15 @@ function get_tag_regex( $tag ) {
|
||||||
* @return string The canonical form of the charset.
|
* @return string The canonical form of the charset.
|
||||||
*/
|
*/
|
||||||
function _canonical_charset( $charset ) {
|
function _canonical_charset( $charset ) {
|
||||||
if ( 'UTF-8' === $charset || 'utf-8' === $charset || 'utf8' === $charset ||
|
if ( 'utf-8' === strtolower( $charset ) || 'utf8' === strtolower( $charset) ) {
|
||||||
'UTF8' === $charset )
|
|
||||||
return 'UTF-8';
|
return 'UTF-8';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( 'iso-8859-1' === strtolower( $charset ) || 'iso8859-1' === strtolower( $charset ) ) {
|
||||||
|
|
||||||
if ( 'ISO-8859-1' === $charset || 'iso-8859-1' === $charset ||
|
|
||||||
'iso8859-1' === $charset || 'ISO8859-1' === $charset )
|
|
||||||
return 'ISO-8859-1';
|
return 'ISO-8859-1';
|
||||||
|
}
|
||||||
|
|
||||||
return $charset;
|
return $charset;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,88 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Validate that's badly named charsets always return the correct format for UTF-8 and ISO-8859-1
|
||||||
|
*
|
||||||
|
* @since 4.8.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
class Tests_Functions_canonical_charset extends WP_UnitTestCase {
|
||||||
|
|
||||||
|
public function test_utf_8_lower() {
|
||||||
|
$this->assertEquals( 'UTF-8', _canonical_charset( 'utf-8' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_utf_8_upper() {
|
||||||
|
$this->assertEquals( 'UTF-8', _canonical_charset( 'UTF-8' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_utf_8_mixxed() {
|
||||||
|
$this->assertEquals( 'UTF-8', _canonical_charset( 'Utf-8' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_utf_8() {
|
||||||
|
$this->assertEquals( 'UTF-8', _canonical_charset( 'UTF8' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_iso_lower() {
|
||||||
|
$this->assertEquals( 'ISO-8859-1', _canonical_charset( 'iso-8859-1' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_iso_upper() {
|
||||||
|
$this->assertEquals( 'ISO-8859-1', _canonical_charset( 'ISO-8859-1' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_iso_mixxed() {
|
||||||
|
$this->assertEquals( 'ISO-8859-1', _canonical_charset( 'Iso8859-1' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_iso() {
|
||||||
|
$this->assertEquals( 'ISO-8859-1', _canonical_charset( 'ISO8859-1' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_random() {
|
||||||
|
$this->assertEquals( 'random', _canonical_charset( 'random' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_empty() {
|
||||||
|
$this->assertEquals( '', _canonical_charset( '' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ticket 23688
|
||||||
|
*/
|
||||||
|
function test_update_option_blog_charset() {
|
||||||
|
$orig_blog_charset = get_option( 'blog_charset' );
|
||||||
|
|
||||||
|
update_option( 'blog_charset', 'utf8' );
|
||||||
|
$this->assertEquals( 'UTF-8', get_option( 'blog_charset') );
|
||||||
|
|
||||||
|
update_option( 'blog_charset', 'utf-8' );
|
||||||
|
$this->assertEquals( 'UTF-8', get_option( 'blog_charset') );
|
||||||
|
|
||||||
|
update_option( 'blog_charset', 'UTF8' );
|
||||||
|
$this->assertEquals( 'UTF-8', get_option( 'blog_charset') );
|
||||||
|
|
||||||
|
update_option( 'blog_charset', 'UTF-8' );
|
||||||
|
$this->assertEquals( 'UTF-8', get_option( 'blog_charset') );
|
||||||
|
|
||||||
|
update_option( 'blog_charset', 'ISO-8859-1' );
|
||||||
|
$this->assertEquals( 'ISO-8859-1', get_option( 'blog_charset') );
|
||||||
|
|
||||||
|
update_option( 'blog_charset', 'ISO8859-1' );
|
||||||
|
$this->assertEquals( 'ISO-8859-1', get_option( 'blog_charset') );
|
||||||
|
|
||||||
|
update_option( 'blog_charset', 'iso8859-1' );
|
||||||
|
$this->assertEquals( 'ISO-8859-1', get_option( 'blog_charset') );
|
||||||
|
|
||||||
|
update_option( 'blog_charset', 'iso-8859-1' );
|
||||||
|
$this->assertEquals( 'ISO-8859-1', get_option( 'blog_charset') );
|
||||||
|
|
||||||
|
// Arbitrary strings are passed through.
|
||||||
|
update_option( 'blog_charset', 'foobarbaz' );
|
||||||
|
$this->assertEquals( 'foobarbaz', get_option( 'blog_charset') );
|
||||||
|
|
||||||
|
update_option( 'blog_charset', $orig_blog_charset );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue