Skip to content

Commit

Permalink
Code and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
dream-encode committed Nov 11, 2024
1 parent ebfb764 commit 8ac92e5
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 1 deletion.
8 changes: 7 additions & 1 deletion src/wp-includes/feed.php
Original file line number Diff line number Diff line change
Expand Up @@ -837,8 +837,14 @@ function fetch_feed( $url ) {
*/
do_action_ref_array( 'wp_feed_options', array( &$feed, $url ) );

$blog_charset = get_bloginfo( 'charset' );

if ( empty( $blog_charset ) ) {
$blog_charset = 'UTF-8';
}

$feed->init();
$feed->set_output_encoding( get_option( 'blog_charset' ) );
$feed->set_output_encoding( $blog_charset );

if ( $feed->error() ) {
return new WP_Error( 'simplepie-error', $feed->error() );
Expand Down
45 changes: 45 additions & 0 deletions tests/phpunit/tests/feed/fetchFeed.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<?php
/**
* Tests the `fetch_feed` function.
*
* @package WordPress
* @subpackage UnitTests
* @since 6.7.0
*
* @group feed
*/
class Tests_Feed_fetchFeed extends WP_UnitTestCase {

public function set_up() {
parent::set_up();

add_filter( 'pre_http_request', array( $this, 'mocked_rss_response' ) );
}

/**
* @ticket 62354
*/
public function test_empty_charset_does_not_trigger_fatal_error() {
add_filter( 'pre_option_blog_charset', '__return_empty_string', 20 );

$feed = fetch_feed( 'https://wordpress.org/news/feed/' );
}

public function mocked_rss_response() {
$single_value_headers = array(
'Content-Type' => 'application/rss+xml; charset=UTF-8',
'link' => '<https://wordpress.org/news/wp-json/>; rel="https://api.w.org/"',
);

return array(
'headers' => new WpOrg\Requests\Utility\CaseInsensitiveDictionary( $single_value_headers ),
'body' => file_get_contents( DIR_TESTDATA . '/feed/wordpress-org-news.xml' ),
'response' => array(
'code' => 200,
'message' => 'OK',
),
'cookies' => array(),
'filename' => null,
);
}
}

0 comments on commit 8ac92e5

Please sign in to comment.