summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2014-11-11 19:56:09 +0100
committerGeorg Brandl <georg@python.org>2014-11-11 19:56:09 +0100
commit6b6c5bfbdaf2239aec62d436da135c8f8e02f44a (patch)
treeb7d587fa56fbded56035f2f075bb7cedf34d2aa4
parent543b3cb13bbafa81805b039fe955e60794b4ae5e (diff)
downloadpygments-6b6c5bfbdaf2239aec62d436da135c8f8e02f44a.tar.gz
Add more coverage for pygments.util.
-rw-r--r--tests/test_util.py50
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):