# HG changeset patch # User Jun Wu # Date 2017-07-21 15:43:39 # Node ID 20436925e0803a98566c934aa3433fc75b6d2704 # Parent 637267114513d02072256219ad866565771f42e9 run-tests: pre instantiate pygments objects This speeds up run-tests.py diff output by 10x, which affects developer experience significantly. As demonstrated by the following test: ``` #require pygments $ for i in `seq 1 200`; do > echo ' $ echo '$i >> test-a.t > echo ' wrong' >> test-a.t > done $ cat > walltime.py < from __future__ import absolute_import, print_function > import os, sys, time > t1 = time.time() > os.system(' '.join(sys.argv[1:]) + ' >/dev/null 2>/dev/null') > t2 = time.time() > print('%0.2f' % (t2 - t1)) > EOF $ $PYTHON walltime.py $TESTDIR/run-tests.py -l --color=never $TESTTMP/test-a.t 0.24 Before this patch: $ $PYTHON walltime.py $TESTDIR/run-tests.py -l --color=always $TESTTMP/test-a.t 2.46 After this patch: $ $PYTHON walltime.py $TESTDIR/run-tests.py -l --color=always $TESTTMP/test-a.t 0.25 ``` diff --git a/tests/run-tests.py b/tests/run-tests.py --- a/tests/run-tests.py +++ b/tests/run-tests.py @@ -96,6 +96,8 @@ if os.name != 'nt': import pygments.lexers as lexers import pygments.formatters as formatters pygmentspresent = True + difflexer = lexers.DiffLexer() + terminal256formatter = formatters.Terminal256Formatter() except ImportError: pass @@ -1651,10 +1653,9 @@ class TestResult(unittest._TextTestResul self.stream.write('\n') for line in lines: if self.color: - line = pygments.highlight( - line, - lexers.DiffLexer(), - formatters.Terminal256Formatter()) + line = pygments.highlight(line, + difflexer, + terminal256formatter) if PYTHON3: self.stream.flush() self.stream.buffer.write(line)