Re: [PATCH v2] run-tests: also color the summary messages (skipped, failed...)

2017-07-17 Thread Yuya Nishihara
On Sun, 16 Jul 2017 15:12:21 +0900, mlaneuvi...@gmail.com wrote:
> # HG changeset patch
> # User Matthieu Laneuville 
> # Date 1500185462 -32400
> #  Sun Jul 16 15:11:02 2017 +0900
> # Node ID 9722bfa929b50e7ad87e0561f8d5fdd8e928d755
> # Parent  97ec8637d261a97c30944d9242ee1ccdbf536cb3
> run-tests: also color the summary messages (skipped, failed...)
> 
> diff -r 97ec8637d261 -r 9722bfa929b5 tests/run-tests.py
> --- a/tests/run-tests.py  Sun Jul 16 14:03:58 2017 +0900
> +++ b/tests/run-tests.py  Sun Jul 16 15:11:02 2017 +0900
> @@ -96,12 +96,46 @@
>  try: # is pygments installed
>  import pygments
>  import pygments.lexers as lexers
> +import pygments.lexer as lexer
>  import pygments.formatters as formatters
> +import pygments.token as token
> +import pygments.style as style
>  with_color = True
>  with_pygments = True
>  except ImportError:
>  pass
>  
> +class TestRunnerStyle(style.Style):

Still an issue. The error was that the style module was missing if pygments
couldn't be loaded.
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


Re: [PATCH v2] run-tests: also color the summary messages (skipped, failed...)

2017-07-17 Thread Augie Fackler
On Sun, Jul 16, 2017 at 03:12:21PM +0900, mlaneuvi...@gmail.com wrote:
> # HG changeset patch
> # User Matthieu Laneuville 
> # Date 1500185462 -32400
> #  Sun Jul 16 15:11:02 2017 +0900
> # Node ID 9722bfa929b50e7ad87e0561f8d5fdd8e928d755
> # Parent  97ec8637d261a97c30944d9242ee1ccdbf536cb3
> run-tests: also color the summary messages (skipped, failed...)

This isn't applying for me, could you rebase and resend?


>
> diff -r 97ec8637d261 -r 9722bfa929b5 tests/run-tests.py
> --- a/tests/run-tests.py  Sun Jul 16 14:03:58 2017 +0900
> +++ b/tests/run-tests.py  Sun Jul 16 15:11:02 2017 +0900
> @@ -96,12 +96,46 @@
>  try: # is pygments installed
>  import pygments
>  import pygments.lexers as lexers
> +import pygments.lexer as lexer
>  import pygments.formatters as formatters
> +import pygments.token as token
> +import pygments.style as style
>  with_color = True
>  with_pygments = True
>  except ImportError:
>  pass
>
> +class TestRunnerStyle(style.Style):
> +default_style = ""
> +skipped = token.string_to_tokentype("Token.Generic.Skipped")
> +failed = token.string_to_tokentype("Token.Generic.Failed")
> +error = token.string_to_tokentype("Token.Generic.Error")
> +skippedname = token.string_to_tokentype("Token.Generic.SName")
> +failedname = token.string_to_tokentype("Token.Generic.FName")
> +styles = {
> +skipped: '#ansilightgray',
> +skippedname: '#ansidarkgray',
> +failed:  '#ansidarkred',
> +failedname:  '#ansired',
> +}
> +
> +class TestRunnerLexer(lexer.RegexLexer):
> +tokens = {
> +'root': [
> +(r'^Skipped', token.Generic.Skipped, 'skipped'),
> +(r'^Failed ', token.Generic.Failed, 'failed'),
> +(r'^ERROR: ', token.Generic.Failed, 'failed'),
> +],
> +'skipped': [
> +(r'[\w-]+\.t', token.Generic.SName),
> +(r':.*', token.Generic.Skipped),
> +],
> +'failed': [
> +(r'[\w-]+\.t', token.Generic.FName),
> +(r'(:| ).*', token.Generic.Failed),
> +]
> +}
> +
>  if sys.version_info > (3, 5, 0):
>  PYTHON3 = True
>  xrange = range # we use xrange in one place, and we'd rather not use 
> range
> @@ -1587,7 +1621,14 @@
>  self.stream.write('t')
>  else:
>  if not self._options.nodiff:
> -self.stream.write('\nERROR: %s output changed\n' % 
> test)
> +formatted = '\nERROR: %s output changed\n' % test
> +if with_color and with_pygments:
> +formatted = pygments.highlight(
> +formatted,
> +TestRunnerLexer(),
> +formatters.Terminal256Formatter(
> +
> style=TestRunnerStyle)).strip("\n")
> +self.stream.write(formatted)
>  self.stream.write('!')
>
>  self.stream.flush()
> @@ -1990,9 +2031,23 @@
>
>  if not self._runner.options.noskips:
>  for test, msg in result.skipped:
> -self.stream.writeln('Skipped %s: %s' % (test.name, msg))
> +formatted = 'Skipped %s: %s' % (test.name, msg)
> +if with_color and with_pygments:
> +formatted = pygments.highlight(
> +formatted,
> +TestRunnerLexer(),
> +formatters.Terminal256Formatter(
> +
> style=TestRunnerStyle)).strip("\n")
> +self.stream.writeln(formatted)
>  for test, msg in result.failures:
> -self.stream.writeln('Failed %s: %s' % (test.name, msg))
> +formatted = 'Failed %s: %s' % (test.name, msg)
> +if with_color and with_pygments:
> +formatted = pygments.highlight(
> +formatted,
> +TestRunnerLexer(),
> +formatters.Terminal256Formatter(
> +style=TestRunnerStyle)).strip("\n")
> +self.stream.writeln(formatted)
>  for test, msg in result.errors:
>  self.stream.writeln('Errored %s: %s' % (test.name, msg))
>
> diff -r 97ec8637d261 -r 9722bfa929b5 tests/test-run-tests.t
> --- a/tests/test-run-tests.t  Sun Jul 16 14:03:58 2017 +0900
> +++ b/tests/test-run-tests.t  Sun Jul 16 15:11:02 2017 +0900
> @@ -132,10 +132,8 @@
>\x1b[38;5;34m+  bar*baz (glob)\x1b[39m (esc)
>   bar*bad (glob)
>\x1b[38;5;124m-  bar*baz (glob)\x1b[39m (esc)
> -
> -  ERROR: test-failure.t output changed
> -  !
> -