[docutils:feature-requests] #81 Support for pytest

Adam Turner via Docutils-develop <[email protected]>
Newsgroups gmane.text.docutils.devel
Message-ID </p/docutils/feature-requests/81/3e43c51f99760e07ee3e5f24b224058677f34c78.feature-requests@docutils.p.sourceforge.net>
- **summary**: 0.17.1: pytest is failing --> Support for pytest



---

** [feature-requests:#81] Support for pytest**

**Status:** closed-fixed
**Group:** Default
**Created:** Sun Jun 27, 2021 03:07 AM UTC by Tomasz Kłoczko
**Last Updated:** Thu Nov 10, 2022 05:11 PM UTC
**Owner:** nobody


Just normal build, install and test cycle used on building package from non-root account:
- "setup.py build"
- "setup.py install --root </install/prefix>"
- "pytest with PYTHONPATH pointing to setearch and sitelib inside </install/prefix>

~~~
+ PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-docutils-0.17.1-2.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-docutils-0.17.1-2.fc35.x86_64/usr/lib/python3.8/site-packages
+ PYTHONDONTWRITEBYTECODE=1
+ /usr/bin/pytest -ra
=========================================================================== test session starts ============================================================================
platform linux -- Python 3.8.9, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
benchmark: 3.4.1 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000)
Using --randomly-seed=2664516846
rootdir: /home/tkloczko/rpmbuild/BUILD/docutils-0.17.1
plugins: forked-1.3.0, shutil-1.7.0, virtualenv-1.7.0, expect-1.1.0, httpbin-1.0.0, flake8-1.0.7, timeout-1.4.2, betamax-0.8.1, freezegun-0.4.2, case-1.5.3, isort-1.3.0, aspectlib-1.5.2, asyncio-0.15.1, toolbox-0.5, xprocess-0.17.1, aiohttp-0.3.0, checkdocs-2.7.0, mock-3.6.1, rerunfailures-9.1.1, requests-mock-1.9.3, cov-2.12.1, pyfakefs-4.5.0, cases-3.6.1, flaky-3.7.0, hypothesis-6.14.0, benchmark-3.4.1, xdist-2.3.0, pylama-7.7.1, randomly-3.8.0, Faker-8.8.2, datadir-1.3.1, regressions-2.2.0
collected 240 items

test/test_statemachine.py .................                                                                                                                          [  7%]
test/test_functional.py E                                                                                                                                            [  7%]
test/test_dependencies.py .....                                                                                                                                      [  9%]
test/test_parsers/test_get_parser_class.py ...                                                                                                                       [ 10%]
test/test_writers/test_latex2e_misc.py .                                                                                                                             [ 11%]
test/test_publisher.py ....                                                                                                                                          [ 12%]
test/test_writers/test_get_writer_class.py ...                                                                                                                       [ 14%]
test/test__init__.py ..                                                                                                                                              [ 15%]
. .                                                                                                                                                                  [ 15%]
test/test__init__.py ......                                                                                                                                          [ 17%]
test/test_settings.py ........................                                                                                                                       [ 28%]
test/test_writers/test_docutils_xml.py .....                                                                                                                         [ 30%]
test/test_parsers/test_parser.py .                                                                                                                                   [ 30%]
test/test_transforms/test___init__.py .                                                                                                                              [ 30%]
test/test_language.py EEEE                                                                                                                                           [ 32%]
test/test_traversals.py .                                                                                                                                            [ 33%]
test/test_writers/test_odt.py ..........                                                                                                                             [ 37%]
test/test_command_line.py F                                                                                                                                          [ 37%]
test/test_writers/test_html5_polyglot_parts.py EE                                                                                                                    [ 38%]
test/test_nodes.py ...............................                                                                                                                   [ 51%]
test/test_writers/test_html5_polyglot_misc.py ...............                                                                                                        [ 57%]
test/test_pickle.py .                                                                                                                                                [ 58%]
tools/test/test_buildhtml.py ..                                                                                                                                      [ 58%]
test/test_io.py .................                                                                                                                                    [ 66%]
test/test_readers/test_get_reader_class.py ...                                                                                                                       [ 67%]
test/test_error_reporting.py .............                                                                                                                           [ 72%]
test/test_writers/test_html4css1_misc.py ...............                                                                                                             [ 79%]
test/test_parsers/test_rst/test_directives/test_code_parsing.py ..                                                                                                   [ 79%]
test/test_utils.py ........................                                                                                                                          [ 89%]
test/test_parsers/test_recommonmark/test_misc.py ..Fs                                                                                                                [ 91%]
test/test_parsers/test_rst/test_directives/test__init__.py ....                                                                                                      [ 93%]
test/test_viewlist.py ................                                                                                                                               [100%]

