diff --git a/evennia/utils/tests/test_text2html.py b/evennia/utils/tests/test_text2html.py new file mode 100644 index 0000000000..b4f631208c --- /dev/null +++ b/evennia/utils/tests/test_text2html.py @@ -0,0 +1,92 @@ +"""Tests for text2html """ + +from django.test import TestCase +from evennia.utils import ansi, text2html +import mock + + +class TestText2Html(TestCase): + + def test_re_color(self): + parser = text2html.HTML_PARSER + self.assertEqual("foo", parser.re_color("foo")) + self.assertEqual( + "redfoo", + parser.re_color(ansi.ANSI_RED + "red" + ansi.ANSI_NORMAL + "foo")) + + def test_re_bold(self): + parser = text2html.HTML_PARSER + self.assertEqual("foo", parser.re_bold("foo")) + self.assertEqual( + # "a redfoo", # TODO: why not? + "a redfoo", + parser.re_bold( + "a " + ansi.ANSI_HILITE + "red" + ansi.ANSI_UNHILITE + "foo")) + + def test_re_underline(self): + parser = text2html.HTML_PARSER + self.assertEqual("foo", parser.re_underline("foo")) + self.assertEqual( + "a red" + ansi.ANSI_NORMAL + "foo", + parser.re_underline( + "a " + ansi.ANSI_UNDERLINE + "red" + + ansi.ANSI_NORMAL # TODO: why does it keep it? + + "foo")) + + def test_re_blinking(self): + parser = text2html.HTML_PARSER + self.assertEqual("foo", parser.re_blinking("foo")) + self.assertEqual( + "a red" + ansi.ANSI_NORMAL + "foo", + parser.re_blinking( + "a " + ansi.ANSI_BLINK + "red" + + ansi.ANSI_NORMAL # TODO: why does it keep it? + + "foo")) + + def test_re_inversing(self): + parser = text2html.HTML_PARSER + self.assertEqual("foo", parser.re_inversing("foo")) + self.assertEqual( + "a red" + ansi.ANSI_NORMAL + "foo", + parser.re_inversing( + "a " + ansi.ANSI_INVERSE + "red" + + ansi.ANSI_NORMAL # TODO: why does it keep it? + + "foo")) + + def test_remove_bells(self): + parser = text2html.HTML_PARSER + self.assertEqual("foo", parser.remove_bells("foo")) + self.assertEqual( + "a red" + ansi.ANSI_NORMAL + "foo", + parser.remove_bells( + "a " + ansi.ANSI_BEEP + "red" + + ansi.ANSI_NORMAL # TODO: why does it keep it? + + "foo")) + + def test_remove_backspaces(self): + parser = text2html.HTML_PARSER + self.assertEqual("foo", parser.remove_backspaces("foo")) + self.assertEqual("redfoo", + parser.remove_backspaces("a\010redfoo")) + + def test_convert_linebreaks(self): + parser = text2html.HTML_PARSER + self.assertEqual("foo", parser.convert_linebreaks("foo")) + self.assertEqual( + "a
redfoo
", + parser.convert_linebreaks("a\n redfoo\n")) + + def test_convert_urls(self): + parser = text2html.HTML_PARSER + self.assertEqual("foo", parser.convert_urls("foo")) + self.assertEqual( + "a http://redfoo runs", + parser.convert_urls("a http://redfoo runs")) + # TODO: doesn't URL encode correctly + + def test_re_double_space(self): + parser = text2html.HTML_PARSER + self.assertEqual("foo", parser.re_double_space("foo")) + self.assertEqual( + "a  red    foo", + parser.re_double_space("a red foo")) diff --git a/evennia/utils/text2html.py b/evennia/utils/text2html.py index 453779f453..6d49b6a445 100644 --- a/evennia/utils/text2html.py +++ b/evennia/utils/text2html.py @@ -246,8 +246,7 @@ class TextToHTMLparser(object): text (str): Processed text. """ - return text - return text.replace(r"\n", r"
") + return text.replace("\n", r"
") def convert_urls(self, text): """ @@ -277,7 +276,7 @@ class TextToHTMLparser(object): replaces MXP links with HTML code. Args: - text (str): Text to process. + match (re.Matchobject): Match for substitution. Returns: text (str): Processed text.