dbnschools / moodle-theme_fordson

Theme for Moodle 3.3+
42 stars 40 forks source link

Moodle 3.9 unit test failure #144

Open mattporritt opened 3 years ago

mattporritt commented 3 years ago

When running the following unit test in Moodle 3.9 (as part of the core unit test suite), an error occurs.

To run the unit test: vendor/bin/phpunit "core_component_testcase" lib/tests/component_test.php

The error:

1) core_component_testcase::test_get_component_classes_in_namespace
Undefined property: stdClass::$coursetilestyle

/var/www/moodle39/theme/fordson/classes/output/core/course_renderer.php:49
/var/www/moodle39/lib/classes/component.php:135
/var/www/moodle39/lib/classes/component.php:907
/var/www/moodle39/lib/tests/component_test.php:515
/var/www/moodle39/lib/phpunit/classes/advanced_testcase.php:80

It looks that during (at least the unit tests) $PAGE->theme->settings->coursetilestyle is not instantiated. A very quick fix is the following patch:

diff --git a/classes/output/core/course_renderer.php b/classes/output/core/course_renderer.php
index 463f821..fcb4e83 100755
--- a/classes/output/core/course_renderer.php
+++ b/classes/output/core/course_renderer.php
@@ -46,7 +46,7 @@ global $PAGE;
  * @copyright  2016 Frédéric Massart - FMCorz.net
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
-if ($PAGE->theme->settings->coursetilestyle < 10) {
+if (!empty($PAGE->theme->settings->coursetilestyle) && $PAGE->theme->settings->coursetilestyle < 10) {
     class course_renderer extends \core_course_renderer  {
         protected $countcategories = 0;