diff options
author | Tim Hatch <tim@timhatch.com> | 2015-10-07 06:46:26 -0700 |
---|---|---|
committer | Tim Hatch <tim@timhatch.com> | 2015-10-07 06:46:26 -0700 |
commit | a8e688ec86fe8258f7095f880b8df3743eb71347 (patch) | |
tree | 8da2bab2a4a78cfcbe4962fcb8e62eac4f6ecf86 /tests/test_terminal_formatter.py | |
parent | 83704bc3531bcd33c55870cb45284dbc775421bc (diff) | |
download | pygments-a8e688ec86fe8258f7095f880b8df3743eb71347.tar.gz |
Address problems with linenos in terminal formatter by rewriting
Fixes #1147
Diffstat (limited to 'tests/test_terminal_formatter.py')
-rw-r--r-- | tests/test_terminal_formatter.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/test_terminal_formatter.py b/tests/test_terminal_formatter.py new file mode 100644 index 00000000..07337cd5 --- /dev/null +++ b/tests/test_terminal_formatter.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +""" + Pygments terminal formatter tests + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from __future__ import print_function + +import unittest +import re + +from pygments.util import StringIO +from pygments.lexers.sql import PlPgsqlLexer +from pygments.formatters import TerminalFormatter + +DEMO_TEXT = '''\ +-- comment +select +* from bar; +''' +DEMO_LEXER = PlPgsqlLexer +DEMO_TOKENS = list(DEMO_LEXER().get_tokens(DEMO_TEXT)) + +ANSI_RE = re.compile(r'\x1b[\w\W]*?m') + +def strip_ansi(x): + return ANSI_RE.sub('', x) + +class TerminalFormatterTest(unittest.TestCase): + def test_reasonable_output(self): + out = StringIO() + TerminalFormatter().format(DEMO_TOKENS, out) + plain = strip_ansi(out.getvalue()) + self.assertEqual(DEMO_TEXT.count('\n'), plain.count('\n')) + print(repr(plain)) + + for a, b in zip(DEMO_TEXT.splitlines(), plain.splitlines()): + self.assertEqual(a, b) + + def test_reasonable_output_lineno(self): + out = StringIO() + TerminalFormatter(linenos=True).format(DEMO_TOKENS, out) + plain = strip_ansi(out.getvalue()) + self.assertEqual(DEMO_TEXT.count('\n') + 1, plain.count('\n')) + print(repr(plain)) + + for a, b in zip(DEMO_TEXT.splitlines(), plain.splitlines()): + self.assertTrue(a in b) |