diff options
author | Georg Brandl <georg@python.org> | 2014-11-11 19:56:09 +0100 |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2014-11-11 19:56:09 +0100 |
commit | 6b6c5bfbdaf2239aec62d436da135c8f8e02f44a (patch) | |
tree | b7d587fa56fbded56035f2f075bb7cedf34d2aa4 | |
parent | 543b3cb13bbafa81805b039fe955e60794b4ae5e (diff) | |
download | pygments-6b6c5bfbdaf2239aec62d436da135c8f8e02f44a.tar.gz |
Add more coverage for pygments.util.
-rw-r--r-- | tests/test_util.py | 50 |
1 files changed, 44 insertions, 6 deletions
diff --git a/tests/test_util.py b/tests/test_util.py index d6ebd51d..695fb7d2 100644 --- a/tests/test_util.py +++ b/tests/test_util.py @@ -15,7 +15,7 @@ from pygments import util, console class FakeLexer(object): def analyse(text): - return float(text) + return text analyse = util.make_analysator(analyse) @@ -40,6 +40,11 @@ class UtilTest(unittest.TestCase): equals(util.get_list_opt({}, 'a', '1 2'), ['1', '2']) raises(util.OptionError, util.get_list_opt, {}, 'a', 1) + equals(util.get_choice_opt({}, 'a', ['foo', 'bar'], 'bar'), 'bar') + equals(util.get_choice_opt({}, 'a', ['foo', 'bar'], 'Bar', True), 'bar') + raises(util.OptionError, util.get_choice_opt, {}, 'a', + ['foo', 'bar'], 'baz') + def test_docstring_headline(self): def f1(): """ @@ -54,9 +59,12 @@ class UtilTest(unittest.TestCase): other text """ + def f3(): + pass - self.assertEqual(util.docstring_headline(f1), "docstring headline") - self.assertEqual(util.docstring_headline(f2), "docstring headline") + self.assertEqual(util.docstring_headline(f1), 'docstring headline') + self.assertEqual(util.docstring_headline(f2), 'docstring headline') + self.assertEqual(util.docstring_headline(f3), '') def test_analysator_returns_float(self): # If an analysator wrapped by make_analysator returns a floating point @@ -87,10 +95,10 @@ class UtilTest(unittest.TestCase): def test_analysator_type_error(self): # When converting the analysator's return value to a float a # TypeError may occur. If that happens 0.0 is returned instead. - self.assertEqual(FakeLexer.analyse(None), 0.0) + self.assertEqual(FakeLexer.analyse('xxx'), 0.0) def test_shebang_matches(self): - self.assertTrue(util.shebang_matches('#!/usr/bin/env python', r'python(2\.\d)?')) + self.assertTrue(util.shebang_matches('#!/usr/bin/env python\n', r'python(2\.\d)?')) self.assertTrue(util.shebang_matches('#!/usr/bin/python2.4', r'python(2\.\d)?')) self.assertTrue(util.shebang_matches('#!/usr/bin/startsomethingwith python', r'python(2\.\d)?')) @@ -105,7 +113,7 @@ class UtilTest(unittest.TestCase): def test_doctype_matches(self): self.assertTrue(util.doctype_matches( - '<!DOCTYPE html PUBLIC "a"> <html>', 'html.*')) + '<!DOCTYPE html> <html>', 'html.*')) self.assertFalse(util.doctype_matches( '<?xml ?> <DOCTYPE html PUBLIC "a"> <html>', 'html.*')) self.assertTrue(util.html_doctype_matches( @@ -157,6 +165,36 @@ class UtilTest(unittest.TestCase): x = util.duplicates_removed(('a', 'b', 'a')) self.assertEqual(['a', 'b'], x) + def test_guess_decode(self): + # UTF-8 should be decoded as UTF-8 + s = util.guess_decode(u'\xff'.encode('utf-8')) + self.assertEqual(s, (u'\xff', 'utf-8')) + + # otherwise, it could be latin1 or the locale encoding... + import locale + s = util.guess_decode(b'\xff') + self.assertTrue(s[1] in ('latin1', locale.getpreferredencoding())) + + def test_guess_decode_from_terminal(self): + class Term: + encoding = 'utf-7' + + s = util.guess_decode_from_terminal(u'\xff'.encode('utf-7'), Term) + self.assertEqual(s, (u'\xff', 'utf-7')) + + s = util.guess_decode_from_terminal(u'\xff'.encode('utf-8'), Term) + self.assertEqual(s, (u'\xff', 'utf-8')) + + def test_add_metaclass(self): + class Meta(type): + pass + + @util.add_metaclass(Meta) + class Cls: + pass + + self.assertEqual(type(Cls), Meta) + class ConsoleTest(unittest.TestCase): |