From abc4e1efedd909c9a7090ed17139b57758122eb9 Mon Sep 17 00:00:00 2001 From: David Monllao Date: Mon, 14 Dec 2015 14:53:07 +0800 Subject: [PATCH] MDL-52487 rss: PHP 7 compatible error supression PHP5 used to update error_reporting to 0 on functions called with the suppress errors operator (@). In PHP7 it is not updated. Credit to Rajesh Taneja. --- blocks/rss_client/tests/cron_test.php | 16 ++++++++++++---- lib/tests/rsslib_test.php | 7 ++++++- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/blocks/rss_client/tests/cron_test.php b/blocks/rss_client/tests/cron_test.php index 9069c287521..e1299a56bd7 100644 --- a/blocks/rss_client/tests/cron_test.php +++ b/blocks/rss_client/tests/cron_test.php @@ -40,7 +40,7 @@ class block_rss_client_cron_testcase extends advanced_testcase { * than the current time the attempt is skipped. */ public function test_skip() { - global $DB; + global $DB, $CFG; $this->resetAfterTest(); // Create a RSS feed record with a skip until time set to the future. $record = (object) array( @@ -57,8 +57,12 @@ class block_rss_client_cron_testcase extends advanced_testcase { $block = new block_rss_client(); ob_start(); + // Silence SimplePie php notices. - @$block->cron(); + $errorlevel = error_reporting($CFG->debug & ~E_USER_NOTICE); + $block->cron(); + error_reporting($errorlevel); + $cronoutput = ob_get_clean(); $this->assertContains('skipping until ' . userdate($record->skipuntil), $cronoutput); $this->assertContains('0 feeds refreshed (took ', $cronoutput); @@ -68,7 +72,7 @@ class block_rss_client_cron_testcase extends advanced_testcase { * Test that when a feed has an error the skip time is increaed correctly. */ public function test_error() { - global $DB; + global $DB, $CFG; $this->resetAfterTest(); $time = time(); // A record that has failed before. @@ -113,8 +117,12 @@ class block_rss_client_cron_testcase extends advanced_testcase { // Run the cron. $block = new block_rss_client(); ob_start(); + // Silence SimplePie php notices. - @$block->cron(); + $errorlevel = error_reporting($CFG->debug & ~E_USER_NOTICE); + $block->cron(); + error_reporting($errorlevel); + $cronoutput = ob_get_clean(); $skiptime1 = $record->skiptime * 2; $message1 = 'http://example.com/rss Error: could not load/find the RSS feed - skipping for ' . $skiptime1 . ' seconds.'; diff --git a/lib/tests/rsslib_test.php b/lib/tests/rsslib_test.php index a10d05ab832..51648c998f7 100644 --- a/lib/tests/rsslib_test.php +++ b/lib/tests/rsslib_test.php @@ -99,7 +99,12 @@ EOD; * Test retrieving a url which doesn't exist. */ public function test_failurl() { - $feed = @new moodle_simplepie($this->getExternalTestFileUrl('/rsstest-which-doesnt-exist.xml'), self::TIMEOUT); // We do not want this in php error log. + global $CFG; + + // We do not want this in php error log. + $errorlevel = error_reporting($CFG->debug & ~E_USER_NOTICE); + $feed = new moodle_simplepie($this->getExternalTestFileUrl('/rsstest-which-doesnt-exist.xml'), self::TIMEOUT); + error_reporting($errorlevel); $this->assertNotEmpty($feed->error()); }