================================================================================== ERRORS ==================================================================================
________________________________________________________________ ERROR at setup of FunctionalTestCase.test _________________________________________________________________

self = <[AttributeError("'FunctionalTestCase' object has no attribute '_testMethodName'") raised in repr()] FunctionalTestCase object at 0x7fbd75666df0>, args = ('test',)
kwargs = {}

    def __init__(self, *args, **kwargs):
        """Set self.configfile, pass arguments to parent __init__."""
>       self.configfile = kwargs['configfile']
E       KeyError: 'configfile'

/home/tkloczko/rpmbuild/BUILD/docutils-0.17.1/test/test_functional.py:95: KeyError
____________________________________________________________ ERROR at setup of LanguageTestCase.test_directives ____________________________________________________________

self = <[AttributeError("'LanguageTestCase' object has no attribute '_testMethodName'") raised in repr()] LanguageTestCase object at 0x7fbd754ce0d0>
args = ('test_directives',), kwargs = {}

    def __init__(self, *args, **kwargs):
        self.ref = docutils.languages.get_language(reference_language,
                                                   _reporter)
>       self.language = kwargs['language']
E       KeyError: 'language'

/home/tkloczko/rpmbuild/BUILD/docutils-0.17.1/test/test_language.py:81: KeyError
______________________________________________________________ ERROR at setup of LanguageTestCase.test_roles _______________________________________________________________

self = <[AttributeError("'LanguageTestCase' object has no attribute '_testMethodName'") raised in repr()] LanguageTestCase object at 0x7fbd753f98b0>, args = ('test_roles',)
kwargs = {}

    def __init__(self, *args, **kwargs):
        self.ref = docutils.languages.get_language(reference_language,
                                                   _reporter)
>       self.language = kwargs['language']
E       KeyError: 'language'

/home/tkloczko/rpmbuild/BUILD/docutils-0.17.1/test/test_language.py:81: KeyError
_______________________________________________________ ERROR at setup of LanguageTestCase.test_bibliographic_fields _______________________________________________________

self = <[AttributeError("'LanguageTestCase' object has no attribute '_testMethodName'") raised in repr()] LanguageTestCase object at 0x7fbd753c4850>
args = ('test_bibliographic_fields',), kwargs = {}

    def __init__(self, *args, **kwargs):
        self.ref = docutils.languages.get_language(reference_language,
                                                   _reporter)
>       self.language = kwargs['language']
E       KeyError: 'language'

/home/tkloczko/rpmbuild/BUILD/docutils-0.17.1/test/test_language.py:81: KeyError
______________________________________________________________ ERROR at setup of LanguageTestCase.test_labels ______________________________________________________________

self = <[AttributeError("'LanguageTestCase' object has no attribute '_testMethodName'") raised in repr()] LanguageTestCase object at 0x7fbd754181f0>
args = ('test_labels',), kwargs = {}

    def __init__(self, *args, **kwargs):
        self.ref = docutils.languages.get_language(reference_language,
                                                   _reporter)
>       self.language = kwargs['language']
E       KeyError: 'language'

/home/tkloczko/rpmbuild/BUILD/docutils-0.17.1/test/test_language.py:81: KeyError
______________________________________________________ ERROR at setup of HtmlWriterPublishPartsTestCase.test_publish _______________________________________________________

self = <[AttributeError("'HtmlWriterPublishPartsTestCase' object has no attribute '_testMethodName'") raised in repr()] HtmlWriterPublishPartsTestCase object at 0x7fbd54e7e550>
args = ('test_publish',), kwargs = {}

    def __init__(self, *args, **kwargs):
        if 'writer_name' in kwargs:
            self.writer_name = kwargs['writer_name']
            del kwargs['writer_name']
