From 351aed9ae8ec5aadb9d59c0cf3cc4bf5c05eecb6 Mon Sep 17 00:00:00 2001 From: Sam James Date: Wed, 8 Feb 2023 02:58:42 +0000 Subject: dev-python/docutils: fix tests w/ pygments-2.14.0 Closes: https://bugs.gentoo.org/892213 Signed-off-by: Sam James --- .../files/docutils-0.19-pygments-2.14.patch | 672 +++++++++++++++++++++ 1 file changed, 672 insertions(+) create mode 100644 dev-python/docutils/files/docutils-0.19-pygments-2.14.patch (limited to 'dev-python/docutils/files/docutils-0.19-pygments-2.14.patch') diff --git a/dev-python/docutils/files/docutils-0.19-pygments-2.14.patch b/dev-python/docutils/files/docutils-0.19-pygments-2.14.patch new file mode 100644 index 000000000000..42324aa49c4d --- /dev/null +++ b/dev-python/docutils/files/docutils-0.19-pygments-2.14.patch @@ -0,0 +1,672 @@ +https://bugs.gentoo.org/892213 +https://sourceforge.net/p/docutils/patches/201/ +--- a/test/test_parsers/test_rst/test_directives/test_code.py ++++ b/test/test_parsers/test_rst/test_directives/test_code.py +@@ -10,14 +10,20 @@ Test the 'code' directive in parsers/rst + + if __name__ == '__main__': + import __init__ # noqa: F401 ++from packaging.version import Version + from test_parsers import DocutilsTestSupport +-from docutils.utils.code_analyzer import with_pygments ++from docutils.utils.code_analyzer import with_pygments, pygments_version + + + def suite(): + s = DocutilsTestSupport.ParserTestSuite() + if not with_pygments: + del(totest['code-parsing']) ++ del(totest['code-parsing-2-14']) ++ elif pygments_version >= Version('2.14.0'): ++ del(totest['code-parsing']) ++ else: ++ del(totest['code-parsing-2-14']) + s.generateTests(totest) + return s + +@@ -170,6 +176,165 @@ totest['code-parsing'] = [ + \n\ + + print ++ ++ ( ++ ++ 8 ++ ++ / ++ ++ 2 ++ ++ ) ++"""], ++["""\ ++.. code:: latex ++ :class: testclass ++ ++ hello \\emph{world} % emphasize ++""", ++"""\ ++ ++ ++ hello \n\ ++ ++ \\emph ++ ++ { ++ world ++ ++ } ++ \n\ ++ ++ % emphasize"""], ++["""\ ++.. code:: rst ++ :number-lines: ++ ++ This is a code block with text. ++""", ++"""\ ++ ++ ++ ++ 1 \n\ ++ This is a code block with text. ++"""], ++["""\ ++Code not parsed but warning silenced in ParserTestCase. ++ ++.. code:: s-lang ++ ++ % abc.sl ++ autoload("abc_mode", "abc"); ++""", ++"""\ ++ ++ ++ Code not parsed but warning silenced in ParserTestCase. ++ ++ % abc.sl ++ autoload("abc_mode", "abc"); ++"""], ++["""\ ++Place the language name in a class argument to avoid the no-lexer warning: ++ ++.. code:: ++ :class: s-lang ++ ++ % abc.sl ++ autoload("abc_mode", "abc"); ++""", ++"""\ ++ ++ ++ Place the language name in a class argument to avoid the no-lexer warning: ++ ++ % abc.sl ++ autoload("abc_mode", "abc"); ++"""], ++] ++ ++totest['code-parsing-2-14'] = [ ++["""\ ++.. code:: python3 ++ :class: testclass ++ ++ print('hello world') # to stdout ++""", ++"""\ ++ ++ ++ \n\ ++ ++ print ++ ++ ( ++ ++ 'hello world' ++ ++ ) ++ \n\ ++ ++ # to stdout ++"""], ++["""\ ++.. code:: python3 ++ :class: testclass ++ :name: my_function ++ :number-lines: 7 ++ ++ def my_function(): ++ '''Test the lexer. ++ ''' ++ ++ # and now for something completely different ++ print(8/2) ++""", ++"""\ ++ ++ ++ ++ 7 \n\ ++ ++ def ++ \n\ ++ ++ my_function ++ ++ (): ++ ++ \n\ ++ ++ 8 \n\ ++ ++ \n\ ++ ++ \'\'\'Test the lexer. ++ ++ 9 \n\ ++ ++ \'\'\' ++ ++ \n\ ++ ++ 10 \n\ ++ ++ \n\ ++ ++ 11 \n\ ++ ++ \n\ ++ ++ # and now for something completely different ++ ++ \n\ ++ ++ 12 \n\ ++ ++ \n\ ++ ++ print + + ( + +--- a/test/test_parsers/test_rst/test_directives/test_code_long.py ++++ b/test/test_parsers/test_rst/test_directives/test_code_long.py +@@ -10,15 +10,22 @@ Test the 'code' directive in body.py wit + + if __name__ == '__main__': + import __init__ # noqa: F401 ++from packaging.version import Version + from test_parsers import DocutilsTestSupport +-from docutils.utils.code_analyzer import with_pygments ++from docutils.utils.code_analyzer import with_pygments, pygments_version + + + def suite(): + settings = {'syntax_highlight': 'long'} + s = DocutilsTestSupport.ParserTestSuite(suite_settings=settings) + if with_pygments: ++ if pygments_version >= Version('2.14.0'): ++ del(totest['code-parsing-long']) ++ else: ++ del(totest['code-parsing-long-2-14']) ++ + s.generateTests(totest) ++ + return s + + +@@ -73,6 +80,94 @@ totest['code-parsing-long'] = [ + \n\ + + print ++ ++ ( ++ ++ 8 ++ ++ / ++ ++ 2 ++ ++ ) ++"""], ++["""\ ++.. code:: latex ++ ++ hello \\emph{world} % emphasize ++""", ++"""\ ++ ++ ++ hello \n\ ++ ++ \\emph ++ ++ { ++ world ++ ++ } ++ \n\ ++ ++ % emphasize"""], ++] ++ ++totest['code-parsing-long-2-14'] = [ ++["""\ ++.. code:: python3 ++ :number-lines: 7 ++ ++ def my_function(): ++ '''Test the lexer. ++ ''' ++ ++ # and now for something completely different ++ print(8/2) ++""", ++"""\ ++ ++ ++ ++ 7 \n\ ++ ++ def ++ \n\ ++ ++ my_function ++ ++ (): ++ ++ \n\ ++ ++ 8 \n\ ++ ++ \n\ ++ ++ \'\'\'Test the lexer. ++ ++ 9 \n\ ++ ++ \'\'\' ++ ++ \n\ ++ ++ 10 \n\ ++ ++ \n\ ++ ++ 11 \n\ ++ ++ \n\ ++ ++ # and now for something completely different ++ ++ \n\ ++ ++ 12 \n\ ++ ++ \n\ ++ ++ print + + ( + +--- a/test/test_parsers/test_rst/test_directives/test_include.py ++++ b/test/test_parsers/test_rst/test_directives/test_include.py +@@ -10,9 +10,10 @@ Tests for misc.py "include" directive. + import os.path + if __name__ == '__main__': + import __init__ # noqa: F401 ++from packaging.version import Version + from test_parsers import DocutilsTestSupport + from docutils import parsers +-from docutils.utils.code_analyzer import with_pygments ++from docutils.utils.code_analyzer import with_pygments, pygments_version + + # optional 3rd-party markdown parser + md_parser_name = 'recommonmark' +@@ -27,6 +28,11 @@ def suite(): + # eventually skip optional parts: + if not with_pygments: + del(totest['include-code']) ++ del(totest['include-code-2-14']) ++ elif pygments_version >= Version('2.14.0'): ++ del(totest['include-code']) ++ else: ++ del(totest['include-code-2-14']) + if not md_parser_class: + del(totest['include-markdown']) + s.generateTests(totest) +@@ -1191,6 +1197,313 @@ Including includes/include14.txt + + .. + \n\ ++ ++ include ++ ++ :: ++ ../sibling/include7.txt ++""" % reldir(include6)], ++["""\ ++Circular inclusion ++ ++.. include:: %s ++""" % include15, ++"""\ ++ ++ ++ Circular inclusion ++ ++ File "include15.txt": example of rekursive inclusion. ++ ++ File "include16.txt": example of rekursive inclusion. ++ ++ ++ circular inclusion in "include" directive: ++ %s ++ > %s ++ > %s ++ > test data ++ ++ .. include:: include15.txt ++ ++ No loop when clipping before the "include" directive: ++ ++ File "include15.txt": example of rekursive inclusion. ++""" % (reldir(include16), reldir(include15), ++ reldir(include16), reldir(include15))], ++["""\ ++Circular inclusion with clipping. ++ ++.. include:: %s ++ :start-line: 2 ++""" % include16, ++"""\ ++ ++ ++ Circular inclusion with clipping. ++ ++ File "include15.txt": example of rekursive inclusion. ++ ++ File "include16.txt": example of rekursive inclusion. ++ ++ ++ circular inclusion in "include" directive: ++ %s ++ > %s ++ > %s ++ > %s ++ > test data ++ ++ .. include:: include15.txt ++ ++ No loop when clipping before the "include" directive: ++ ++ File "include15.txt": example of rekursive inclusion. ++ ++ No loop when clipping before the "include" directive: ++ ++ File "include15.txt": example of rekursive inclusion. ++""" % (reldir(include16), reldir(include15), reldir(include16), ++ reldir(include15), reldir(include16))], ++["""\ ++Circular inclusion with specified parser. ++ ++.. include:: %s ++ :parser: rst ++""" % include15, ++"""\ ++ ++ ++ Circular inclusion with specified parser. ++ ++ File "include15.txt": example of rekursive inclusion. ++ ++ File "include16.txt": example of rekursive inclusion. ++ ++ ++ circular inclusion in "include" directive: ++ %s ++ > %s ++ > %s ++ > test data ++ ++ .. include:: include15.txt ++ ++ No loop when clipping before the "include" directive: ++ ++ File "include15.txt": example of rekursive inclusion. ++""" % (reldir(include16), reldir(include15), ++ reldir(include16), reldir(include15))], ++["""\ ++No circular inclusion. ++ ++============================= ============================= ++.. include:: data/include.txt .. include:: data/include.txt ++============================= ============================= ++""", ++"""\ ++ ++ ++ No circular inclusion. ++ ++ ++ ++ ++ ++ ++ ++ ++ Some include text. ++ ++ ++ Some include text."""], ++] ++ ++totest['include-code-2-14'] = [ ++["""\ ++Included code ++ ++.. include:: %s ++ :code: rst ++""" % include1, ++"""\ ++ ++ ++ Included code ++ ++ ++ Inclusion 1 ++ \n\ ++ ++ ----------- ++ \n\ ++ ++ \n\ ++ This file is used by \n\ ++ ++ ``test_include.py`` ++ . ++""" % reldir(include1)], ++["""\ ++Included code ++ ++.. include:: %s ++ :code: rst ++ :number-lines: ++""" % include1, ++"""\ ++ ++ ++ Included code ++ ++ ++ 1 \n\ ++ ++ Inclusion 1 ++ \n\ ++ ++ 2 \n\ ++ ++ ----------- ++ \n\ ++ ++ 3 \n\ ++ ++ \n\ ++ ++ 4 \n\ ++ ++ This file is used by \n\ ++ ++ ``test_include.py`` ++ . ++""" % reldir(include1)], ++["""\ ++TAB expansion with included code: ++ ++.. include:: %s ++ :code: rst ++""" % include_literal, ++"""\ ++ ++ ++ TAB expansion with included code: ++ ++ Literal included this should \n\ ++ ++ **not** ++ be \n\ ++ ++ *marked* ++ \n\ ++ ++ `up` ++ . ++ ++ \n\ ++ <- leading raw tab. ++ ++ \n\ ++ \n\ ++ Newlines ++ ++ \n\ ++ are ++ ++ \n\ ++ normalized. ++""" % include_literal], ++["""\ ++Custom TAB expansion with included code: ++ ++.. include:: %s ++ :code: rst ++ :tab-width: 2 ++""" % include_literal, ++"""\ ++ ++ ++ Custom TAB expansion with included code: ++ ++ Literal included this should \n\ ++ ++ **not** ++ be \n\ ++ ++ *marked* ++ \n\ ++ ++ `up` ++ . ++ ++ \n\ ++ <- leading raw tab. ++ ++ \n\ ++ \n\ ++ Newlines ++ ++ \n\ ++ are ++ ++ \n\ ++ normalized. ++""" % include_literal], ++["""\ ++Custom TAB expansion with included code: ++ ++.. include:: %s ++ :code: rst ++ :tab-width: -1 ++""" % include_literal, ++"""\ ++ ++ ++ Custom TAB expansion with included code: ++ ++ Literal included this should \n\ ++ ++ **not** ++ be \n\ ++ ++ *marked* ++ \n\ ++ ++ `up` ++ . ++ ++ \n\ ++ \t<- leading raw tab. ++ ++ \n\ ++ \n\ ++ Newlines ++ ++ \n\ ++ are ++ ++ \n\ ++ normalized. ++""" % include_literal], ++["""\ ++Including includes/include14.txt ++ ++.. include:: %s ++""" % include14, ++"""\ ++ ++ ++ Including includes/include14.txt ++ ++ Including more/include6.txt as rst-code from includes/include14.txt: ++ ++ In includes/more/include6.txt ++ ++ \n\ ++ \n\ ++ ++ .. ++ \n\ + + include + +--- a/docutils/utils/code_analyzer.py ++++ b/docutils/utils/code_analyzer.py +@@ -9,11 +9,14 @@ + from docutils import ApplicationError + try: + import pygments ++ from packaging.version import Version + from pygments.lexers import get_lexer_by_name + from pygments.formatters.html import _get_ttype_class + with_pygments = True ++ pygments_version = Version(pygments.__version__) + except ImportError: + with_pygments = False ++ pygments_version = '0' + + # Filter the following token types from the list of class arguments: + unstyled_tokens = ['token', # Token (base token type) + + -- cgit v1.2.3