Bug#1013388: sphinxcontrib-bibtex: FTBFS with Sphinx 5.0, docutils 0.18: dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.9 3.10" returned exit code 13

Lucas Nussbaum lucas at debian.org
Thu Jun 23 07:45:54 BST 2022


Source: sphinxcontrib-bibtex
Version: 2.4.1-3
Severity: important
Tags: ftbfs
User: mitya57 at debian.org
Usertags: sphinx5.0

Hi,

sphinxcontrib-bibtex fails to build with Sphinx 5.0 and docutils 0.18, both of which
are currently available in experimental.

Relevant part (hopefully):
> make[2]: Entering directory '/<<PKGBUILDDIR>>/doc'
> sphinx-build -b html -d _build/doctrees   . _build/html
> Running Sphinx v5.0.2
> making output directory... done
> loading intersphinx inventory from /usr/share/doc/python3-doc/html/objects.inv...
> loading intersphinx inventory from /usr/share/doc/sphinx-doc/html/objects.inv...
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 17 source files that are out of date
> updating environment: [new config] 17 added, 0 changed, 0 removed
> reading sources... [  5%] api
> reading sources... [ 11%] api/bibfile
> reading sources... [ 17%] api/directives
> reading sources... [ 23%] api/domains
> reading sources... [ 29%] api/interface
> reading sources... [ 35%] api/nodes
> reading sources... [ 41%] api/plugin
> reading sources... [ 47%] api/pybtex
> reading sources... [ 52%] api/referencing
> reading sources... [ 58%] api/roles
> reading sources... [ 64%] api/transforms
> reading sources... [ 70%] changes
> reading sources... [ 76%] index
> reading sources... [ 82%] license
> reading sources... [ 88%] quickstart
> reading sources... [ 94%] related
> reading sources... [100%] usage
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [  5%] api
> writing output... [ 11%] api/bibfile
> writing output... [ 17%] api/directives
> writing output... [ 23%] api/domains
> writing output... [ 29%] api/interface
> writing output... [ 35%] api/nodes
> writing output... [ 41%] api/plugin
> writing output... [ 47%] api/pybtex
> writing output... [ 52%] api/referencing
> writing output... [ 58%] api/roles
> writing output... [ 64%] api/transforms
> writing output... [ 70%] changes
> writing output... [ 76%] index
> writing output... [ 82%] license
> writing output... [ 88%] quickstart
> writing output... [ 94%] related
> writing output... [100%] usage
> 
> generating indices... genindex py-modindex done
> highlighting module code... [  4%] pybtex.style.template
> highlighting module code... [  9%] sphinxcontrib.bibtex
> highlighting module code... [ 13%] sphinxcontrib.bibtex.bibfile
> highlighting module code... [ 18%] sphinxcontrib.bibtex.directives
> highlighting module code... [ 22%] sphinxcontrib.bibtex.domain
> highlighting module code... [ 27%] sphinxcontrib.bibtex.foot_directives
> highlighting module code... [ 31%] sphinxcontrib.bibtex.foot_domain
> highlighting module code... [ 36%] sphinxcontrib.bibtex.foot_roles
> highlighting module code... [ 40%] sphinxcontrib.bibtex.nodes
> highlighting module code... [ 45%] sphinxcontrib.bibtex.plugin
> highlighting module code... [ 50%] sphinxcontrib.bibtex.richtext
> highlighting module code... [ 54%] sphinxcontrib.bibtex.roles
> highlighting module code... [ 59%] sphinxcontrib.bibtex.style.names.last
> highlighting module code... [ 63%] sphinxcontrib.bibtex.style.referencing
> highlighting module code... [ 68%] sphinxcontrib.bibtex.style.referencing.author_year
> highlighting module code... [ 72%] sphinxcontrib.bibtex.style.referencing.basic_author_year
> highlighting module code... [ 77%] sphinxcontrib.bibtex.style.referencing.basic_label
> highlighting module code... [ 81%] sphinxcontrib.bibtex.style.referencing.extra_author
> highlighting module code... [ 86%] sphinxcontrib.bibtex.style.referencing.extra_label
> highlighting module code... [ 90%] sphinxcontrib.bibtex.style.referencing.extra_year
> highlighting module code... [ 95%] sphinxcontrib.bibtex.style.referencing.label
> highlighting module code... [100%] sphinxcontrib.bibtex.transforms
> 
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in _build/html.
> 
> Build finished. The HTML pages are in _build/html.
> make[2]: Leaving directory '/<<PKGBUILDDIR>>/doc'
> make[1]: Leaving directory '/<<PKGBUILDDIR>>'
>    dh_auto_test -O--buildsystem=pybuild
> I: pybuild base:239: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_sphinxcontrib.bibtex/build; python3.9 -m pytest test
> ============================= test session starts ==============================
> platform linux -- Python 3.9.13, pytest-6.2.5, py-1.10.0, pluggy-1.0.0
> rootdir: /<<PKGBUILDDIR>>, configfile: pytest.ini
> collected 82 items
> 
> test/test_autodoc.py F.                                                  [  2%]
> test/test_backrefs.py F                                                  [  3%]
> test/test_bibfiles.py F......FF                                          [ 14%]
> test/test_bibliography.py ...FF...FFFFF.F.FF                             [ 36%]
> test/test_citation.py ..FF.........                                      [ 52%]
> test/test_debug.py ....                                                  [ 57%]
> test/test_duplicate.py FFFFFF                                            [ 64%]
> test/test_filter.py ....                                                 [ 69%]
> test/test_footcite.py ..                                                 [ 71%]
> test/test_latex.py ..                                                    [ 74%]
> test/test_list.py F...                                                   [ 79%]
> test/test_natbib.py ......                                               [ 86%]
> test/test_parallel.py .                                                  [ 87%]
> test/test_plugin.py ...                                                  [ 91%]
> test/test_sphinx.py .                                                    [ 92%]
> test/test_style.py ....                                                  [ 97%]
> test/test_template.py ..                                                 [100%]
> 
> =================================== FAILURES ===================================
> _________________________________ test_autodoc _________________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9ee00c5c10>
> 
>     @pytest.mark.sphinx('html', testroot='autodoc')
>     def test_autodoc(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "doc_cite.html").read_text()
>         labels = ['One', 'Two', 'Thr', 'Fou', 'Fiv', 'Six', 'Sev', 'Eig', 'Nin',
>                   'Ten', 'Ele']
>         titles = ['Een', 'Twee', 'Drie', 'Vier', 'Vijf', 'Zes', 'Zeven', 'Acht',
>                   'Negen', 'Tien', 'Elf']
>         for label, title in zip(labels, titles):
>             assert len(html_citation_refs(label=label).findall(output)) == 1
> >           assert len(html_citations(label=label).findall(output)) == 1
> E           assert 0 == 1
> E            +  where 0 = len([])
> E            +    where [] = <built-in method findall of re.Pattern object at 0x1e49df0>('\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...="_sources/doc_cite.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>')
> E            +      where <built-in method findall of re.Pattern object at 0x1e49df0> = re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>One)(?:</a>)?</span>(?:<span class="fn-backref">\\(<).findall
> E            +        where re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>One)(?:</a>)?</span>(?:<span class="fn-backref">\\(<) = html_citations(label='One')
> 
> test/test_autodoc.py:25: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/autodoc
> # outdir: /tmp/pytest-of-user42/pytest-35/autodoc/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/autodoc/test.bib... parsed 11 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 3 source files that are out of date
> updating environment: [new config] 3 added, 0 changed, 0 removed
> reading sources... [ 33%] doc_cite                                             
> reading sources... [ 66%] doc_footcite                                         
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [ 33%] doc_cite                                              
> writing output... [ 66%] doc_footcite                                          
> writing output... [100%] index                                                 
> 
> generating indices... genindex py-modindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/autodoc/_build/html.
> 
> # warning: 
> 
> ________________________________ test_backrefs _________________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edf4e4790>
> 
>     @pytest.mark.sphinx('html', testroot='backrefs')
>     def test_backrefs(app, warning) -> None:
>         app.build()
>         output = (app.outdir / "index.html").read_text()
>         match = html_citations(text=".*Test zero.*").search(output)
> >       assert match
> E       assert None
> 
> test/test_backrefs.py:12: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/backrefs
> # outdir: /tmp/pytest-of-user42/pytest-35/backrefs/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/backrefs/test.bib... parsed 4 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/backrefs/_build/html.
> 
> # warning: 
> 
> __________________________ test_bibfiles_out_of_date ___________________________
> 
> make_app = <function make_app.<locals>.make at 0x7f9edf4868b0>
> app_params = app_params(args=['html'], kwargs={'srcdir': path('/tmp/pytest-of-user42/pytest-35/bibfiles_out_of_date')})
> 
>     @pytest.mark.sphinx('html', testroot='bibfiles_out_of_date')
>     def test_bibfiles_out_of_date(make_app, app_params) -> None:
>         args, kwargs = app_params
>         app = make_app(*args, **kwargs)
>         app.build()
>         status = app._status.getvalue()
>         # not found, parsing
>         assert re.search(status_up_to_date, status) is None
>         assert re.search(status_out_of_date, status) is not None
>         assert re.search(status_parsing, status) is not None
>         output = (app.outdir / "index.html").read_text()
> >       assert html_citations(label='1', text='.*Akkerdju.*').search(output)
> E       assert None
> E        +  where None = <built-in method search of re.Pattern object at 0x1df18d0>('\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...ref="_sources/index.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>')
> E        +    where <built-in method search of re.Pattern object at 0x1df18d0> = re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>1)(?:</a>)?</span>(?:<span class="fn-backref">\\(<a ).search
> E        +      where re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>1)(?:</a>)?</span>(?:<span class="fn-backref">\\(<a ) = html_citations(label='1', text='.*Akkerdju.*')
> 
> test/test_bibfiles.py:29: AssertionError
> ________________________ test_bibfiles_multiple_macros _________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edf1d1dc0>
> 
>     @pytest.mark.sphinx('html', testroot='bibfiles_multiple_macros')
>     def test_bibfiles_multiple_macros(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text()
> >       assert html_citations(
>             label='1', text=r'.*Rev\. Mod\. Phys\..*').search(output)
> E       assert None
> E        +  where None = <built-in method search of re.Pattern object at 0x2002e70>('\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...ref="_sources/index.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>')
> E        +    where <built-in method search of re.Pattern object at 0x2002e70> = re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>1)(?:</a>)?</span>(?:<span class="fn-backref">\\(<a ).search
> E        +      where re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>1)(?:</a>)?</span>(?:<span class="fn-backref">\\(<a ) = html_citations(label='1', text='.*Rev\\. Mod\\. Phys\\..*')
> 
> test/test_bibfiles.py:112: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/bibfiles_multiple_macros
> # outdir: /tmp/pytest-of-user42/pytest-35/bibfiles_multiple_macros/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibfiles_multiple_macros/macros.bib... parsed 0 entries
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibfiles_multiple_macros/test.bib... parsed 1 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/bibfiles_multiple_macros/_build/html.
> 
> # warning: 
> 
> _________________________ test_bibfiles_multiple_keys __________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edf1a8280>
> 
>     @pytest.mark.sphinx('html', testroot='bibfiles_multiple_keys')
>     def test_bibfiles_multiple_keys(app, warning) -> None:
>         app.build()
>         assert re.search(
>             "bibliography data error in .*: repeated bibliograhpy entry: test",
>             warning.getvalue()) is not None
>         output = (app.outdir / "index.html").read_text()
> >       assert html_citations(label='1', text='.*Test one.*').search(output)
> E       assert None
> E        +  where None = <built-in method search of re.Pattern object at 0x1f2c360>('\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...ref="_sources/index.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>')
> E        +    where <built-in method search of re.Pattern object at 0x1f2c360> = re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>1)(?:</a>)?</span>(?:<span class="fn-backref">\\(<a ).search
> E        +      where re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>1)(?:</a>)?</span>(?:<span class="fn-backref">\\(<a ) = html_citations(label='1', text='.*Test one.*')
> 
> test/test_bibfiles.py:123: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/bibfiles_multiple_keys
> # outdir: /tmp/pytest-of-user42/pytest-35/bibfiles_multiple_keys/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibfiles_multiple_keys/test1.bib... parsed 1 entries
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibfiles_multiple_keys/test2.bib... parsed 0 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded, 1 warning.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/bibfiles_multiple_keys/_build/html.
> 
> # warning: 
> WARNING: bibliography data error in /tmp/pytest-of-user42/pytest-35/bibfiles_multiple_keys/test2.bib: repeated bibliograhpy entry: test
> 
> _______________________ test_bibliography_style_default ________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edf503310>
> 
>     @pytest.mark.sphinx('html', testroot='bibliography_style_default')
>     def test_bibliography_style_default(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text()
>         # ensure Man09 is cited with plain style and not with alpha style
> >       assert citation_refs(output) == citations(output) == {"1"}
> E       AssertionError: assert {'1'} == set()
> E         Extra items in the left set:
> E         '1'
> E         Use -v to get the full diff
> 
> test/test_bibliography.py:53: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/bibliography_style_default
> # outdir: /tmp/pytest-of-user42/pytest-35/bibliography_style_default/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibliography_style_default/test.bib... parsed 1 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/bibliography_style_default/_build/html.
> 
> # warning: 
> 
> _______________________ test_bibliography_style_label_1 ________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edf482c10>
> 
>     @pytest.mark.sphinx('html', testroot='bibliography_style_label_1')
>     def test_bibliography_style_label_1(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text()
>         # the custom style uses keys as labels
>         # citations
> >       assert len(html_citations(
>             label='myfancybibtexkey').findall(output)) == 1
> E       assert 0 == 1
> E        +  where 0 = len([])
> E        +    where [] = <built-in method findall of re.Pattern object at 0x1fa4f20>('\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...ref="_sources/index.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>')
> E        +      where <built-in method findall of re.Pattern object at 0x1fa4f20> = re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>myfancybibtexkey)(?:</a>)?</span>(?:<span class="fn-).findall
> E        +        where re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>myfancybibtexkey)(?:</a>)?</span>(?:<span class="fn-) = html_citations(label='myfancybibtexkey')
> 
> test/test_bibliography.py:63: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/bibliography_style_label_1
> # outdir: /tmp/pytest-of-user42/pytest-35/bibliography_style_label_1/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibliography_style_label_1/test.bib... parsed 2 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/bibliography_style_label_1/_build/html.
> 
> # warning: 
> 
> _________________________ test_bibliography_key_prefix _________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edf08b3a0>
> 
>     @pytest.mark.sphinx('html', testroot='bibliography_key_prefix')
>     def test_bibliography_key_prefix(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "doc0.html").read_text()
> >       assert citations(output) == citation_refs(output) == {'AMan09', 'AEve03'}
> E       AssertionError: assert set() == {'AEve03', 'AMan09'}
> E         Extra items in the right set:
> E         'AMan09'
> E         'AEve03'
> E         Use -v to get the full diff
> 
> test/test_bibliography.py:104: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/bibliography_key_prefix
> # outdir: /tmp/pytest-of-user42/pytest-35/bibliography_key_prefix/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibliography_key_prefix/test.bib... parsed 2 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 3 source files that are out of date
> updating environment: [new config] 3 added, 0 changed, 0 removed
> reading sources... [ 33%] doc0                                                 
> reading sources... [ 66%] doc1                                                 
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [ 33%] doc0                                                  
> writing output... [ 66%] doc1                                                  
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/bibliography_key_prefix/_build/html.
> 
> # warning: 
> 
> _______________________ test_bibliography_label_prefix_1 _______________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edf031a60>
> 
>     @pytest.mark.sphinx('html', testroot='bibliography_label_prefix_1')
>     def test_bibliography_label_prefix_1(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "doc1.html").read_text()
> >       assert citations(output) == citation_refs(output) == {'A1'}
> E       AssertionError: assert set() == {'A1'}
> E         Extra items in the right set:
> E         'A1'
> E         Use -v to get the full diff
> 
> test/test_bibliography.py:114: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/bibliography_label_prefix_1
> # outdir: /tmp/pytest-of-user42/pytest-35/bibliography_label_prefix_1/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibliography_label_prefix_1/test1.bib... parsed 1 entries
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibliography_label_prefix_1/test2.bib... parsed 1 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 3 source files that are out of date
> updating environment: [new config] 3 added, 0 changed, 0 removed
> reading sources... [ 33%] doc1                                                 
> reading sources... [ 66%] doc2                                                 
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [ 33%] doc1                                                  
> writing output... [ 66%] doc2                                                  
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/bibliography_label_prefix_1/_build/html.
> 
> # warning: 
> 
> _______________________ test_bibliography_label_prefix_2 _______________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edf0343a0>
> 
>     @pytest.mark.sphinx('html', testroot='bibliography_label_prefix_2')
>     def test_bibliography_label_prefix_2(app, warning) -> None:
>         doc1_refs = {'AFM12', 'ABlu83', 'AGIH02', 'AWS14'}
>         doc1_cites = {'ABlu83', 'AFM12', 'AGIH02', 'AWS14'}
>         doc2_refs = {'BShi13'}
>         doc2_cites = {'BShi13'}
>         sum_refs = {'CMcMahonKM10', 'CRMM11', 'CRM09', 'CMM03', 'CHdJMD13',
>                     'AFM12'}
>         sum_cites = {'CMcMahonKM10', 'CRMM11', 'CRM09', 'CMM03', 'CHdJMD13'}
>         app.build()
>         assert not warning.getvalue()
>         output1 = (app.outdir / "doc1.html").read_text()
>         # use <= instead of == as there are some extra reference nodes
>         assert doc1_refs <= citation_refs(output1)
> >       assert doc1_cites == citations(output1)
> E       AssertionError: assert {'ABlu83', 'A...H02', 'AWS14'} == set()
> E         Extra items in the left set:
> E         'ABlu83'
> E         'AGIH02'
> E         'AFM12'
> E         'AWS14'
> E         Use -v to get the full diff
> 
> test/test_bibliography.py:133: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/bibliography_label_prefix_2
> # outdir: /tmp/pytest-of-user42/pytest-35/bibliography_label_prefix_2/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibliography_label_prefix_2/refs.bib... parsed 11 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 4 source files that are out of date
> updating environment: [new config] 4 added, 0 changed, 0 removed
> reading sources... [ 25%] doc1                                                 
> reading sources... [ 50%] doc2                                                 
> reading sources... [ 75%] index                                                
> reading sources... [100%] summary                                              
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [ 25%] doc1                                                  
> writing output... [ 50%] doc2                                                  
> writing output... [ 75%] index                                                 
> writing output... [100%] summary                                               
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/bibliography_label_prefix_2/_build/html.
> 
> # warning: 
> 
> _______________________ test_bibliography_order_unsorted _______________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edff5e820>
> 
>     @pytest.mark.sphinx('html', testroot='bibliography_order_unsorted')
>     def test_bibliography_order_unsorted(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text()
> >       assert re.search(
>             '<dd>.*Test 1.*</dd>.*<dd>.*Test 2.*</dd>',
>             output, re.DOTALL)
> E       assert None
> E        +  where None = <function search at 0x7f9ee1efc310>('<dd>.*Test 1.*</dd>.*<dd>.*Test 2.*</dd>', '\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...ref="_sources/index.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>', re.DOTALL)
> E        +    where <function search at 0x7f9ee1efc310> = re.search
> E        +    and   re.DOTALL = re.DOTALL
> 
> test/test_bibliography.py:155: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/bibliography_order_unsorted
> # outdir: /tmp/pytest-of-user42/pytest-35/bibliography_order_unsorted/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibliography_order_unsorted/test.bib... parsed 2 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/bibliography_order_unsorted/_build/html.
> 
> # warning: 
> 
> _________________________ test_bibliography_multi_foot _________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edf58c820>
> 
>     @pytest.mark.sphinx('html', testroot='bibliography_multi_foot')
>     def test_bibliography_multi_foot(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text(encoding='utf-8')
>         assert output.count('<p class="rubric"') == 3
> >       assert len(re.findall(
>             html_footnotes(id_="footcite-2009-mandel"), output)) == 1
> E       assert 0 == 1
> E        +  where 0 = len([])
> E        +    where [] = <function findall at 0x7f9ee1efc550>(re.compile('<dt class="label" id="(?P<id_>footcite-2009-mandel)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>\\d+)(?:</a>)?</span>(?:<span class="fn-backref"), '\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...ref="_sources/index.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>')
> E        +      where <function findall at 0x7f9ee1efc550> = re.findall
> E        +      and   re.compile('<dt class="label" id="(?P<id_>footcite-2009-mandel)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>\\d+)(?:</a>)?</span>(?:<span class="fn-backref") = html_footnotes(id_='footcite-2009-mandel')
> 
> test/test_bibliography.py:167: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/bibliography_multi_foot
> # outdir: /tmp/pytest-of-user42/pytest-35/bibliography_multi_foot/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibliography_multi_foot/test.bib... parsed 3 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/bibliography_multi_foot/_build/html.
> 
> # warning: 
> 
> __________________________ test_bibliography_content ___________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edf282e50>
> 
>     @pytest.mark.sphinx('html', testroot='bibliography_content')
>     def test_bibliography_content(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output1 = (app.outdir / "doc1.html").read_text()
>         output2 = (app.outdir / "doc2.html").read_text()
>         output3 = (app.outdir / "doc3.html").read_text()
>         assert citation_refs(output1) == {'One', 'Two'}
> >       assert citations(output1) == {'One', 'Two', 'Thr'}
> E       AssertionError: assert set() == {'One', 'Thr', 'Two'}
> E         Extra items in the right set:
> E         'One'
> E         'Thr'
> E         'Two'
> E         Use -v to get the full diff
> 
> test/test_bibliography.py:195: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/bibliography_content
> # outdir: /tmp/pytest-of-user42/pytest-35/bibliography_content/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibliography_content/test.bib... parsed 11 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 4 source files that are out of date
> updating environment: [new config] 4 added, 0 changed, 0 removed
> reading sources... [ 25%] doc1                                                 
> reading sources... [ 50%] doc2                                                 
> reading sources... [ 75%] doc3                                                 
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [ 25%] doc1                                                  
> writing output... [ 50%] doc2                                                  
> writing output... [ 75%] doc3                                                  
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/bibliography_content/_build/html.
> 
> # warning: 
> 
> ____________________________ test_bibliography_url _____________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edf104a60>
> 
>     @pytest.mark.sphinx('html', testroot='bibliography_url')
>     def test_bibliography_url(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text(encoding='utf-8')
>         match1 = html_citations(label='Een').search(output)
>         match2 = html_citations(label='Twe').search(output)
>         match3 = html_citations(label='Dri').search(output)
>         match4 = html_citations(label='Vie').search(output)
> >       assert match1 is not None
> E       assert None is not None
> 
> test/test_bibliography.py:221: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/bibliography_url
> # outdir: /tmp/pytest-of-user42/pytest-35/bibliography_url/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibliography_url/test.bib... parsed 4 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/bibliography_url/_build/html.
> 
> # warning: 
> 
> _________________________ test_bibliography_custom_ids _________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edf2824c0>
> 
>     @pytest.mark.sphinx('html', testroot='bibliography_custom_ids')
>     def test_bibliography_custom_ids(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text(encoding='utf-8')
>         assert '<p id="bibliography-id-1">' in output
>         assert '<p id="bibliography-id-2">' in output
>         assert '<p id="footbibliography-id-1">' in output
>         assert '<p id="footbibliography-id-2">' in output
>         match1 = html_citations(text='.*Evensen.*').search(output)
>         match2 = html_citations(text='.*Mandel.*').search(output)
>         match3 = html_citations(text='.*Lorenc.*').search(output)
> >       assert match1 is not None
> E       assert None is not None
> 
> test/test_bibliography.py:243: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/bibliography_custom_ids
> # outdir: /tmp/pytest-of-user42/pytest-35/bibliography_custom_ids/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibliography_custom_ids/test.bib... parsed 3 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/bibliography_custom_ids/_build/html.
> 
> # warning: 
> 
> _________________________ test_citation_multiple_keys __________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edf39bc10>
> 
>     @pytest.mark.sphinx('html', testroot='citation_multiple_keys')
>     def test_citation_multiple_keys(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text()
>         cits = {match.group('label')
>                 for match in html_citations().finditer(output)}
>         citrefs = {match.group('label')
>                    for match in html_citation_refs().finditer(output)}
> >       assert {"App", "Bra"} == cits == citrefs
> E       AssertionError: assert {'App', 'Bra'} == set()
> E         Extra items in the left set:
> E         'App'
> E         'Bra'
> E         Use -v to get the full diff
> 
> test/test_citation.py:47: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/citation_multiple_keys
> # outdir: /tmp/pytest-of-user42/pytest-35/citation_multiple_keys/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/citation_multiple_keys/refs.bib... parsed 2 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/citation_multiple_keys/_build/html.
> 
> # warning: 
> 
> ____________________________ test_citation_any_role ____________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edf0a3af0>
> 
>     @pytest.mark.sphinx('html', testroot='citation_any_role')
>     def test_citation_any_role(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text()
>         cits = {match.group('label')
>                 for match in html_citations().finditer(output)}
>         citrefs = {match.group('label')
>                    for match in html_citation_refs().finditer(output)}
> >       assert {"App", "Bra"} == cits == citrefs
> E       AssertionError: assert {'App', 'Bra'} == set()
> E         Extra items in the left set:
> E         'App'
> E         'Bra'
> E         Use -v to get the full diff
> 
> test/test_citation.py:59: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/citation_any_role
> # outdir: /tmp/pytest-of-user42/pytest-35/citation_any_role/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/citation_any_role/refs.bib... parsed 2 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/citation_any_role/_build/html.
> 
> # warning: 
> 
> _____________________________ test_duplicate_label _____________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edf031ee0>
> 
>     @pytest.mark.sphinx('html', testroot='duplicate_label')
>     def test_duplicate_label(app, warning) -> None:
>         # see github issue 14
>         app.build()
>         assert 'duplicate label "1" for keys "Test" and "Test2"' \
>                in warning.getvalue()
>         output = (app.outdir / "doc1.html").read_text()
>         output2 = (app.outdir / "doc2.html").read_text()
> >       assert html_citations(label="1").search(output)
> E       assert None
> E        +  where None = <built-in method search of re.Pattern object at 0x1f9b9f0>('\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...href="_sources/doc1.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>')
> E        +    where <built-in method search of re.Pattern object at 0x1f9b9f0> = re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>1)(?:</a>)?</span>(?:<span class="fn-backref">\\(<a ).search
> E        +      where re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>1)(?:</a>)?</span>(?:<span class="fn-backref">\\(<a ) = html_citations(label='1')
> 
> test/test_duplicate.py:15: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/duplicate_label
> # outdir: /tmp/pytest-of-user42/pytest-35/duplicate_label/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/duplicate_label/test1.bib... parsed 1 entries
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/duplicate_label/test2.bib... parsed 1 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 3 source files that are out of date
> updating environment: [new config] 3 added, 0 changed, 0 removed
> reading sources... [ 33%] doc1                                                 
> reading sources... [ 66%] doc2                                                 
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [ 33%] doc1                                                  
> writing output... [ 66%] doc2                                                  
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded, 1 warning.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/duplicate_label/_build/html.
> 
> # warning: 
> /tmp/pytest-of-user42/pytest-35/duplicate_label/doc2.rst:4: WARNING: duplicate label "1" for keys "Test" and "Test2"
> 
> ___________________________ test_duplicate_citation ____________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edef08940>
> 
>     @pytest.mark.sphinx('html', testroot='duplicate_citation')
>     def test_duplicate_citation(app, warning) -> None:
>         app.build()
>         warning.seek(0)
>         warnings = list(warning.readlines())
>         assert len(warnings) == 1
>         assert 'duplicate citation for key "Test"' in warnings[0]
>         # assure distinct citation ids
>         output = (app.outdir / "index.html").read_text()
>         ids = [match.group('id_')
>                for match in html_citations().finditer(output)]
> >       assert len(ids) == 2  # just to check ids are found
> E       assert 0 == 2
> E        +  where 0 = len([])
> 
> test/test_duplicate.py:30: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/duplicate_citation
> # outdir: /tmp/pytest-of-user42/pytest-35/duplicate_citation/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/duplicate_citation/test.bib... parsed 1 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded, 1 warning.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/duplicate_citation/_build/html.
> 
> # warning: 
> /tmp/pytest-of-user42/pytest-35/duplicate_citation/index.rst:4: WARNING: duplicate citation for key "Test"
> 
> ___________________ test_duplicate_nearly_identical_entries ____________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edf191790>
> 
>     @pytest.mark.sphinx('html', testroot='duplicate_nearly_identical_entries')
>     def test_duplicate_nearly_identical_entries(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text()
>         cits = list(html_citations().finditer(output))
>         cit_refs = list(html_citation_refs().finditer(output))
> >       assert len(cits) == len(cit_refs) == 2
> E       assert 0 == 2
> E        +  where 0 = len([])
> E        +  and   2 = len([<re.Match object; span=(1292, 1381), match='<a class="reference internal" href="#id4" title=">, <re.Match object; span=(1430, 1519), match='<a class="reference internal" href="#id5" title=">])
> 
> test/test_duplicate.py:41: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/duplicate_nearly_identical_entries
> # outdir: /tmp/pytest-of-user42/pytest-35/duplicate_nearly_identical_entries/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/duplicate_nearly_identical_entries/test.bib... parsed 2 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/duplicate_nearly_identical_entries/_build/html.
> 
> # warning: 
> 
> ____________________ test_duplicate_nearly_identical_keys_1 ____________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edf282ee0>
> 
>     @pytest.mark.sphinx(
>         'html', testroot='duplicate_nearly_identical_keys', freshenv=True)
>     def test_duplicate_nearly_identical_keys_1(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text()
>         # assure both citations and citation references are present
>         assert html_citation_refs(label='Smi').search(output)
>         assert html_citation_refs(label='Pop').search(output)
>         assert html_citation_refs(label='Ein').search(output)
> >       assert html_citations(label='Smi').search(output)
> E       assert None
> E        +  where None = <built-in method search of re.Pattern object at 0x208dec0>('\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...ref="_sources/index.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>')
> E        +    where <built-in method search of re.Pattern object at 0x208dec0> = re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>Smi)(?:</a>)?</span>(?:<span class="fn-backref">\\(<).search
> E        +      where re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>Smi)(?:</a>)?</span>(?:<span class="fn-backref">\\(<) = html_citations(label='Smi')
> 
> test/test_duplicate.py:57: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/duplicate_nearly_identical_keys
> # outdir: /tmp/pytest-of-user42/pytest-35/duplicate_nearly_identical_keys/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/duplicate_nearly_identical_keys/test.bib... parsed 3 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/duplicate_nearly_identical_keys/_build/html.
> 
> # warning: 
> 
> ____________________ test_duplicate_nearly_identical_keys_2 ____________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edf104160>
> 
>     @pytest.mark.sphinx(
>         'html', testroot='duplicate_nearly_identical_keys', freshenv=True,
>         confoverrides={"bibtex_cite_id": "cite-{bibliography_count}-{key}"})
>     def test_duplicate_nearly_identical_keys_2(app, warning) -> None:
>         app.build()
>         warning.seek(0)
>         warnings = list(warning.readlines())
>         assert len(warnings) == 2
>         assert "duplicate citation id cite-1-test" in warnings[0]
>         assert "duplicate citation id cite-1-test" in warnings[1]
>         output = (app.outdir / "index.html").read_text()
>         # assure both citations and citation references are present
>         assert html_citation_refs(label='Smi').search(output)
>         assert html_citation_refs(label='Pop').search(output)
>         assert html_citation_refs(label='Ein').search(output)
> >       assert html_citations(label='Smi').search(output)
> E       assert None
> E        +  where None = <built-in method search of re.Pattern object at 0x208dec0>('\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...ref="_sources/index.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>')
> E        +    where <built-in method search of re.Pattern object at 0x208dec0> = re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>Smi)(?:</a>)?</span>(?:<span class="fn-backref">\\(<).search
> E        +      where re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>Smi)(?:</a>)?</span>(?:<span class="fn-backref">\\(<) = html_citations(label='Smi')
> 
> test/test_duplicate.py:85: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/duplicate_nearly_identical_keys
> # outdir: /tmp/pytest-of-user42/pytest-35/duplicate_nearly_identical_keys/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/duplicate_nearly_identical_keys/test.bib... parsed 3 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded, 2 warnings.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/duplicate_nearly_identical_keys/_build/html.
> 
> # warning: 
> /tmp/pytest-of-user42/pytest-35/duplicate_nearly_identical_keys/index.rst:5: WARNING: duplicate citation id cite-1-test
> /tmp/pytest-of-user42/pytest-35/duplicate_nearly_identical_keys/index.rst:5: WARNING: duplicate citation id cite-1-test
> 
> __________________________ test_duplicate_citation_id __________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edef959d0>
> 
>     @pytest.mark.sphinx('html', testroot='duplicate_citation_id')
>     def test_duplicate_citation_id(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text()
>         user_ids = {'id1', 'id2', 'id3'}
>         ids = {match.group('id_')
>                for match in html_citations().finditer(output)}
>         refids = {match.group('refid')
>                   for match in html_citation_refs().finditer(output)}
> >       assert ids == refids
> E       AssertionError: assert set() == {'id6'}
> E         Extra items in the right set:
> E         'id6'
> E         Use -v to get the full diff
> 
> test/test_duplicate.py:110: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/duplicate_citation_id
> # outdir: /tmp/pytest-of-user42/pytest-35/duplicate_citation_id/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/duplicate_citation_id/test.bib... parsed 1 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/duplicate_citation_id/_build/html.
> 
> # warning: 
> 
> ______________________________ test_list_citation ______________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f9edea88790>
> 
>     @pytest.mark.sphinx('html', testroot='list_citation')
>     def test_list_citation(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text()
> >       assert html_citations(label='1', text='.*Akkerdju.*').search(output)
> E       assert None
> E        +  where None = <built-in method search of re.Pattern object at 0x1df18d0>('\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...ref="_sources/index.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>')
> E        +    where <built-in method search of re.Pattern object at 0x1df18d0> = re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>1)(?:</a>)?</span>(?:<span class="fn-backref">\\(<a ).search
> E        +      where re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>1)(?:</a>)?</span>(?:<span class="fn-backref">\\(<a ) = html_citations(label='1', text='.*Akkerdju.*')
> 
> test/test_list.py:11: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-35/list_citation
> # outdir: /tmp/pytest-of-user42/pytest-35/list_citation/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/list_citation/test.bib... parsed 4 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/list_citation/_build/html.
> 
> # warning: 
> 
> =============================== warnings summary ===============================
> ../../../../../../usr/lib/python3/dist-packages/pybtex_docutils/__init__.py:39
>   /usr/lib/python3/dist-packages/pybtex_docutils/__init__.py:39: DeprecationWarning: nodes.Text: initialization argument "rawsource" is ignored and will be removed in Docutils 1.3.
>     'ndash': [docutils.nodes.Text('\u2013', '\u2013')],
> 
> ../../../../../../usr/lib/python3/dist-packages/pybtex_docutils/__init__.py:40
>   /usr/lib/python3/dist-packages/pybtex_docutils/__init__.py:40: DeprecationWarning: nodes.Text: initialization argument "rawsource" is ignored and will be removed in Docutils 1.3.
>     'newblock': [docutils.nodes.Text(' ', ' ')],
> 
> ../../../../../../usr/lib/python3/dist-packages/pybtex_docutils/__init__.py:41
>   /usr/lib/python3/dist-packages/pybtex_docutils/__init__.py:41: DeprecationWarning: nodes.Text: initialization argument "rawsource" is ignored and will be removed in Docutils 1.3.
>     'nbsp': [docutils.nodes.Text('\u00a0', '\u00a0')],
> 
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_autodoc.py: 99 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_backrefs.py: 23 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_bibfiles.py: 45 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_bibliography.py: 380 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_citation.py: 1138 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_debug.py: 22 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_duplicate.py: 58 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_filter.py: 96 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_footcite.py: 124 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_latex.py: 24 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_list.py: 72 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_parallel.py: 288 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_sphinx.py: 197 warnings
>   /usr/lib/python3/dist-packages/pybtex_docutils/__init__.py:61: DeprecationWarning: nodes.Text: initialization argument "rawsource" is ignored and will be removed in Docutils 1.3.
>     return [docutils.nodes.Text(str_, str_)]
> 
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_autodoc.py: 4 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_backrefs.py: 1 warning
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_bibfiles.py: 8 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_bibliography.py: 28 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_citation.py: 15 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_debug.py: 4 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_duplicate.py: 8 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_filter.py: 19 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_footcite.py: 2 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_latex.py: 2 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_list.py: 4 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_parallel.py: 81 warnings
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_sphinx.py: 3 warnings
>   /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/sphinxcontrib/bibtex/transforms.py:58: PendingDeprecationWarning: nodes.Node.traverse() is obsoleted by Node.findall().
>     for bibnode in self.document.traverse(bibliography_node):
> 
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_natbib.py::test_natbib
> .pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/test_natbib.py::test_natbib
>   /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_sphinxcontrib.bibtex/build/test/natbib.py:410: DeprecationWarning: nodes.Text: initialization argument "rawsource" is ignored and will be removed in Docutils 1.3.
>     refnode += nodes.Text(url, url)
> 
> -- Docs: https://docs.pytest.org/en/stable/warnings.html
> =========================== short test summary info ============================
> FAILED test/test_autodoc.py::test_autodoc - assert 0 == 1
> FAILED test/test_backrefs.py::test_backrefs - assert None
> FAILED test/test_bibfiles.py::test_bibfiles_out_of_date - assert None
> FAILED test/test_bibfiles.py::test_bibfiles_multiple_macros - assert None
> FAILED test/test_bibfiles.py::test_bibfiles_multiple_keys - assert None
> FAILED test/test_bibliography.py::test_bibliography_style_default - Assertion...
> FAILED test/test_bibliography.py::test_bibliography_style_label_1 - assert 0 ...
> FAILED test/test_bibliography.py::test_bibliography_key_prefix - AssertionErr...
> FAILED test/test_bibliography.py::test_bibliography_label_prefix_1 - Assertio...
> FAILED test/test_bibliography.py::test_bibliography_label_prefix_2 - Assertio...
> FAILED test/test_bibliography.py::test_bibliography_order_unsorted - assert None
> FAILED test/test_bibliography.py::test_bibliography_multi_foot - assert 0 == 1
> FAILED test/test_bibliography.py::test_bibliography_content - AssertionError:...
> FAILED test/test_bibliography.py::test_bibliography_url - assert None is not ...
> FAILED test/test_bibliography.py::test_bibliography_custom_ids - assert None ...
> FAILED test/test_citation.py::test_citation_multiple_keys - AssertionError: a...
> FAILED test/test_citation.py::test_citation_any_role - AssertionError: assert...
> FAILED test/test_duplicate.py::test_duplicate_label - assert None
> FAILED test/test_duplicate.py::test_duplicate_citation - assert 0 == 2
> FAILED test/test_duplicate.py::test_duplicate_nearly_identical_entries - asse...
> FAILED test/test_duplicate.py::test_duplicate_nearly_identical_keys_1 - asser...
> FAILED test/test_duplicate.py::test_duplicate_nearly_identical_keys_2 - asser...
> FAILED test/test_duplicate.py::test_duplicate_citation_id - AssertionError: a...
> FAILED test/test_list.py::test_list_citation - assert None
> ================ 24 failed, 58 passed, 2750 warnings in 14.12s =================
> E: pybuild pybuild:369: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_sphinxcontrib.bibtex/build; python3.9 -m pytest test
> I: pybuild base:239: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_sphinxcontrib.bibtex/build; python3.10 -m pytest test
> ============================= test session starts ==============================
> platform linux -- Python 3.10.5, pytest-6.2.5, py-1.10.0, pluggy-1.0.0
> rootdir: /<<PKGBUILDDIR>>, configfile: pytest.ini
> collected 82 items
> 
> test/test_autodoc.py F.                                                  [  2%]
> test/test_backrefs.py F                                                  [  3%]
> test/test_bibfiles.py F......FF                                          [ 14%]
> test/test_bibliography.py ...FF...FFFFF.F.FF                             [ 36%]
> test/test_citation.py ..FF.........                                      [ 52%]
> test/test_debug.py ....                                                  [ 57%]
> test/test_duplicate.py FFFFFF                                            [ 64%]
> test/test_filter.py ....                                                 [ 69%]
> test/test_footcite.py ..                                                 [ 71%]
> test/test_latex.py ..                                                    [ 74%]
> test/test_list.py F...                                                   [ 79%]
> test/test_natbib.py ......                                               [ 86%]
> test/test_parallel.py .                                                  [ 87%]
> test/test_plugin.py ...                                                  [ 91%]
> test/test_sphinx.py .                                                    [ 92%]
> test/test_style.py ....                                                  [ 97%]
> test/test_template.py ..                                                 [100%]
> 
> =================================== FAILURES ===================================
> _________________________________ test_autodoc _________________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a71b630a0>
> 
>     @pytest.mark.sphinx('html', testroot='autodoc')
>     def test_autodoc(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "doc_cite.html").read_text()
>         labels = ['One', 'Two', 'Thr', 'Fou', 'Fiv', 'Six', 'Sev', 'Eig', 'Nin',
>                   'Ten', 'Ele']
>         titles = ['Een', 'Twee', 'Drie', 'Vier', 'Vijf', 'Zes', 'Zeven', 'Acht',
>                   'Negen', 'Tien', 'Elf']
>         for label, title in zip(labels, titles):
>             assert len(html_citation_refs(label=label).findall(output)) == 1
> >           assert len(html_citations(label=label).findall(output)) == 1
> E           assert 0 == 1
> E            +  where 0 = len([])
> E            +    where [] = <built-in method findall of re.Pattern object at 0x558027ec1980>('\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...="_sources/doc_cite.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>')
> E            +      where <built-in method findall of re.Pattern object at 0x558027ec1980> = re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>One)(?:</a>)?</span>(?:<span class="fn-backref">\\(<).findall
> E            +        where re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>One)(?:</a>)?</span>(?:<span class="fn-backref">\\(<) = html_citations(label='One')
> 
> test/test_autodoc.py:25: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/autodoc
> # outdir: /tmp/pytest-of-user42/pytest-36/autodoc/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/autodoc/test.bib... parsed 11 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 3 source files that are out of date
> updating environment: [new config] 3 added, 0 changed, 0 removed
> reading sources... [ 33%] doc_cite                                             
> reading sources... [ 66%] doc_footcite                                         
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [ 33%] doc_cite                                              
> writing output... [ 66%] doc_footcite                                          
> writing output... [100%] index                                                 
> 
> generating indices... genindex py-modindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/autodoc/_build/html.
> 
> # warning: 
> 
> ________________________________ test_backrefs _________________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a70de27a0>
> 
>     @pytest.mark.sphinx('html', testroot='backrefs')
>     def test_backrefs(app, warning) -> None:
>         app.build()
>         output = (app.outdir / "index.html").read_text()
>         match = html_citations(text=".*Test zero.*").search(output)
> >       assert match
> E       assert None
> 
> test/test_backrefs.py:12: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/backrefs
> # outdir: /tmp/pytest-of-user42/pytest-36/backrefs/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/backrefs/test.bib... parsed 4 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/backrefs/_build/html.
> 
> # warning: 
> 
> __________________________ test_bibfiles_out_of_date ___________________________
> 
> make_app = <function make_app.<locals>.make at 0x7f7a70e3edd0>
> app_params = app_params(args=['html'], kwargs={'srcdir': path('/tmp/pytest-of-user42/pytest-36/bibfiles_out_of_date')})
> 
>     @pytest.mark.sphinx('html', testroot='bibfiles_out_of_date')
>     def test_bibfiles_out_of_date(make_app, app_params) -> None:
>         args, kwargs = app_params
>         app = make_app(*args, **kwargs)
>         app.build()
>         status = app._status.getvalue()
>         # not found, parsing
>         assert re.search(status_up_to_date, status) is None
>         assert re.search(status_out_of_date, status) is not None
>         assert re.search(status_parsing, status) is not None
>         output = (app.outdir / "index.html").read_text()
> >       assert html_citations(label='1', text='.*Akkerdju.*').search(output)
> E       assert None
> E        +  where None = <built-in method search of re.Pattern object at 0x55802802ad20>('\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...ref="_sources/index.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>')
> E        +    where <built-in method search of re.Pattern object at 0x55802802ad20> = re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>1)(?:</a>)?</span>(?:<span class="fn-backref">\\(<a ).search
> E        +      where re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>1)(?:</a>)?</span>(?:<span class="fn-backref">\\(<a ) = html_citations(label='1', text='.*Akkerdju.*')
> 
> test/test_bibfiles.py:29: AssertionError
> ________________________ test_bibfiles_multiple_macros _________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a70c911b0>
> 
>     @pytest.mark.sphinx('html', testroot='bibfiles_multiple_macros')
>     def test_bibfiles_multiple_macros(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text()
> >       assert html_citations(
>             label='1', text=r'.*Rev\. Mod\. Phys\..*').search(output)
> E       assert None
> E        +  where None = <built-in method search of re.Pattern object at 0x558028096900>('\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...ref="_sources/index.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>')
> E        +    where <built-in method search of re.Pattern object at 0x558028096900> = re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>1)(?:</a>)?</span>(?:<span class="fn-backref">\\(<a ).search
> E        +      where re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>1)(?:</a>)?</span>(?:<span class="fn-backref">\\(<a ) = html_citations(label='1', text='.*Rev\\. Mod\\. Phys\\..*')
> 
> test/test_bibfiles.py:112: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/bibfiles_multiple_macros
> # outdir: /tmp/pytest-of-user42/pytest-36/bibfiles_multiple_macros/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibfiles_multiple_macros/macros.bib... parsed 0 entries
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibfiles_multiple_macros/test.bib... parsed 1 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/bibfiles_multiple_macros/_build/html.
> 
> # warning: 
> 
> _________________________ test_bibfiles_multiple_keys __________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a70c93e20>
> 
>     @pytest.mark.sphinx('html', testroot='bibfiles_multiple_keys')
>     def test_bibfiles_multiple_keys(app, warning) -> None:
>         app.build()
>         assert re.search(
>             "bibliography data error in .*: repeated bibliograhpy entry: test",
>             warning.getvalue()) is not None
>         output = (app.outdir / "index.html").read_text()
> >       assert html_citations(label='1', text='.*Test one.*').search(output)
> E       assert None
> E        +  where None = <built-in method search of re.Pattern object at 0x558028153610>('\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...ref="_sources/index.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>')
> E        +    where <built-in method search of re.Pattern object at 0x558028153610> = re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>1)(?:</a>)?</span>(?:<span class="fn-backref">\\(<a ).search
> E        +      where re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>1)(?:</a>)?</span>(?:<span class="fn-backref">\\(<a ) = html_citations(label='1', text='.*Test one.*')
> 
> test/test_bibfiles.py:123: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/bibfiles_multiple_keys
> # outdir: /tmp/pytest-of-user42/pytest-36/bibfiles_multiple_keys/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibfiles_multiple_keys/test1.bib... parsed 1 entries
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibfiles_multiple_keys/test2.bib... parsed 0 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded, 1 warning.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/bibfiles_multiple_keys/_build/html.
> 
> # warning: 
> WARNING: bibliography data error in /tmp/pytest-of-user42/pytest-36/bibfiles_multiple_keys/test2.bib: repeated bibliograhpy entry: test
> 
> _______________________ test_bibliography_style_default ________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a70de0940>
> 
>     @pytest.mark.sphinx('html', testroot='bibliography_style_default')
>     def test_bibliography_style_default(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text()
>         # ensure Man09 is cited with plain style and not with alpha style
> >       assert citation_refs(output) == citations(output) == {"1"}
> E       AssertionError: assert {'1'} == set()
> E         Extra items in the left set:
> E         '1'
> E         Use -v to get the full diff
> 
> test/test_bibliography.py:53: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/bibliography_style_default
> # outdir: /tmp/pytest-of-user42/pytest-36/bibliography_style_default/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibliography_style_default/test.bib... parsed 1 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/bibliography_style_default/_build/html.
> 
> # warning: 
> 
> _______________________ test_bibliography_style_label_1 ________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a70de1d80>
> 
>     @pytest.mark.sphinx('html', testroot='bibliography_style_label_1')
>     def test_bibliography_style_label_1(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text()
>         # the custom style uses keys as labels
>         # citations
> >       assert len(html_citations(
>             label='myfancybibtexkey').findall(output)) == 1
> E       assert 0 == 1
> E        +  where 0 = len([])
> E        +    where [] = <built-in method findall of re.Pattern object at 0x5580280d9220>('\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...ref="_sources/index.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>')
> E        +      where <built-in method findall of re.Pattern object at 0x5580280d9220> = re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>myfancybibtexkey)(?:</a>)?</span>(?:<span class="fn-).findall
> E        +        where re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>myfancybibtexkey)(?:</a>)?</span>(?:<span class="fn-) = html_citations(label='myfancybibtexkey')
> 
> test/test_bibliography.py:63: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/bibliography_style_label_1
> # outdir: /tmp/pytest-of-user42/pytest-36/bibliography_style_label_1/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibliography_style_label_1/test.bib... parsed 2 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/bibliography_style_label_1/_build/html.
> 
> # warning: 
> 
> _________________________ test_bibliography_key_prefix _________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a70a32950>
> 
>     @pytest.mark.sphinx('html', testroot='bibliography_key_prefix')
>     def test_bibliography_key_prefix(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "doc0.html").read_text()
> >       assert citations(output) == citation_refs(output) == {'AMan09', 'AEve03'}
> E       AssertionError: assert set() == {'AEve03', 'AMan09'}
> E         Extra items in the right set:
> E         'AEve03'
> E         'AMan09'
> E         Use -v to get the full diff
> 
> test/test_bibliography.py:104: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/bibliography_key_prefix
> # outdir: /tmp/pytest-of-user42/pytest-36/bibliography_key_prefix/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibliography_key_prefix/test.bib... parsed 2 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 3 source files that are out of date
> updating environment: [new config] 3 added, 0 changed, 0 removed
> reading sources... [ 33%] doc0                                                 
> reading sources... [ 66%] doc1                                                 
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [ 33%] doc0                                                  
> writing output... [ 66%] doc1                                                  
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/bibliography_key_prefix/_build/html.
> 
> # warning: 
> 
> _______________________ test_bibliography_label_prefix_1 _______________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a70a309d0>
> 
>     @pytest.mark.sphinx('html', testroot='bibliography_label_prefix_1')
>     def test_bibliography_label_prefix_1(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "doc1.html").read_text()
> >       assert citations(output) == citation_refs(output) == {'A1'}
> E       AssertionError: assert set() == {'A1'}
> E         Extra items in the right set:
> E         'A1'
> E         Use -v to get the full diff
> 
> test/test_bibliography.py:114: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/bibliography_label_prefix_1
> # outdir: /tmp/pytest-of-user42/pytest-36/bibliography_label_prefix_1/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibliography_label_prefix_1/test1.bib... parsed 1 entries
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibliography_label_prefix_1/test2.bib... parsed 1 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 3 source files that are out of date
> updating environment: [new config] 3 added, 0 changed, 0 removed
> reading sources... [ 33%] doc1                                                 
> reading sources... [ 66%] doc2                                                 
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [ 33%] doc1                                                  
> writing output... [ 66%] doc2                                                  
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/bibliography_label_prefix_1/_build/html.
> 
> # warning: 
> 
> _______________________ test_bibliography_label_prefix_2 _______________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a70a303a0>
> 
>     @pytest.mark.sphinx('html', testroot='bibliography_label_prefix_2')
>     def test_bibliography_label_prefix_2(app, warning) -> None:
>         doc1_refs = {'AFM12', 'ABlu83', 'AGIH02', 'AWS14'}
>         doc1_cites = {'ABlu83', 'AFM12', 'AGIH02', 'AWS14'}
>         doc2_refs = {'BShi13'}
>         doc2_cites = {'BShi13'}
>         sum_refs = {'CMcMahonKM10', 'CRMM11', 'CRM09', 'CMM03', 'CHdJMD13',
>                     'AFM12'}
>         sum_cites = {'CMcMahonKM10', 'CRMM11', 'CRM09', 'CMM03', 'CHdJMD13'}
>         app.build()
>         assert not warning.getvalue()
>         output1 = (app.outdir / "doc1.html").read_text()
>         # use <= instead of == as there are some extra reference nodes
>         assert doc1_refs <= citation_refs(output1)
> >       assert doc1_cites == citations(output1)
> E       AssertionError: assert {'ABlu83', 'A...H02', 'AWS14'} == set()
> E         Extra items in the left set:
> E         'AWS14'
> E         'AFM12'
> E         'ABlu83'
> E         'AGIH02'
> E         Use -v to get the full diff
> 
> test/test_bibliography.py:133: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/bibliography_label_prefix_2
> # outdir: /tmp/pytest-of-user42/pytest-36/bibliography_label_prefix_2/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibliography_label_prefix_2/refs.bib... parsed 11 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 4 source files that are out of date
> updating environment: [new config] 4 added, 0 changed, 0 removed
> reading sources... [ 25%] doc1                                                 
> reading sources... [ 50%] doc2                                                 
> reading sources... [ 75%] index                                                
> reading sources... [100%] summary                                              
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [ 25%] doc1                                                  
> writing output... [ 50%] doc2                                                  
> writing output... [ 75%] index                                                 
> writing output... [100%] summary                                               
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/bibliography_label_prefix_2/_build/html.
> 
> # warning: 
> 
> _______________________ test_bibliography_order_unsorted _______________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a7194fa30>
> 
>     @pytest.mark.sphinx('html', testroot='bibliography_order_unsorted')
>     def test_bibliography_order_unsorted(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text()
> >       assert re.search(
>             '<dd>.*Test 1.*</dd>.*<dd>.*Test 2.*</dd>',
>             output, re.DOTALL)
> E       assert None
> E        +  where None = <function search at 0x7f7a737ddcf0>('<dd>.*Test 1.*</dd>.*<dd>.*Test 2.*</dd>', '\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...ref="_sources/index.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>', re.DOTALL)
> E        +    where <function search at 0x7f7a737ddcf0> = re.search
> E        +    and   re.DOTALL = re.DOTALL
> 
> test/test_bibliography.py:155: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/bibliography_order_unsorted
> # outdir: /tmp/pytest-of-user42/pytest-36/bibliography_order_unsorted/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibliography_order_unsorted/test.bib... parsed 2 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/bibliography_order_unsorted/_build/html.
> 
> # warning: 
> 
> _________________________ test_bibliography_multi_foot _________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a70eb7f40>
> 
>     @pytest.mark.sphinx('html', testroot='bibliography_multi_foot')
>     def test_bibliography_multi_foot(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text(encoding='utf-8')
>         assert output.count('<p class="rubric"') == 3
> >       assert len(re.findall(
>             html_footnotes(id_="footcite-2009-mandel"), output)) == 1
> E       assert 0 == 1
> E        +  where 0 = len([])
> E        +    where [] = <function findall at 0x7f7a737ddf30>(re.compile('<dt class="label" id="(?P<id_>footcite-2009-mandel)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>\\d+)(?:</a>)?</span>(?:<span class="fn-backref"), '\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...ref="_sources/index.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>')
> E        +      where <function findall at 0x7f7a737ddf30> = re.findall
> E        +      and   re.compile('<dt class="label" id="(?P<id_>footcite-2009-mandel)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>\\d+)(?:</a>)?</span>(?:<span class="fn-backref") = html_footnotes(id_='footcite-2009-mandel')
> 
> test/test_bibliography.py:167: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/bibliography_multi_foot
> # outdir: /tmp/pytest-of-user42/pytest-36/bibliography_multi_foot/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibliography_multi_foot/test.bib... parsed 3 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/bibliography_multi_foot/_build/html.
> 
> # warning: 
> 
> __________________________ test_bibliography_content ___________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a70cc1900>
> 
>     @pytest.mark.sphinx('html', testroot='bibliography_content')
>     def test_bibliography_content(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output1 = (app.outdir / "doc1.html").read_text()
>         output2 = (app.outdir / "doc2.html").read_text()
>         output3 = (app.outdir / "doc3.html").read_text()
>         assert citation_refs(output1) == {'One', 'Two'}
> >       assert citations(output1) == {'One', 'Two', 'Thr'}
> E       AssertionError: assert set() == {'One', 'Thr', 'Two'}
> E         Extra items in the right set:
> E         'One'
> E         'Two'
> E         'Thr'
> E         Use -v to get the full diff
> 
> test/test_bibliography.py:195: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/bibliography_content
> # outdir: /tmp/pytest-of-user42/pytest-36/bibliography_content/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibliography_content/test.bib... parsed 11 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 4 source files that are out of date
> updating environment: [new config] 4 added, 0 changed, 0 removed
> reading sources... [ 25%] doc1                                                 
> reading sources... [ 50%] doc2                                                 
> reading sources... [ 75%] doc3                                                 
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [ 25%] doc1                                                  
> writing output... [ 50%] doc2                                                  
> writing output... [ 75%] doc3                                                  
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/bibliography_content/_build/html.
> 
> # warning: 
> 
> ____________________________ test_bibliography_url _____________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a70bbb400>
> 
>     @pytest.mark.sphinx('html', testroot='bibliography_url')
>     def test_bibliography_url(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text(encoding='utf-8')
>         match1 = html_citations(label='Een').search(output)
>         match2 = html_citations(label='Twe').search(output)
>         match3 = html_citations(label='Dri').search(output)
>         match4 = html_citations(label='Vie').search(output)
> >       assert match1 is not None
> E       assert None is not None
> 
> test/test_bibliography.py:221: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/bibliography_url
> # outdir: /tmp/pytest-of-user42/pytest-36/bibliography_url/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibliography_url/test.bib... parsed 4 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/bibliography_url/_build/html.
> 
> # warning: 
> 
> _________________________ test_bibliography_custom_ids _________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a70de2f80>
> 
>     @pytest.mark.sphinx('html', testroot='bibliography_custom_ids')
>     def test_bibliography_custom_ids(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text(encoding='utf-8')
>         assert '<p id="bibliography-id-1">' in output
>         assert '<p id="bibliography-id-2">' in output
>         assert '<p id="footbibliography-id-1">' in output
>         assert '<p id="footbibliography-id-2">' in output
>         match1 = html_citations(text='.*Evensen.*').search(output)
>         match2 = html_citations(text='.*Mandel.*').search(output)
>         match3 = html_citations(text='.*Lorenc.*').search(output)
> >       assert match1 is not None
> E       assert None is not None
> 
> test/test_bibliography.py:243: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/bibliography_custom_ids
> # outdir: /tmp/pytest-of-user42/pytest-36/bibliography_custom_ids/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibliography_custom_ids/test.bib... parsed 3 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/bibliography_custom_ids/_build/html.
> 
> # warning: 
> 
> _________________________ test_citation_multiple_keys __________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a70d44a60>
> 
>     @pytest.mark.sphinx('html', testroot='citation_multiple_keys')
>     def test_citation_multiple_keys(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text()
>         cits = {match.group('label')
>                 for match in html_citations().finditer(output)}
>         citrefs = {match.group('label')
>                    for match in html_citation_refs().finditer(output)}
> >       assert {"App", "Bra"} == cits == citrefs
> E       AssertionError: assert {'App', 'Bra'} == set()
> E         Extra items in the left set:
> E         'Bra'
> E         'App'
> E         Use -v to get the full diff
> 
> test/test_citation.py:47: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/citation_multiple_keys
> # outdir: /tmp/pytest-of-user42/pytest-36/citation_multiple_keys/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/citation_multiple_keys/refs.bib... parsed 2 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/citation_multiple_keys/_build/html.
> 
> # warning: 
> 
> ____________________________ test_citation_any_role ____________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a70e3e050>
> 
>     @pytest.mark.sphinx('html', testroot='citation_any_role')
>     def test_citation_any_role(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text()
>         cits = {match.group('label')
>                 for match in html_citations().finditer(output)}
>         citrefs = {match.group('label')
>                    for match in html_citation_refs().finditer(output)}
> >       assert {"App", "Bra"} == cits == citrefs
> E       AssertionError: assert {'App', 'Bra'} == set()
> E         Extra items in the left set:
> E         'Bra'
> E         'App'
> E         Use -v to get the full diff
> 
> test/test_citation.py:59: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/citation_any_role
> # outdir: /tmp/pytest-of-user42/pytest-36/citation_any_role/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/citation_any_role/refs.bib... parsed 2 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/citation_any_role/_build/html.
> 
> # warning: 
> 
> _____________________________ test_duplicate_label _____________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a71153e20>
> 
>     @pytest.mark.sphinx('html', testroot='duplicate_label')
>     def test_duplicate_label(app, warning) -> None:
>         # see github issue 14
>         app.build()
>         assert 'duplicate label "1" for keys "Test" and "Test2"' \
>                in warning.getvalue()
>         output = (app.outdir / "doc1.html").read_text()
>         output2 = (app.outdir / "doc2.html").read_text()
> >       assert html_citations(label="1").search(output)
> E       assert None
> E        +  where None = <built-in method search of re.Pattern object at 0x558027ff38f0>('\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...href="_sources/doc1.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>')
> E        +    where <built-in method search of re.Pattern object at 0x558027ff38f0> = re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>1)(?:</a>)?</span>(?:<span class="fn-backref">\\(<a ).search
> E        +      where re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>1)(?:</a>)?</span>(?:<span class="fn-backref">\\(<a ) = html_citations(label='1')
> 
> test/test_duplicate.py:15: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/duplicate_label
> # outdir: /tmp/pytest-of-user42/pytest-36/duplicate_label/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/duplicate_label/test1.bib... parsed 1 entries
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/duplicate_label/test2.bib... parsed 1 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 3 source files that are out of date
> updating environment: [new config] 3 added, 0 changed, 0 removed
> reading sources... [ 33%] doc1                                                 
> reading sources... [ 66%] doc2                                                 
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [ 33%] doc1                                                  
> writing output... [ 66%] doc2                                                  
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded, 1 warning.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/duplicate_label/_build/html.
> 
> # warning: 
> /tmp/pytest-of-user42/pytest-36/duplicate_label/doc2.rst:4: WARNING: duplicate label "1" for keys "Test" and "Test2"
> 
> ___________________________ test_duplicate_citation ____________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a70b7be20>
> 
>     @pytest.mark.sphinx('html', testroot='duplicate_citation')
>     def test_duplicate_citation(app, warning) -> None:
>         app.build()
>         warning.seek(0)
>         warnings = list(warning.readlines())
>         assert len(warnings) == 1
>         assert 'duplicate citation for key "Test"' in warnings[0]
>         # assure distinct citation ids
>         output = (app.outdir / "index.html").read_text()
>         ids = [match.group('id_')
>                for match in html_citations().finditer(output)]
> >       assert len(ids) == 2  # just to check ids are found
> E       assert 0 == 2
> E        +  where 0 = len([])
> 
> test/test_duplicate.py:30: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/duplicate_citation
> # outdir: /tmp/pytest-of-user42/pytest-36/duplicate_citation/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/duplicate_citation/test.bib... parsed 1 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded, 1 warning.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/duplicate_citation/_build/html.
> 
> # warning: 
> /tmp/pytest-of-user42/pytest-36/duplicate_citation/index.rst:4: WARNING: duplicate citation for key "Test"
> 
> ___________________ test_duplicate_nearly_identical_entries ____________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a709055a0>
> 
>     @pytest.mark.sphinx('html', testroot='duplicate_nearly_identical_entries')
>     def test_duplicate_nearly_identical_entries(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text()
>         cits = list(html_citations().finditer(output))
>         cit_refs = list(html_citation_refs().finditer(output))
> >       assert len(cits) == len(cit_refs) == 2
> E       assert 0 == 2
> E        +  where 0 = len([])
> E        +  and   2 = len([<re.Match object; span=(1292, 1381), match='<a class="reference internal" href="#id4" title=">, <re.Match object; span=(1430, 1519), match='<a class="reference internal" href="#id5" title=">])
> 
> test/test_duplicate.py:41: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/duplicate_nearly_identical_entries
> # outdir: /tmp/pytest-of-user42/pytest-36/duplicate_nearly_identical_entries/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/duplicate_nearly_identical_entries/test.bib... parsed 2 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/duplicate_nearly_identical_entries/_build/html.
> 
> # warning: 
> 
> ____________________ test_duplicate_nearly_identical_keys_1 ____________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a70d475b0>
> 
>     @pytest.mark.sphinx(
>         'html', testroot='duplicate_nearly_identical_keys', freshenv=True)
>     def test_duplicate_nearly_identical_keys_1(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text()
>         # assure both citations and citation references are present
>         assert html_citation_refs(label='Smi').search(output)
>         assert html_citation_refs(label='Pop').search(output)
>         assert html_citation_refs(label='Ein').search(output)
> >       assert html_citations(label='Smi').search(output)
> E       assert None
> E        +  where None = <built-in method search of re.Pattern object at 0x55802807b720>('\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...ref="_sources/index.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>')
> E        +    where <built-in method search of re.Pattern object at 0x55802807b720> = re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>Smi)(?:</a>)?</span>(?:<span class="fn-backref">\\(<).search
> E        +      where re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>Smi)(?:</a>)?</span>(?:<span class="fn-backref">\\(<) = html_citations(label='Smi')
> 
> test/test_duplicate.py:57: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/duplicate_nearly_identical_keys
> # outdir: /tmp/pytest-of-user42/pytest-36/duplicate_nearly_identical_keys/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/duplicate_nearly_identical_keys/test.bib... parsed 3 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/duplicate_nearly_identical_keys/_build/html.
> 
> # warning: 
> 
> ____________________ test_duplicate_nearly_identical_keys_2 ____________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a70e3e710>
> 
>     @pytest.mark.sphinx(
>         'html', testroot='duplicate_nearly_identical_keys', freshenv=True,
>         confoverrides={"bibtex_cite_id": "cite-{bibliography_count}-{key}"})
>     def test_duplicate_nearly_identical_keys_2(app, warning) -> None:
>         app.build()
>         warning.seek(0)
>         warnings = list(warning.readlines())
>         assert len(warnings) == 2
>         assert "duplicate citation id cite-1-test" in warnings[0]
>         assert "duplicate citation id cite-1-test" in warnings[1]
>         output = (app.outdir / "index.html").read_text()
>         # assure both citations and citation references are present
>         assert html_citation_refs(label='Smi').search(output)
>         assert html_citation_refs(label='Pop').search(output)
>         assert html_citation_refs(label='Ein').search(output)
> >       assert html_citations(label='Smi').search(output)
> E       assert None
> E        +  where None = <built-in method search of re.Pattern object at 0x55802807b720>('\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...ref="_sources/index.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>')
> E        +    where <built-in method search of re.Pattern object at 0x55802807b720> = re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>Smi)(?:</a>)?</span>(?:<span class="fn-backref">\\(<).search
> E        +      where re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>Smi)(?:</a>)?</span>(?:<span class="fn-backref">\\(<) = html_citations(label='Smi')
> 
> test/test_duplicate.py:85: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/duplicate_nearly_identical_keys
> # outdir: /tmp/pytest-of-user42/pytest-36/duplicate_nearly_identical_keys/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/duplicate_nearly_identical_keys/test.bib... parsed 3 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded, 2 warnings.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/duplicate_nearly_identical_keys/_build/html.
> 
> # warning: 
> /tmp/pytest-of-user42/pytest-36/duplicate_nearly_identical_keys/index.rst:5: WARNING: duplicate citation id cite-1-test
> /tmp/pytest-of-user42/pytest-36/duplicate_nearly_identical_keys/index.rst:5: WARNING: duplicate citation id cite-1-test
> 
> __________________________ test_duplicate_citation_id __________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a70bb91b0>
> 
>     @pytest.mark.sphinx('html', testroot='duplicate_citation_id')
>     def test_duplicate_citation_id(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text()
>         user_ids = {'id1', 'id2', 'id3'}
>         ids = {match.group('id_')
>                for match in html_citations().finditer(output)}
>         refids = {match.group('refid')
>                   for match in html_citation_refs().finditer(output)}
> >       assert ids == refids
> E       AssertionError: assert set() == {'id6'}
> E         Extra items in the right set:
> E         'id6'
> E         Use -v to get the full diff
> 
> test/test_duplicate.py:110: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/duplicate_citation_id
> # outdir: /tmp/pytest-of-user42/pytest-36/duplicate_citation_id/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/duplicate_citation_id/test.bib... parsed 1 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/duplicate_citation_id/_build/html.
> 
> # warning: 
> 
> ______________________________ test_list_citation ______________________________
> 
> app = <SphinxTestApp buildername='html'>
> warning = <_io.StringIO object at 0x7f7a70b78280>
> 
>     @pytest.mark.sphinx('html', testroot='list_citation')
>     def test_list_citation(app, warning) -> None:
>         app.build()
>         assert not warning.getvalue()
>         output = (app.outdir / "index.html").read_text()
> >       assert html_citations(label='1', text='.*Akkerdju.*').search(output)
> E       assert None
> E        +  where None = <built-in method search of re.Pattern object at 0x55802802ad20>('\n<!DOCTYPE html>\n\n<html lang="en">\n  <head>\n    <meta charset="utf-8" />\n    <meta name="viewport" content="wid...ref="_sources/index.rst.txt"\n          rel="nofollow">Page source</a>\n    </div>\n\n    \n\n    \n  </body>\n</html>')
> E        +    where <built-in method search of re.Pattern object at 0x55802802ad20> = re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>1)(?:</a>)?</span>(?:<span class="fn-backref">\\(<a ).search
> E        +      where re.compile('<dt class="label" id="(?P<id_>[a-z][-?a-z0-9]*)"><span class="brackets">(?:<a class="fn-backref" href="#(?P<backref>[a-z][-?a-z0-9]*)">)?(?P<label>1)(?:</a>)?</span>(?:<span class="fn-backref">\\(<a ) = html_citations(label='1', text='.*Akkerdju.*')
> 
> test/test_list.py:11: AssertionError
> --------------------------- Captured stdout teardown ---------------------------
> # testroot: root
> # builder: html
> # srcdir: /tmp/pytest-of-user42/pytest-36/list_citation
> # outdir: /tmp/pytest-of-user42/pytest-36/list_citation/_build/html
> # status: 
> Running Sphinx v5.0.2
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/list_citation/test.bib... parsed 4 entries
> building [mo]: targets for 0 po files that are out of date
> building [html]: targets for 1 source files that are out of date
> updating environment: [new config] 1 added, 0 changed, 0 removed
> reading sources... [100%] index                                                
> 
> looking for now-outdated files... none found
> pickling environment... done
> checking consistency... done
> preparing documents... done
> writing output... [100%] index                                                 
> 
> generating indices... genindex done
> writing additional pages... search done
> copying static files... done
> copying extra files... done
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/list_citation/_build/html.
> 
> # warning: 
> 
> =============================== warnings summary ===============================
> ../../../../../../usr/lib/python3/dist-packages/pybtex_docutils/__init__.py:39
>   /usr/lib/python3/dist-packages/pybtex_docutils/__init__.py:39: DeprecationWarning: nodes.Text: initialization argument "rawsource" is ignored and will be removed in Docutils 1.3.
>     'ndash': [docutils.nodes.Text('\u2013', '\u2013')],
> 
> ../../../../../../usr/lib/python3/dist-packages/pybtex_docutils/__init__.py:40
>   /usr/lib/python3/dist-packages/pybtex_docutils/__init__.py:40: DeprecationWarning: nodes.Text: initialization argument "rawsource" is ignored and will be removed in Docutils 1.3.
>     'newblock': [docutils.nodes.Text(' ', ' ')],
> 
> ../../../../../../usr/lib/python3/dist-packages/pybtex_docutils/__init__.py:41
>   /usr/lib/python3/dist-packages/pybtex_docutils/__init__.py:41: DeprecationWarning: nodes.Text: initialization argument "rawsource" is ignored and will be removed in Docutils 1.3.
>     'nbsp': [docutils.nodes.Text('\u00a0', '\u00a0')],
> 
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_autodoc.py: 99 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_backrefs.py: 23 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_bibfiles.py: 45 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_bibliography.py: 380 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_citation.py: 1138 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_debug.py: 22 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_duplicate.py: 58 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_filter.py: 96 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_footcite.py: 124 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_latex.py: 24 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_list.py: 72 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_parallel.py: 288 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_sphinx.py: 197 warnings
>   /usr/lib/python3/dist-packages/pybtex_docutils/__init__.py:61: DeprecationWarning: nodes.Text: initialization argument "rawsource" is ignored and will be removed in Docutils 1.3.
>     return [docutils.nodes.Text(str_, str_)]
> 
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_autodoc.py: 4 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_backrefs.py: 1 warning
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_bibfiles.py: 8 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_bibliography.py: 28 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_citation.py: 15 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_debug.py: 4 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_duplicate.py: 8 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_filter.py: 19 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_footcite.py: 2 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_latex.py: 2 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_list.py: 4 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_parallel.py: 81 warnings
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_sphinx.py: 3 warnings
>   /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/sphinxcontrib/bibtex/transforms.py:58: PendingDeprecationWarning: nodes.Node.traverse() is obsoleted by Node.findall().
>     for bibnode in self.document.traverse(bibliography_node):
> 
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_natbib.py::test_natbib
> .pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/test_natbib.py::test_natbib
>   /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_sphinxcontrib.bibtex/build/test/natbib.py:410: DeprecationWarning: nodes.Text: initialization argument "rawsource" is ignored and will be removed in Docutils 1.3.
>     refnode += nodes.Text(url, url)
> 
> -- Docs: https://docs.pytest.org/en/stable/warnings.html
> =========================== short test summary info ============================
> FAILED test/test_autodoc.py::test_autodoc - assert 0 == 1
> FAILED test/test_backrefs.py::test_backrefs - assert None
> FAILED test/test_bibfiles.py::test_bibfiles_out_of_date - assert None
> FAILED test/test_bibfiles.py::test_bibfiles_multiple_macros - assert None
> FAILED test/test_bibfiles.py::test_bibfiles_multiple_keys - assert None
> FAILED test/test_bibliography.py::test_bibliography_style_default - Assertion...
> FAILED test/test_bibliography.py::test_bibliography_style_label_1 - assert 0 ...
> FAILED test/test_bibliography.py::test_bibliography_key_prefix - AssertionErr...
> FAILED test/test_bibliography.py::test_bibliography_label_prefix_1 - Assertio...
> FAILED test/test_bibliography.py::test_bibliography_label_prefix_2 - Assertio...
> FAILED test/test_bibliography.py::test_bibliography_order_unsorted - assert None
> FAILED test/test_bibliography.py::test_bibliography_multi_foot - assert 0 == 1
> FAILED test/test_bibliography.py::test_bibliography_content - AssertionError:...
> FAILED test/test_bibliography.py::test_bibliography_url - assert None is not ...
> FAILED test/test_bibliography.py::test_bibliography_custom_ids - assert None ...
> FAILED test/test_citation.py::test_citation_multiple_keys - AssertionError: a...
> FAILED test/test_citation.py::test_citation_any_role - AssertionError: assert...
> FAILED test/test_duplicate.py::test_duplicate_label - assert None
> FAILED test/test_duplicate.py::test_duplicate_citation - assert 0 == 2
> FAILED test/test_duplicate.py::test_duplicate_nearly_identical_entries - asse...
> FAILED test/test_duplicate.py::test_duplicate_nearly_identical_keys_1 - asser...
> FAILED test/test_duplicate.py::test_duplicate_nearly_identical_keys_2 - asser...
> FAILED test/test_duplicate.py::test_duplicate_citation_id - AssertionError: a...
> FAILED test/test_list.py::test_list_citation - assert None
> ================ 24 failed, 58 passed, 2750 warnings in 13.07s =================
> E: pybuild pybuild:369: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_sphinxcontrib.bibtex/build; python3.10 -m pytest test
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.9 3.10" returned exit code 13


The full build log is available from:
http://qa-logs.debian.net/2022/06/23/sphinxcontrib-bibtex_2.4.1-3_unstable_sphinx-exp.log

Please see [1] for Sphinx changelog and [2] for Docutils changelog.

Also see [3] for the list of deprecated/removed APIs in Sphinx and possible
alternatives to them.

In case you have questions, please Cc sphinx at packages.debian.org on reply.

[1]: https://www.sphinx-doc.org/en/master/changes.html
[2]: https://repo.or.cz/docutils.git/blob/refs/tags/docutils-0.18.1:/RELEASE-NOTES.txt
[3]: https://www.sphinx-doc.org/en/master/extdev/deprecated.html#dev-deprecated-apis

All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=sphinx5.0;users=mitya57@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=sphinx5.0&fusertaguser=mitya57@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results

If you reassign this bug to another package, please marking it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects



More information about the debian-science-maintainers mailing list