>       CustomTestCase.__init__(self, *args, **kwargs)
E       TypeError: __init__() missing 3 required positional arguments: 'input', 'expected', and 'id'

/home/tkloczko/rpmbuild/BUILD/docutils-0.17.1/test/DocutilsTestSupport.py:673: TypeError
______________________________________________________ ERROR at setup of Html5WriterPublishPartsTestCase.test_publish ______________________________________________________

self = <[AttributeError("'Html5WriterPublishPartsTestCase' object has no attribute '_testMethodName'") raised in repr()] Html5WriterPublishPartsTestCase object at 0x7fbd75348160>
args = ('test_publish',), kwargs = {}

    def __init__(self, *args, **kwargs):
        if 'writer_name' in kwargs:
            self.writer_name = kwargs['writer_name']
            del kwargs['writer_name']
>       CustomTestCase.__init__(self, *args, **kwargs)
E       TypeError: __init__() missing 3 required positional arguments: 'input', 'expected', and 'id'

/home/tkloczko/rpmbuild/BUILD/docutils-0.17.1/test/DocutilsTestSupport.py:673: TypeError
================================================================================= FAILURES =================================================================================
_____________________________________________________________ CommandLineEncodingTests.test_sys_argv_decoding ______________________________________________________________

self = <docutils.frontend.OptionParser object at 0x7fbd54bba550>, args = ['-ra', '--source-url=test.txt', '--title=Dornröschen']
values = <Values at 0x7fbd54bba2e0: {'title': None, 'generator': True, 'datestamp': "%Y-%m-%d %H:%M UTC (If you see this in tes..._visitor': None, '_disable_config': None, '_source': None, '_destination': None, '_config_files': ['./docutils.conf']}>

    def parse_args(self, args=None, values=None):
        """
        parse_args(args : [string] = sys.argv[1:],
                   values : Values = None)
        -> (values : Values, args : [string])

        Parse the command-line options found in 'args' (default:
        sys.argv[1:]).  Any errors result in a call to 'error()', which
        by default prints the usage message to stderr and calls
        sys.exit() with an error message.  On success returns a pair
        (values, args) where 'values' is a Values instance (with all
        your option values) and 'args' is the list of arguments left
        over after parsing options.
        """
        rargs = self._get_args(args)
        if values is None:
            values = self.get_default_values()

        # Store the halves of the argument list as attributes for the
        # convenience of callbacks:
        #   rargs
        #     the rest of the command-line (the "r" stands for
        #     "remaining" or "right-hand")
        #   largs
        #     the leftover arguments -- ie. what's left after removing
        #     options and their arguments (the "l" stands for "leftover"
        #     or "left-hand")
        self.rargs = rargs
        self.largs = largs = []
        self.values = values

        try:
>           stop = self._process_args(largs, rargs, values)

/usr/lib64/python3.8/optparse.py:1387:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <docutils.frontend.OptionParser object at 0x7fbd54bba550>, largs = [], rargs = ['--source-url=test.txt', '--title=Dornröschen']
values = <Values at 0x7fbd54bba2e0: {'title': None, 'generator': True, 'datestamp': "%Y-%m-%d %H:%M UTC (If you see this in tes..._visitor': None, '_disable_config': None, '_source': None, '_destination': None, '_config_files': ['./docutils.conf']}>

    def _process_args(self, largs, rargs, values):
        """_process_args(largs : [string],
                         rargs : [string],
                         values : Values)

        Process command-line arguments and populate 'values', consuming
        options and arguments from 'rargs'.  If 'allow_interspersed_args' is
        false, stop at the first non-option argument.  If true, accumulate any
        interspersed non-option arguments in 'largs'.
        """
        while rargs:
            arg = rargs[0]
            # We handle bare "--" explicitly, and bare "-" is handled by the
            # standard arg handler since the short arg case ensures that the
            # len of the opt string is greater than 1.
            if arg == "--":
                del rargs[0]
                return
            elif arg[0:2] == "--":
                # process a single long option (possibly with value(s))
                self._process_long_opt(rargs, values)
            elif arg[:1] == "-" and len(arg) > 1:
                # process a cluster of short options (possibly with
                # value(s) for the last one only)
>               self._process_short_opts(rargs, values)

/usr/lib64/python3.8/optparse.py:1431:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <docutils.frontend.OptionParser object at 0x7fbd54bba550>, rargs = ['--source-url=test.txt', '--title=Dornröschen']
values = <Values at 0x7fbd54bba2e0: {'title': None, 'generator': True, 'datestamp': "%Y-%m-%d %H:%M UTC (If you see this in tes..._visitor': None, '_disable_config': None, '_source': None, '_destination': None, '_config_files': ['./docutils.conf']}>

    def _process_short_opts(self, rargs, values):
        arg = rargs.pop(0)
        stop = False
        i = 1
        for ch in arg[1:]:
            opt = "-" + ch
            option = self._short_opt.get(opt)
            i += 1                      # we have consumed a character

            if not option:
                raise BadOptionError(opt)
            if option.takes_value():
                # Any characters left in arg?  Pretend they're the
                # next arg, and stop consuming characters of arg.
                if i < len(arg):
                    rargs.insert(0, arg[i:])
                    stop = True

                nargs = option.nargs
                if len(rargs) < nargs:
                    self.error(ngettext(
                        "%(option)s option requires %(number)d argument",
                        "%(option)s option requires %(number)d arguments",
                        nargs) % {"option": opt, "number": nargs})
                elif nargs == 1:
                    value = rargs.pop(0)
                else:
                    value = tuple(rargs[0:nargs])
                    del rargs[0:nargs]

            else:                       # option doesn't take a value
                value = None

>           option.process(opt, value, values, self)

/usr/lib64/python3.8/optparse.py:1536:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <Option at 0x7fbd54edfd90: -r/--report>, opt = '-r', value = 'a'
values = <Values at 0x7fbd54bba2e0: {'title': None, 'generator': True, 'datestamp': "%Y-%m-%d %H:%M UTC (If you see this in tes..._visitor': None, '_disable_config': None, '_source': None, '_destination': None, '_config_files': ['./docutils.conf']}>
parser = <docutils.frontend.OptionParser object at 0x7fbd54bba550>

    def process(self, opt, value, values, parser):
        """
        Call the validator function on applicable settings and
        evaluate the 'overrides' option.
        Extends `optparse.Option.process`.
        """
>       result = optparse.Option.process(self, opt, value, values, parser)

/home/tkloczko/rpmbuild/BUILDROOT/python-docutils-0.17.1-2.fc35.x86_64/usr/lib/python3.8/site-packages/docutils/frontend.py:354:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <Option at 0x7fbd54edfd90: -r/--report>, opt = '-r', value = 'a'
values = <Values at 0x7fbd54bba2e0: {'title': None, 'generator': True, 'datestamp': "%Y-%m-%d %H:%M UTC (If you see this in tes..._visitor': None, '_disable_config': None, '_source': None, '_destination': None, '_config_files': ['./docutils.conf']}>
parser = <docutils.frontend.OptionParser object at 0x7fbd54bba550>

    def process(self, opt, value, values, parser):

        # First, convert the value(s) to the right type.  Howl if any
        # value(s) are bogus.
>       value = self.convert_value(opt, value)

/usr/lib64/python3.8/optparse.py:779:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <Option at 0x7fbd54edfd90: -r/--report>, opt = '-r', value = 'a'

    def convert_value(self, opt, value):
        if value is not None:
            if self.nargs == 1:
>               return self.check_value(opt, value)

/usr/lib64/python3.8/optparse.py:771:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <Option at 0x7fbd54edfd90: -r/--report>, opt = '-r', value = 'a'

    def check_value(self, opt, value):
        checker = self.TYPE_CHECKER.get(self.type)
        if checker is None:
            return value
        else:
>           return checker(self, opt, value)

/usr/lib64/python3.8/optparse.py:766:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

option = <Option at 0x7fbd54edfd90: -r/--report>, opt = '-r', value = 'a'

    def check_choice(option, opt, value):
        if value in option.choices:
            return value
        else:
            choices = ", ".join(map(repr, option.choices))
>           raise OptionValueError(
                _("option %s: invalid choice: %r (choose from %s)")
                % (opt, value, choices))
E           optparse.OptionValueError: option -r: invalid choice: 'a' (choose from 'info', '1', 'warning', '2', 'error', '3', 'severe', '4', 'none', '5')

/usr/lib64/python3.8/optparse.py:440: OptionValueError

During handling of the above exception, another exception occurred:

self = <test_command_line.CommandLineEncodingTests testMethod=test_sys_argv_decoding>

    def test_sys_argv_decoding(self):
        if argv_encoding == 'ascii': # cannot test
            return
        sys.argv.append('--source-url=test.txt') # pure ASCII argument
        if sys.version_info < (3, 0):
            sys.argv.append(u'--title=Dornröschen'.encode(argv_encoding))
        else:
            sys.argv.append(u'--title=Dornröschen')
        publisher = docutils.core.Publisher()
>       publisher.process_command_line()

/home/tkloczko/rpmbuild/BUILD/docutils-0.17.1/test/test_command_line.py:41:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/home/tkloczko/rpmbuild/BUILDROOT/python-docutils-0.17.1-2.fc35.x86_64/usr/lib/python3.8/site-packages/docutils/core.py:162: in process_command_line
    self.settings = option_parser.parse_args(argv)
/usr/lib64/python3.8/optparse.py:1389: in parse_args
    self.error(str(err))
/usr/lib64/python3.8/optparse.py:1569: in error
    self.exit(2, "%s: error: %s\n" % (self.get_prog_name(), msg))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <docutils.frontend.OptionParser object at 0x7fbd54bba550>, status = 2
msg = "pytest: error: option -r: invalid choice: 'a' (choose from 'info', '1', 'warning', '2', 'error', '3', 'severe', '4', 'none', '5')\n"

    def exit(self, status=0, msg=None):
        if msg:
            sys.stderr.write(msg)
>       sys.exit(status)
E       SystemExit: 2

/usr/lib64/python3.8/optparse.py:1559: SystemExit
--------------------------------------------------------------------------- Captured stderr call ---------------------------------------------------------------------------
Usage
=====
  pytest [options]

pytest: error: option -r: invalid choice: 'a' (choose from 'info', '1', 'warning', '2', 'error', '3', 'severe', '4', 'none', '5')
________________________________________________________________ reCommonMarkParserTests.test_parsing_error ________________________________________________________________

self = <test_parsers.test_recommonmark.test_misc.reCommonMarkParserTests testMethod=test_parsing_error>

    @unittest.skipUnless(recommonmark_wrapper.CommonMarkParser, skip_msg)
    def test_parsing_error(self):
>       output = publish_string(sample1, parser_name='recommonmark',
                                settings_overrides={'warning_stream': ''})

/home/tkloczko/rpmbuild/BUILD/docutils-0.17.1/test/test_parsers/test_recommonmark/test_misc.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/home/tkloczko/rpmbuild/BUILDROOT/python-docutils-0.17.1-2.fc35.x86_64/usr/lib/python3.8/site-packages/docutils/core.py:407: in publish_string
    output, pub = publish_programmatically(
/home/tkloczko/rpmbuild/BUILDROOT/python-docutils-0.17.1-2.fc35.x86_64/usr/lib/python3.8/site-packages/docutils/core.py:665: in publish_programmatically
    output = pub.publish(enable_exit_status=enable_exit_status)
/home/tkloczko/rpmbuild/BUILDROOT/python-docutils-0.17.1-2.fc35.x86_64/usr/lib/python3.8/site-packages/docutils/core.py:217: in publish
    self.document = self.reader.read(self.source, self.parser,
/home/tkloczko/rpmbuild/BUILDROOT/python-docutils-0.17.1-2.fc35.x86_64/usr/lib/python3.8/site-packages/docutils/readers/__init__.py:72: in read
    self.parse()
/home/tkloczko/rpmbuild/BUILDROOT/python-docutils-0.17.1-2.fc35.x86_64/usr/lib/python3.8/site-packages/docutils/readers/__init__.py:78: in parse
    self.parser.parse(self.input, document)
/home/tkloczko/rpmbuild/BUILDROOT/python-docutils-0.17.1-2.fc35.x86_64/usr/lib/python3.8/site-packages/docutils/parsers/recommonmark_wrapper.py:117: in parse
    if node['level'] != section_level:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <section "title": <title...><paragraph...>>, key = 'level'

    def __getitem__(self, key):
        if isinstance(key, basestring):
>           return self.attributes[key]
E           KeyError: 'level'

/home/tkloczko/rpmbuild/BUILDROOT/python-docutils-0.17.1-2.fc35.x86_64/usr/lib/python3.8/site-packages/docutils/nodes.py:652: KeyError
============================================================================= warnings summary =============================================================================
test/test_parsers/test_recommonmark/test_section_headers.py:37
  /home/tkloczko/rpmbuild/BUILD/docutils-0.17.1/test/test_parsers/test_recommonmark/test_section_headers.py:37: DeprecationWarning: invalid escape sequence \
    """\

test/test_parsers/test_recommonmark/test_section_headers.py:50
  /home/tkloczko/rpmbuild/BUILD/docutils-0.17.1/test/test_parsers/test_recommonmark/test_section_headers.py:50: DeprecationWarning: invalid escape sequence \
    """\

test/test_parsers/test_recommonmark/test_section_headers.py:164
  /home/tkloczko/rpmbuild/BUILD/docutils-0.17.1/test/test_parsers/test_recommonmark/test_section_headers.py:164: DeprecationWarning: invalid escape sequence \
    """\

test/test_transforms/test___init__.py:20
  /home/tkloczko/rpmbuild/BUILD/docutils-0.17.1/test/test_transforms/test___init__.py:20: PytestCollectionWarning: cannot collect test class 'TestTransform' because it has a __init__ constructor (from: test/test_transforms/test___init__.py)
    class TestTransform(transforms.Transform):

test/test_settings.py::ConfigFileTests::test_old
test/test_settings.py::ConfigFileTests::test_old_and_new
test/test_settings.py::ConfigEnvVarFileTests::test_old_and_new
test/test_settings.py::ConfigEnvVarFileTests::test_old
  /home/tkloczko/rpmbuild/BUILD/docutils-0.17.1/test/data/config_old.txt:0: ConfigDeprecationWarning:
  The "[option]" section is deprecated.  Support for old-format configuration
  files may be removed in a future Docutils release.  Please revise your
  configuration files.  See <http://docutils.sf.net/docs/user/config.html>,
  section "Old-Format Configuration Files".

test/test_parsers/test_recommonmark/test_misc.py::reCommonMarkParserTests::test_raw_disabled_inline
test/test_parsers/test_recommonmark/test_misc.py::reCommonMarkParserTests::test_raw_disabled
test/test_parsers/test_recommonmark/test_misc.py::reCommonMarkParserTests::test_parsing_error
  /usr/lib/python3.8/site-packages/recommonmark/parser.py:75: UserWarning: Container node skipped: type=document
    warn("Container node skipped: type={0}".format(mdnode.t))

-- Docs: https://docs.pytest.org/en/stable/warnings.html
========================================================================= short test summary info ==========================================================================
SKIPPED [1] test/test_parsers/test_recommonmark/test_misc.py:91: recommonmark_wrapper: parser found, fallback not used
ERROR test/test_functional.py::FunctionalTestCase::test - KeyError: 'configfile'
ERROR test/test_language.py::LanguageTestCase::test_directives - KeyError: 'language'
ERROR test/test_language.py::LanguageTestCase::test_roles - KeyError: 'language'
ERROR test/test_language.py::LanguageTestCase::test_bibliographic_fields - KeyError: 'language'
ERROR test/test_language.py::LanguageTestCase::test_labels - KeyError: 'language'
ERROR test/test_writers/test_html5_polyglot_parts.py::HtmlWriterPublishPartsTestCase::test_publish - TypeError: __init__() missing 3 required positional arguments: 'inpu...
ERROR test/test_writers/test_html5_polyglot_parts.py::Html5WriterPublishPartsTestCase::test_publish - TypeError: __init__() missing 3 required positional arguments: 'inp...
FAILED test/test_command_line.py::CommandLineEncodingTests::test_sys_argv_decoding - SystemExit: 2
FAILED test/test_parsers/test_recommonmark/test_misc.py::reCommonMarkParserTests::test_parsing_error - KeyError: 'level'
===================================================== 2 failed, 229 passed, 1 skipped, 11 warnings, 7 errors in 10.64s =====================================================
~~~


---

Sent from sourceforge.net because [email protected] is subscribed to https://sourceforge.net/p/docutils/feature-requests/

To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/feature-requests/options.  Or, if this is a mailing list, you can unsubscribe from the mailing list.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.