This commit is contained in:
Sara Arjona 2024-04-26 10:48:24 +02:00
commit 59844c271e
No known key found for this signature in database
10 changed files with 55 additions and 54 deletions

View File

@ -26,6 +26,7 @@
namespace core_backup;
use memory_xml_output;
use phpunit_util;
use xml_contenttransformer;
use xml_output;
use xml_writer;
@ -314,7 +315,7 @@ class writer_test extends \basic_testcase {
$fcontents = file_get_contents($CFG->dirroot . '/backup/util/xml/tests/fixtures/test1.xml');
// Normalise carriage return characters.
$fcontents = str_replace("\r\n", "\n", $fcontents);
$fcontents = phpunit_util::normalise_line_endings($fcontents);
$this->assertEquals(trim($result), trim($fcontents));
}
}

View File

@ -990,6 +990,16 @@ class phpunit_util extends testing_util {
return str_repeat(" ", $level * 2) . "{$string}\n";
}
/**
* Normalise any text to always use unix line endings (line-feeds).
*
* @param string $text The text to normalize
* @return string
*/
public static function normalise_line_endings(string $text): string {
return str_replace(["\r\n", "\r"], "\n", $text);
}
/**
* Get the coverage config for the supplied includelist and excludelist configuration.
*

View File

@ -602,6 +602,19 @@ abstract class question_testcase extends advanced_testcase {
}
return;
}
/**
* Check that 2 XML strings are the same, ignoring differences in line endings.
*
* @param string $expectedxml The expected XML string
* @param string $xml The XML string to check
*/
public function assert_same_xml($expectedxml, $xml) {
$this->assertEquals(
phpunit_util::normalise_line_endings($expectedxml),
phpunit_util::normalise_line_endings($xml)
);
}
}

View File

