Opened 9 years ago
Closed 9 years ago
#12326 closed defect (fixed)
Test failures with Pygments 2.1
Reported by: | Ryan J Ollos | Owned by: | Ryan J Ollos |
---|---|---|---|
Priority: | normal | Milestone: | 1.0.10 |
Component: | rendering | Version: | |
Severity: | normal | Keywords: | pygments |
Cc: | Branch: | ||
Release Notes: |
Fixed failing test cases with Pygments 2.1. |
||
API Changes: | |||
Internal Changes: |
Description
The automated tests that ran when committing the fix for #12325 revealed some test case failures. Pygments 2.1 was released on 2016-01-17. Test failures were not seen with Pygments 2.0.2.
====================================================================== FAIL: test_extra_mimetypes (trac.mimeview.tests.pygments.PygmentsRendererTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/mimeview/tests/pygments.py", line 123, in test_extra_mimetypes mimeview.get_mimetype('file.ini')) AssertionError: 'text/x-ini; charset=utf-8' != u'text/inf; charset=utf-8' ====================================================================== FAIL: test_python_hello (trac.mimeview.tests.pygments.PygmentsRendererTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/mimeview/tests/pygments.py", line 74, in test_python_hello self._test('python_hello', result) File "/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/mimeview/tests/pygments.py", line 62, in _test self.assertEqual(exp, res) AssertionError: ' <span class="k">return</span> <span class="s">"Hello World!"</span>' != ' <span class="k">return</span> <span class="s2">"Hello World!"</span>' ====================================================================== FAIL: test_python_hello_mimeview (trac.mimeview.tests.pygments.PygmentsRendererTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/mimeview/tests/pygments.py", line 85, in test_python_hello_mimeview self._test('python_hello_mimeview', result) File "/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/mimeview/tests/pygments.py", line 62, in _test self.assertEqual(exp, res) AssertionError: ' <span class="k">return</span> <span class="s">"Hello World!"</span>' != ' <span class="k">return</span> <span class="s2">"Hello World!"</span>' ---------------------------------------------------------------------- Ran 1795 tests in 108.513s FAILED (failures=3) make: *** [unit-test] Error 1
Attachments (0)
Change History (13)
comment:1 by , 9 years ago
comment:2 by , 9 years ago
Now I remember looking at this some time ago. When there are multiple mimetypes for a given Short name (also referred to as aliases and keywords), the last mimetype overwrites the previously stored mimetype: tags/trac-1.0.9/trac/mimeview/api.py@:932-933#L922.
So I imagine we can fix this similar to how we fix the Babel tests when the CLDR data is updated:
-
trac/mimeview/tests/pygments.py
diff --git a/trac/mimeview/tests/pygments.py b/trac/mimeview/tests/pygments.py index 9bf92fc..d6ffd41 100644
a b def hello(): 119 119 Pygments supports it. 120 120 """ 121 121 mimeview = Mimeview(self.env) 122 self.assertEqual('text/x-ini; charset=utf-8', 123 mimeview.get_mimetype('file.ini')) 124 self.assertEqual('text/x-ini; charset=utf-8', 125 mimeview.get_mimetype('file.cfg')) 122 self.assertIn(mimeview.get_mimetype('file.ini'), 123 ('text/x-ini; charset=utf-8', 124 'text/inf; charset=utf-8')) # Pygment 2.1+ 125 self.assertIn(mimeview.get_mimetype('file.cfg'), 126 ('text/x-ini; charset=utf-8', 127 'text/inf; charset=utf-8')) # Pygment 2.1+ 126 128 self.assertEqual('text/x-ini; charset=utf-8', 127 129 mimeview.get_mimetype('file.text/x-ini'))
comment:3 by , 9 years ago
Regarding second and third errors, in Pygments 2.1 strings are being assigned Token.Literal.String.Double
rather than Token.Literal.String
.
Pygments 2.1:
>>> from pygments.lexers import PythonLexer >>> pl = PythonLexer() >>> s = """ ... def hello(): ... return "Hello World!" ... """ >>> tokens = pl.get_tokens(s) >>> for t in tokens: ... print t ... (Token.Keyword, u'def') (Token.Text, u' ') (Token.Name.Function, u'hello') (Token.Punctuation, u'(') (Token.Punctuation, u')') (Token.Punctuation, u':') (Token.Text, u'\n') (Token.Text, u' ') (Token.Keyword, u'return') (Token.Text, u' ') (Token.Literal.String.Double, u'"') (Token.Literal.String.Double, u'Hello World!') (Token.Literal.String.Double, u'"') (Token.Text, u'\n')
Pygments 2.0.2:
>>> from pygments.lexers import get_lexer_by_name >>> lexer = get_lexer_by_name('ini') >>> lexer.mimetypes ['text/x-ini'] >>> from pygments.lexers import PythonLexer >>> pl = PythonLexer() >>> s = """ ... def hello(): ... return "Hello World!" ... """ >>> tokens = pl.get_tokens(s) >>> for t in tokens: ... print t ... (Token.Keyword, u'def') (Token.Text, u' ') (Token.Name.Function, u'hello') (Token.Punctuation, u'(') (Token.Punctuation, u')') (Token.Punctuation, u':') (Token.Text, u'\n') (Token.Text, u' ') (Token.Keyword, u'return') (Token.Text, u' ') (Token.Literal.String, u'"') (Token.Literal.String, u'Hello World!') (Token.Literal.String, u'"') (Token.Text, u'\n')
follow-up: 9 comment:5 by , 9 years ago
Owner: | set to |
---|---|
Status: | new → assigned |
Proposed changes in log:rjollos.git:t12326_pygments_2.1.
comment:6 by , 9 years ago
Release Notes: | modified (diff) |
---|
comment:7 by , 9 years ago
Some additional test failures on the trunk:
====================================================================== FAIL: test_python_with_invalid_arguments (trac.mimeview.tests.pygments.PygmentsRendererTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/mimeview/tests/pygments.py", line 147, in test_python_with_invalid_arguments self._test('python_with_invalid_arguments_1', result) File "/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/mimeview/tests/pygments.py", line 69, in _test self.assertEqual(exp, res) AssertionError: u'<div class="wiki-code"><table class="code"><thead><tr><th class="lineno" title="Line numbers">Line</th><th class="content">\xa0</th></tr></thead><tbody><tr><th id="a-L1"><a href="#a-L1">1</a></th><td><span class="k">print</span>\xa0<span class="s">\'this is a python sample\'</span></td></tr><tr><th id="a-L2"><a href="#a-L2">2</a></th><td>a <span class="o">=</span>\xa0b<span class="o">+</span><span class="mi">3</span></td></tr><tr><th id="a-L3"><a href="#a-L3">3</a></th><td>z <span class="o">=</span>\xa0<span class="s">"this is a string"</span></td></tr><tr><th id="a-L4"><a href="#a-L4">4</a></th><td><span class="k">print</span>\xa0<span class="s">\'this is the end of the python sample\'</span></td></tr></tbody></table></div>' != u'<div class="wiki-code"><table class="code"><thead><tr><th class="lineno" title="Line numbers">Line</th><th class="content">\xa0</th></tr></thead><tbody><tr><th id="a-L1"><a href="#a-L1">1</a></th><td><span class="k">print</span>\xa0<span class="s1">\'this is a python sample\'</span></td></tr><tr><th id="a-L2"><a href="#a-L2">2</a></th><td>a <span class="o">=</span>\xa0b<span class="o">+</span><span class="mi">3</span></td></tr><tr><th id="a-L3"><a href="#a-L3">3</a></th><td>z <span class="o">=</span>\xa0<span class="s2">"this is a string"</span></td></tr><tr><th id="a-L4"><a href="#a-L4">4</a></th><td><span class="k">print</span>\xa0<span class="s1">\'this is the end of the python sample\'</span></td></tr></tbody></table></div>' Diff is 2605 characters long. Set self.maxDiff to None to see it. ====================================================================== FAIL: test_python_with_lineno (trac.mimeview.tests.pygments.PygmentsRendererTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/mimeview/tests/pygments.py", line 110, in test_python_with_lineno self._test('python_with_lineno_1', result) File "/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/mimeview/tests/pygments.py", line 69, in _test self.assertEqual(exp, res) AssertionError: u'<div class="wiki-code"><table class="code"><thead><tr><th class="lineno" title="Line numbers">Line</th><th class="content">\xa0</th></tr></thead><tbody><tr><th id="a-L1"><a href="#a-L1">1</a></th><td><span class="k">print</span>\xa0<span class="s">\'this is a python sample\'</span></td></tr><tr><th id="a-L2"><a href="#a-L2">2</a></th><td>a <span class="o">=</span>\xa0b<span class="o">+</span><span class="mi">3</span></td></tr><tr><th id="a-L3"><a href="#a-L3">3</a></th><td>z <span class="o">=</span>\xa0<span class="s">"this is a string"</span></td></tr><tr><th id="a-L4"><a href="#a-L4">4</a></th><td><span class="k">print</span>\xa0<span class="s">\'this is the end of the python sample\'</span></td></tr></tbody></table></div>' != u'<div class="wiki-code"><table class="code"><thead><tr><th class="lineno" title="Line numbers">Line</th><th class="content">\xa0</th></tr></thead><tbody><tr><th id="a-L1"><a href="#a-L1">1</a></th><td><span class="k">print</span>\xa0<span class="s1">\'this is a python sample\'</span></td></tr><tr><th id="a-L2"><a href="#a-L2">2</a></th><td>a <span class="o">=</span>\xa0b<span class="o">+</span><span class="mi">3</span></td></tr><tr><th id="a-L3"><a href="#a-L3">3</a></th><td>z <span class="o">=</span>\xa0<span class="s2">"this is a string"</span></td></tr><tr><th id="a-L4"><a href="#a-L4">4</a></th><td><span class="k">print</span>\xa0<span class="s1">\'this is the end of the python sample\'</span></td></tr></tbody></table></div>' Diff is 2605 characters long. Set self.maxDiff to None to see it. ====================================================================== FAIL: test_python_with_lineno_and_markups (trac.mimeview.tests.pygments.PygmentsRendererTestCase) Python highlighting with Pygments and lineno annotator ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/mimeview/tests/pygments.py", line 135, in test_python_with_lineno_and_markups self._test('python_with_lineno_and_markups', result) File "/Users/rjollos/Documents/Workspace/trac-dev/teo-rjollos.git/trac/mimeview/tests/pygments.py", line 69, in _test self.assertEqual(exp, res) AssertionError: u'<div class="wiki-code"><table class="code"><thead><tr><th class="lineno" title="Line numbers">Line</th><th class="content">\xa0</th></tr></thead><tbody><tr><th id="b-L3"><a href="#b-L3">3</a></th><td><span class="k">print</span>\xa0<span class="s">\'this is a python sample\'</span></td></tr><tr class="hilite"><th id="b-L4"><a href="#b-L4">4</a></th><td>a <span class="o">=</span>\xa0b<span class="o">+</span><span class="mi">3</span></td></tr><tr class="hilite"><th id="b-L5"><a href="#b-L5">5</a></th><td>z <span class="o">=</span>\xa0<span class="s">"this is a string"</span></td></tr><tr><th id="b-L6"><a href="#b-L6">6</a></th><td><span class="k">print</span>\xa0<span class="s">\'this is the end of the python sample\'</span></td></tr></tbody></table></div>' != u'<div class="wiki-code"><table class="code"><thead><tr><th class="lineno" title="Line numbers">Line</th><th class="content">\xa0</th></tr></thead><tbody><tr><th id="b-L3"><a href="#b-L3">3</a></th><td><span class="k">print</span>\xa0<span class="s1">\'this is a python sample\'</span></td></tr><tr class="hilite"><th id="b-L4"><a href="#b-L4">4</a></th><td>a <span class="o">=</span>\xa0b<span class="o">+</span><span class="mi">3</span></td></tr><tr class="hilite"><th id="b-L5"><a href="#b-L5">5</a></th><td>z <span class="o">=</span>\xa0<span class="s2">"this is a string"</span></td></tr><tr><th id="b-L6"><a href="#b-L6">6</a></th><td><span class="k">print</span>\xa0<span class="s1">\'this is the end of the python sample\'</span></td></tr></tbody></table></div>' Diff is 2725 characters long. Set self.maxDiff to None to see it. ---------------------------------------------------------------------- Ran 2035 tests in 156.712s FAILED (failures=3)
I'll investigate tomorrow.
comment:8 by , 9 years ago
Unit test failing without Pygments.
python ./trac/test.py --skip-functional-tests SKIP: fine-grained permission tests (ConfigObj not installed) Traceback (most recent call last): File "./trac/test.py", line 472, in <module> unittest.main(defaultTest='suite') File "/usr/lib/python2.5/unittest.py", line 767, in __init__ self.parseArgs(argv) File "/usr/lib/python2.5/unittest.py", line 794, in parseArgs self.createTests() File "/usr/lib/python2.5/unittest.py", line 800, in createTests self.module) File "/usr/lib/python2.5/unittest.py", line 565, in loadTestsFromNames suites = [self.loadTestsFromName(name, module) for name in names] File "/usr/lib/python2.5/unittest.py", line 553, in loadTestsFromName test = obj() File "./trac/test.py", line 428, in suite import trac.mimeview.tests File "/run/shm/f9fd19921f51b96374766f7218644ce0e335be2b/py25-sqlite/trac/mimeview/tests/__init__.py", line 14, in <module> from trac.mimeview.tests import api, patch, pygments File "/run/shm/f9fd19921f51b96374766f7218644ce0e335be2b/py25-sqlite/trac/mimeview/tests/pygments.py", line 39, in <module> pygments_version = parse_version(get_pkginfo(pygments).get('version')) NameError: name 'pygments' is not defined make: *** [unit-test] Error 1
comment:9 by , 9 years ago
Replying to Ryan J Ollos:
Proposed changes in log:rjollos.git:t12326_pygments_2.1.
One minor thing: id="...pygments_2.1+
should be pygments_2.1plus
(no + in id). Of course it also works without that and there are anyway other minor validation issues in this file, but this wrong id stood out ;-)
comment:10 by , 9 years ago
Thanks for the feedback. I revised log:rjollos.git:t12326_pygments_2.1 to address comment:8 and comment:9, and prepared changes for the trunk: log:rjollos.git:t12326_pygments_2.1_trunk.
Tests pass with Pygments 2.1, Pygments 2.0.2 and no Pygments.
comment:11 by , 9 years ago
I'll push tomorrow if there is no further feedback, so that we have the Travis CI tests passing once again.
comment:13 by , 9 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
First issue seems to be due to addition of a mimetype for
ini
.Pygments 2.1:
Pygments 2.0.2: