diff options
author | Matth?us G. Chajdas <dev@anteru.net> | 2019-11-10 13:56:53 +0100 |
---|---|---|
committer | Matth?us G. Chajdas <dev@anteru.net> | 2019-11-10 13:56:53 +0100 |
commit | 1dd3124a9770e11b6684e5dd1e6bc15a0aa3bc67 (patch) | |
tree | 87a171383266dd1f64196589af081bc2f8e497c3 /tests/test_html_formatter.py | |
parent | f1c080e184dc1bbc36eaa7cd729ff3a499de568a (diff) | |
download | pygments-master.tar.gz |
Diffstat (limited to 'tests/test_html_formatter.py')
-rw-r--r-- | tests/test_html_formatter.py | 200 |
1 files changed, 0 insertions, 200 deletions
diff --git a/tests/test_html_formatter.py b/tests/test_html_formatter.py deleted file mode 100644 index 37efd6f0..00000000 --- a/tests/test_html_formatter.py +++ /dev/null @@ -1,200 +0,0 @@ -# -*- coding: utf-8 -*- -""" - Pygments HTML formatter tests - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - :copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" - -from __future__ import print_function - -import io -import os -import re -import unittest -import tempfile -from os.path import join, dirname, isfile - -from pygments.util import StringIO -from pygments.lexers import PythonLexer -from pygments.formatters import HtmlFormatter, NullFormatter -from pygments.formatters.html import escape_html - -import support - -TESTFILE, TESTDIR = support.location(__file__) - -with io.open(TESTFILE, encoding='utf-8') as fp: - tokensource = list(PythonLexer().get_tokens(fp.read())) - - -class HtmlFormatterTest(unittest.TestCase): - def test_correct_output(self): - hfmt = HtmlFormatter(nowrap=True) - houtfile = StringIO() - hfmt.format(tokensource, houtfile) - - nfmt = NullFormatter() - noutfile = StringIO() - nfmt.format(tokensource, noutfile) - - stripped_html = re.sub('<.*?>', '', houtfile.getvalue()) - escaped_text = escape_html(noutfile.getvalue()) - self.assertEqual(stripped_html, escaped_text) - - def test_external_css(self): - # test correct behavior - # CSS should be in /tmp directory - fmt1 = HtmlFormatter(full=True, cssfile='fmt1.css', outencoding='utf-8') - # CSS should be in TESTDIR (TESTDIR is absolute) - fmt2 = HtmlFormatter(full=True, cssfile=join(TESTDIR, 'fmt2.css'), - outencoding='utf-8') - tfile = tempfile.NamedTemporaryFile(suffix='.html') - fmt1.format(tokensource, tfile) - try: - fmt2.format(tokensource, tfile) - self.assertTrue(isfile(join(TESTDIR, 'fmt2.css'))) - except IOError: - # test directory not writable - pass - tfile.close() - - self.assertTrue(isfile(join(dirname(tfile.name), 'fmt1.css'))) - os.unlink(join(dirname(tfile.name), 'fmt1.css')) - try: - os.unlink(join(TESTDIR, 'fmt2.css')) - except OSError: - pass - - def test_all_options(self): - def check(optdict): - outfile = StringIO() - fmt = HtmlFormatter(**optdict) - fmt.format(tokensource, outfile) - - for optdict in [ - dict(nowrap=True), - dict(linenos=True, full=True), - dict(linenos=True, linespans='L'), - dict(hl_lines=[1, 5, 10, 'xxx']), - dict(hl_lines=[1, 5, 10], noclasses=True), - ]: - check(optdict) - - for linenos in [False, 'table', 'inline']: - for noclasses in [False, True]: - for linenospecial in [0, 5]: - for anchorlinenos in [False, True]: - optdict = dict( - linenos=linenos, - noclasses=noclasses, - linenospecial=linenospecial, - anchorlinenos=anchorlinenos, - ) - check(optdict) - - def test_linenos(self): - optdict = dict(linenos=True) - outfile = StringIO() - fmt = HtmlFormatter(**optdict) - fmt.format(tokensource, outfile) - html = outfile.getvalue() - self.assertTrue(re.search(r"<pre>\s+1\s+2\s+3", html)) - - def test_linenos_with_startnum(self): - optdict = dict(linenos=True, linenostart=5) - outfile = StringIO() - fmt = HtmlFormatter(**optdict) - fmt.format(tokensource, outfile) - html = outfile.getvalue() - self.assertTrue(re.search(r"<pre>\s+5\s+6\s+7", html)) - - def test_lineanchors(self): - optdict = dict(lineanchors="foo") - outfile = StringIO() - fmt = HtmlFormatter(**optdict) - fmt.format(tokensource, outfile) - html = outfile.getvalue() - self.assertTrue(re.search("<pre><span></span><a name=\"foo-1\">", html)) - - def test_lineanchors_with_startnum(self): - optdict = dict(lineanchors="foo", linenostart=5) - outfile = StringIO() - fmt = HtmlFormatter(**optdict) - fmt.format(tokensource, outfile) - html = outfile.getvalue() - self.assertTrue(re.search("<pre><span></span><a name=\"foo-5\">", html)) - - def test_valid_output(self): - # test all available wrappers - fmt = HtmlFormatter(full=True, linenos=True, noclasses=True, - outencoding='utf-8') - - handle, pathname = tempfile.mkstemp('.html') - with os.fdopen(handle, 'w+b') as tfile: - fmt.format(tokensource, tfile) - catname = os.path.join(TESTDIR, 'dtds', 'HTML4.soc') - try: - import subprocess - po = subprocess.Popen(['nsgmls', '-s', '-c', catname, pathname], - stdout=subprocess.PIPE) - ret = po.wait() - output = po.stdout.read() - po.stdout.close() - except OSError: - # nsgmls not available - pass - else: - if ret: - print(output) - self.assertFalse(ret, 'nsgmls run reported errors') - - os.unlink(pathname) - - def test_get_style_defs(self): - fmt = HtmlFormatter() - sd = fmt.get_style_defs() - self.assertTrue(sd.startswith('.')) - - fmt = HtmlFormatter(cssclass='foo') - sd = fmt.get_style_defs() - self.assertTrue(sd.startswith('.foo')) - sd = fmt.get_style_defs('.bar') - self.assertTrue(sd.startswith('.bar')) - sd = fmt.get_style_defs(['.bar', '.baz']) - fl = sd.splitlines()[0] - self.assertTrue('.bar' in fl and '.baz' in fl) - - def test_unicode_options(self): - fmt = HtmlFormatter(title=u'Föö', - cssclass=u'bär', - cssstyles=u'div:before { content: \'bäz\' }', - encoding='utf-8') - handle, pathname = tempfile.mkstemp('.html') - with os.fdopen(handle, 'w+b') as tfile: - fmt.format(tokensource, tfile) - - def test_ctags(self): - try: - import ctags - except ImportError: - # we can't check without the ctags module, but at least check the exception - self.assertRaises(RuntimeError, HtmlFormatter, tagsfile='support/tags') - else: - # this tagfile says that test_ctags() is on line 165, even if it isn't - # anymore in the actual source - fmt = HtmlFormatter(tagsfile='support/tags', lineanchors='L', - tagurlformat='%(fname)s%(fext)s') - outfile = StringIO() - fmt.format(tokensource, outfile) - self.assertTrue('<a href="test_html_formatter.py#L-165">test_ctags</a>' - in outfile.getvalue()) - - def test_filename(self): - optdict = dict(filename="test.py") - outfile = StringIO() - fmt = HtmlFormatter(**optdict) - fmt.format(tokensource, outfile) - html = outfile.getvalue() - self.assertTrue(re.search("<span class=\"filename\">test.py</span><pre>", html)) |