@ -44,8 +44,10 @@ class qformat_aiken_export_test extends advanced_testcase {
* @param string $text The actual string.
*/
public function assert_same_aiken($expectedtext, $text) {
$this->assertEquals(str_replace("\r\n", "\n", $expectedtext),
str_replace("\r\n", "\n", $text));
$this->assertEquals(
phpunit_util::normalise_line_endings($expectedtext),
phpunit_util::normalise_line_endings($text)
);
}
public function test_export_questions() {

View File

@ -16,6 +16,7 @@
namespace qformat_gift;
use phpunit_util;
use qformat_gift;
use question_bank;
use question_check_specified_fields_expectation;
@ -37,15 +38,17 @@ require_once($CFG->dirroot . '/question/engine/tests/helpers.php');
*/
class giftformat_test extends \question_testcase {
public function assert_same_gift($expectedtext, $text) {
$this->assertEquals(str_replace("\r\n", "\n", $expectedtext),
str_replace("\r\n", "\n", $text));
$this->assertEquals(
phpunit_util::normalise_line_endings($expectedtext),
phpunit_util::normalise_line_endings($text)
);
}
public function test_import_essay() {
$gift = '
// essay
::Q8:: How are you? {}';
$lines = preg_split('/[\\n\\r]/', str_replace("\r\n", "\n", $gift));
$lines = preg_split('/[\\n\\r]/', phpunit_util::normalise_line_endings($gift));
$importer = new qformat_gift();
$q = $importer->readquestion($lines);
@ -114,7 +117,7 @@ class giftformat_test extends \question_testcase {
=[markdown]A collection of web pages that anyone can add to or edit. -> Wiki
= -> Chat
}';
$lines = preg_split('/[\\n\\r]/', str_replace("\r\n", "\n", $gift));
$lines = preg_split('/[\\n\\r]/', phpunit_util::normalise_line_endings($gift));
$importer = new qformat_gift();
$q = $importer->readquestion($lines);
@ -284,7 +287,7 @@ class giftformat_test extends \question_testcase {
~red # [html]wrong, it's yellow
~[plain]blue # wrong, it's yellow
}";
$lines = preg_split('/[\\n\\r]/', str_replace("\r\n", "\n", $gift));
$lines = preg_split('/[\\n\\r]/', phpunit_util::normalise_line_endings($gift));
$importer = new qformat_gift();
$q = $importer->readquestion($lines);
@ -387,7 +390,7 @@ class giftformat_test extends \question_testcase {
~%50%off-beige # right; good!
~%-100%[plain]blue # wrong
}";
$lines = preg_split('/[\\n\\r]/', str_replace("\r\n", "\n", $gift));
$lines = preg_split('/[\\n\\r]/', phpunit_util::normalise_line_endings($gift));
$importer = new qformat_gift();
$q = $importer->readquestion($lines);
@ -482,7 +485,7 @@ class giftformat_test extends \question_testcase {
~%-50%red # wrong
~%-50%blue # wrong
}";
$lines = preg_split('/[\\n\\r]/', str_replace("\r\n", "\n", $gift));
$lines = preg_split('/[\\n\\r]/', phpunit_util::normalise_line_endings($gift));
$importer = new qformat_gift();
$q = $importer->readquestion($lines);
@ -694,7 +697,7 @@ class giftformat_test extends \question_testcase {
$gift = "
// math range question
::Q5:: What is a number from 1 to 5? {#3:2~#Completely wrong}";
$lines = preg_split('/[\\n\\r]/', str_replace("\r\n", "\n", $gift));
$lines = preg_split('/[\\n\\r]/', phpunit_util::normalise_line_endings($gift));
$importer = new qformat_gift();
$q = $importer->readquestion($lines);
@ -800,7 +803,7 @@ class giftformat_test extends \question_testcase {
=%50%Cat#What is it with Moodlers and cats?
=%0%*#Completely wrong
}";
$lines = preg_split('/[\\n\\r]/', str_replace("\r\n", "\n", $gift));
$lines = preg_split('/[\\n\\r]/', phpunit_util::normalise_line_endings($gift));
$importer = new qformat_gift();
$q = $importer->readquestion($lines);
@ -856,7 +859,7 @@ class giftformat_test extends \question_testcase {
=%0%*#Completely wrong
####[html]Here is some general feedback!
}";
$lines = preg_split('/[\\n\\r]/', str_replace("\r\n", "\n", $gift));
$lines = preg_split('/[\\n\\r]/', phpunit_util::normalise_line_endings($gift));
$importer = new qformat_gift();
$q = $importer->readquestion($lines);
@ -1029,7 +1032,7 @@ class giftformat_test extends \question_testcase {
// true/false
::Q1:: 42 is the Absolute Answer to everything.{
FALSE#42 is the Ultimate Answer.#You gave the right answer.}";
$lines = preg_split('/[\\n\\r]/', str_replace("\r\n", "\n", $gift));
$lines = preg_split('/[\\n\\r]/', phpunit_util::normalise_line_endings($gift));
$importer = new qformat_gift();
$q = $importer->readquestion($lines);
@ -1063,7 +1066,7 @@ FALSE#42 is the Ultimate Answer.#You gave the right answer.}";
public function test_import_truefalse_true_answer1() {
$gift = "// name 0-11
::2-08 TSL::TSL is blablabla.{T}";
$lines = preg_split('/[\\n\\r]/', str_replace("\r\n", "\n", $gift));
$lines = preg_split('/[\\n\\r]/', phpunit_util::normalise_line_endings($gift));
$importer = new qformat_gift();
$q = $importer->readquestion($lines);
@ -1097,7 +1100,7 @@ FALSE#42 is the Ultimate Answer.#You gave the right answer.}";
public function test_import_truefalse_true_answer2() {
$gift = "// name 0-11
::2-08 TSL::TSL is blablabla.{TRUE}";
$lines = preg_split('/[\\n\\r]/', str_replace("\r\n", "\n", $gift));
$lines = preg_split('/[\\n\\r]/', phpunit_util::normalise_line_endings($gift));
$importer = new qformat_gift();
$q = $importer->readquestion($lines);
@ -1219,7 +1222,7 @@ FALSE#42 is the Ultimate Answer.#You gave the right answer.}";
$gift = '
// essay
::double backslash:: A \\\\ B \\\\\\\\ C{}';
$lines = preg_split('/[\\n\\r]/', str_replace("\r\n", "\n", $gift));
$lines = preg_split('/[\\n\\r]/', phpunit_util::normalise_line_endings($gift));
$importer = new qformat_gift();
$q = $importer->readquestion($lines);
@ -1257,7 +1260,7 @@ FALSE#42 is the Ultimate Answer.#You gave the right answer.}";
\}
</pre>
{}';
$lines = preg_split('/[\\n\\r]/', str_replace("\r\n", "\n", $gift));
$lines = preg_split('/[\\n\\r]/', phpunit_util::normalise_line_endings($gift));
$importer = new qformat_gift();
$q = $importer->readquestion($lines);
@ -1296,7 +1299,7 @@ FALSE#42 is the Ultimate Answer.#You gave the right answer.}";
// This question is to test importing tags: [tag:tag] [tag:other-tag].
// And an idnumber: [id:myid].
::Question name:: How are you? {}';
$lines = preg_split('/[\\n\\r]/', str_replace("\r\n", "\n", $gift));
$lines = preg_split('/[\\n\\r]/', phpunit_util::normalise_line_endings($gift));
$importer = new qformat_gift();
$q = $importer->readquestion($lines);

View File

@ -78,7 +78,7 @@ class qformat_xml_import_export_test extends advanced_testcase {
*/
protected function normalise_xml($xml) {
// Normalise line endings.
$xml = str_replace("\r\n", "\n", $xml);
$xml = phpunit_util::normalise_line_endings($xml);
$xml = preg_replace("~\n$~", "", $xml); // Strip final newline in file.
// Replace all numbers in question id comments with 0.

View File

@ -47,11 +47,6 @@ require_once($CFG->dirroot . '/question/engine/tests/helpers.php');
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class xmlformat_test extends \question_testcase {
public function assert_same_xml($expectedxml, $xml) {
$this->assertEquals(str_replace("\r\n", "\n", $expectedxml),
str_replace("\r\n", "\n", $xml));
}
public function make_test_question() {
global $USER;
$q = new \stdClass();

View File

@ -47,11 +47,6 @@ class question_type_test extends \question_testcase {
$this->qtype = null;
}
public function assert_same_xml($expectedxml, $xml) {
$this->assertEquals(str_replace("\r\n", "\n", $expectedxml),
str_replace("\r\n", "\n", $xml));
}
/**
* Get some test question data.
*

View File

@ -46,17 +46,6 @@ class question_type_test extends \question_testcase {
$this->qtype = null;
}
/**
* Asserts that two strings containing XML are the same ignoring the line-endings.
*
* @param string $expectedxml
* @param string $xml
*/
public function assert_same_xml($expectedxml, $xml) {
$this->assertEquals(str_replace("\r\n", "\n", $expectedxml),
str_replace("\r\n", "\n", $xml));
}
public function test_save_question() {
$this->resetAfterTest();

View File

@ -17,6 +17,7 @@
namespace qtype_ordering;
use core_question_generator;
use phpunit_util;
use qtype_ordering;
use qtype_ordering_test_helper;
use qtype_ordering_edit_form;
@ -72,17 +73,6 @@ final class questiontype_test extends \question_testcase {
];
}
/**
* Asserts that two XML strings are the same, ignoring differences in line endings.
*
* @param string $expectedxml
* @param string $xml
*/
public function assert_same_xml(string $expectedxml, string $xml): void {
$this->assertEquals(str_replace("\r\n", "\n", $expectedxml),
str_replace("\r\n", "\n", $xml));
}
public function test_name(): void {
$ordering = new qtype_ordering();
$this->assertEquals('ordering', $ordering->name());
@ -303,7 +293,7 @@ final class questiontype_test extends \question_testcase {
// Import a question from GIFT.
$gift = file_get_contents(__DIR__ . '/fixtures/testimport.gift.txt');
$format = new qformat_gift();
$lines = preg_split('/[\\n\\r]/', str_replace("\r\n", "\n", $gift));
$lines = preg_split('/[\\n\\r]/', phpunit_util::normalise_line_endings($gift));
$imported = $format->readquestion($lines);
$this->assert(new question_check_specified_fields_expectation(self::expectedimport()), $imported);
@ -326,6 +316,9 @@ final class questiontype_test extends \question_testcase {
$expectedgift = file_get_contents(__DIR__ . '/fixtures/testexport.gift.txt');
$this->assertEquals($expectedgift, $gift);
$this->assertEquals(
phpunit_util::normalise_line_endings($expectedgift),
phpunit_util::normalise_line_endings($gift)
);
}
}