MDL-52487 rss: PHP 7 compatible error supression
authorDavid Monllao <davidm@moodle.com>
Mon, 14 Dec 2015 06:53:07 +0000 (14:53 +0800)
committerDavid Monllao <davidm@moodle.com>
Mon, 14 Dec 2015 07:28:37 +0000 (15:28 +0800)
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
lib/tests/rsslib_test.php

index 9069c28..e1299a5 100644 (file)
@@ -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.';
index a10d05a..51648c9 100644 (file)
@@ -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());
     }