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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/autodoc/test.bib... parsed 11 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 3 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 3 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[ 33%] [35mdoc_cite[39;49;00m
> [01mreading sources... [39;49;00m[ 66%] [35mdoc_footcite[39;49;00m
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[ 33%] [32mdoc_cite[39;49;00m
> [01mwriting output... [39;49;00m[ 66%] [32mdoc_footcite[39;49;00m
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex py-modindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/backrefs/test.bib... parsed 4 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> 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
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> 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
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded, 1 warning.[39;49;00m
>
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/bibfiles_multiple_keys/_build/html.
>
> # warning:
> [91mWARNING: bibliography data error in /tmp/pytest-of-user42/pytest-35/bibfiles_multiple_keys/test2.bib: repeated bibliograhpy entry: test[39;49;00m
>
> _______________________ 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibliography_style_default/test.bib... parsed 1 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibliography_style_label_1/test.bib... parsed 2 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibliography_key_prefix/test.bib... parsed 2 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 3 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 3 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[ 33%] [35mdoc0[39;49;00m
> [01mreading sources... [39;49;00m[ 66%] [35mdoc1[39;49;00m
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[ 33%] [32mdoc0[39;49;00m
> [01mwriting output... [39;49;00m[ 66%] [32mdoc1[39;49;00m
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> 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
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 3 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 3 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[ 33%] [35mdoc1[39;49;00m
> [01mreading sources... [39;49;00m[ 66%] [35mdoc2[39;49;00m
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[ 33%] [32mdoc1[39;49;00m
> [01mwriting output... [39;49;00m[ 66%] [32mdoc2[39;49;00m
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibliography_label_prefix_2/refs.bib... parsed 11 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 4 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 4 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[ 25%] [35mdoc1[39;49;00m
> [01mreading sources... [39;49;00m[ 50%] [35mdoc2[39;49;00m
> [01mreading sources... [39;49;00m[ 75%] [35mindex[39;49;00m
> [01mreading sources... [39;49;00m[100%] [35msummary[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[ 25%] [32mdoc1[39;49;00m
> [01mwriting output... [39;49;00m[ 50%] [32mdoc2[39;49;00m
> [01mwriting output... [39;49;00m[ 75%] [32mindex[39;49;00m
> [01mwriting output... [39;49;00m[100%] [32msummary[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibliography_order_unsorted/test.bib... parsed 2 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibliography_multi_foot/test.bib... parsed 3 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibliography_content/test.bib... parsed 11 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 4 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 4 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[ 25%] [35mdoc1[39;49;00m
> [01mreading sources... [39;49;00m[ 50%] [35mdoc2[39;49;00m
> [01mreading sources... [39;49;00m[ 75%] [35mdoc3[39;49;00m
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[ 25%] [32mdoc1[39;49;00m
> [01mwriting output... [39;49;00m[ 50%] [32mdoc2[39;49;00m
> [01mwriting output... [39;49;00m[ 75%] [32mdoc3[39;49;00m
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibliography_url/test.bib... parsed 4 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/bibliography_custom_ids/test.bib... parsed 3 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/citation_multiple_keys/refs.bib... parsed 2 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/citation_any_role/refs.bib... parsed 2 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> 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
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 3 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 3 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[ 33%] [35mdoc1[39;49;00m
> [01mreading sources... [39;49;00m[ 66%] [35mdoc2[39;49;00m
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[ 33%] [32mdoc1[39;49;00m
> [01mwriting output... [39;49;00m[ 66%] [32mdoc2[39;49;00m
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded, 1 warning.[39;49;00m
>
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/duplicate_label/_build/html.
>
> # warning:
> [91m/tmp/pytest-of-user42/pytest-35/duplicate_label/doc2.rst:4: WARNING: duplicate label "1" for keys "Test" and "Test2"[39;49;00m
>
> ___________________________ 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/duplicate_citation/test.bib... parsed 1 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded, 1 warning.[39;49;00m
>
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/duplicate_citation/_build/html.
>
> # warning:
> [91m/tmp/pytest-of-user42/pytest-35/duplicate_citation/index.rst:4: WARNING: duplicate citation for key "Test"[39;49;00m
>
> ___________________ 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/duplicate_nearly_identical_entries/test.bib... parsed 2 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/duplicate_nearly_identical_keys/test.bib... parsed 3 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/duplicate_nearly_identical_keys/test.bib... parsed 3 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded, 2 warnings.[39;49;00m
>
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-35/duplicate_nearly_identical_keys/_build/html.
>
> # warning:
> [91m/tmp/pytest-of-user42/pytest-35/duplicate_nearly_identical_keys/index.rst:5: WARNING: duplicate citation id cite-1-test[39;49;00m
> [91m/tmp/pytest-of-user42/pytest-35/duplicate_nearly_identical_keys/index.rst:5: WARNING: duplicate citation id cite-1-test[39;49;00m
>
> __________________________ 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/duplicate_citation_id/test.bib... parsed 1 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-35/list_citation/test.bib... parsed 4 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/autodoc/test.bib... parsed 11 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 3 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 3 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[ 33%] [35mdoc_cite[39;49;00m
> [01mreading sources... [39;49;00m[ 66%] [35mdoc_footcite[39;49;00m
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[ 33%] [32mdoc_cite[39;49;00m
> [01mwriting output... [39;49;00m[ 66%] [32mdoc_footcite[39;49;00m
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex py-modindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/backrefs/test.bib... parsed 4 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> 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
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> 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
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded, 1 warning.[39;49;00m
>
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/bibfiles_multiple_keys/_build/html.
>
> # warning:
> [91mWARNING: bibliography data error in /tmp/pytest-of-user42/pytest-36/bibfiles_multiple_keys/test2.bib: repeated bibliograhpy entry: test[39;49;00m
>
> _______________________ 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibliography_style_default/test.bib... parsed 1 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibliography_style_label_1/test.bib... parsed 2 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibliography_key_prefix/test.bib... parsed 2 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 3 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 3 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[ 33%] [35mdoc0[39;49;00m
> [01mreading sources... [39;49;00m[ 66%] [35mdoc1[39;49;00m
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[ 33%] [32mdoc0[39;49;00m
> [01mwriting output... [39;49;00m[ 66%] [32mdoc1[39;49;00m
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> 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
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 3 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 3 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[ 33%] [35mdoc1[39;49;00m
> [01mreading sources... [39;49;00m[ 66%] [35mdoc2[39;49;00m
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[ 33%] [32mdoc1[39;49;00m
> [01mwriting output... [39;49;00m[ 66%] [32mdoc2[39;49;00m
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibliography_label_prefix_2/refs.bib... parsed 11 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 4 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 4 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[ 25%] [35mdoc1[39;49;00m
> [01mreading sources... [39;49;00m[ 50%] [35mdoc2[39;49;00m
> [01mreading sources... [39;49;00m[ 75%] [35mindex[39;49;00m
> [01mreading sources... [39;49;00m[100%] [35msummary[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[ 25%] [32mdoc1[39;49;00m
> [01mwriting output... [39;49;00m[ 50%] [32mdoc2[39;49;00m
> [01mwriting output... [39;49;00m[ 75%] [32mindex[39;49;00m
> [01mwriting output... [39;49;00m[100%] [32msummary[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibliography_order_unsorted/test.bib... parsed 2 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibliography_multi_foot/test.bib... parsed 3 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibliography_content/test.bib... parsed 11 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 4 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 4 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[ 25%] [35mdoc1[39;49;00m
> [01mreading sources... [39;49;00m[ 50%] [35mdoc2[39;49;00m
> [01mreading sources... [39;49;00m[ 75%] [35mdoc3[39;49;00m
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[ 25%] [32mdoc1[39;49;00m
> [01mwriting output... [39;49;00m[ 50%] [32mdoc2[39;49;00m
> [01mwriting output... [39;49;00m[ 75%] [32mdoc3[39;49;00m
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibliography_url/test.bib... parsed 4 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/bibliography_custom_ids/test.bib... parsed 3 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/citation_multiple_keys/refs.bib... parsed 2 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/citation_any_role/refs.bib... parsed 2 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> 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
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 3 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 3 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[ 33%] [35mdoc1[39;49;00m
> [01mreading sources... [39;49;00m[ 66%] [35mdoc2[39;49;00m
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[ 33%] [32mdoc1[39;49;00m
> [01mwriting output... [39;49;00m[ 66%] [32mdoc2[39;49;00m
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded, 1 warning.[39;49;00m
>
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/duplicate_label/_build/html.
>
> # warning:
> [91m/tmp/pytest-of-user42/pytest-36/duplicate_label/doc2.rst:4: WARNING: duplicate label "1" for keys "Test" and "Test2"[39;49;00m
>
> ___________________________ 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/duplicate_citation/test.bib... parsed 1 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded, 1 warning.[39;49;00m
>
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/duplicate_citation/_build/html.
>
> # warning:
> [91m/tmp/pytest-of-user42/pytest-36/duplicate_citation/index.rst:4: WARNING: duplicate citation for key "Test"[39;49;00m
>
> ___________________ 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/duplicate_nearly_identical_entries/test.bib... parsed 2 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/duplicate_nearly_identical_keys/test.bib... parsed 3 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/duplicate_nearly_identical_keys/test.bib... parsed 3 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded, 2 warnings.[39;49;00m
>
> The HTML pages are in ../../../../../../tmp/pytest-of-user42/pytest-36/duplicate_nearly_identical_keys/_build/html.
>
> # warning:
> [91m/tmp/pytest-of-user42/pytest-36/duplicate_nearly_identical_keys/index.rst:5: WARNING: duplicate citation id cite-1-test[39;49;00m
> [91m/tmp/pytest-of-user42/pytest-36/duplicate_nearly_identical_keys/index.rst:5: WARNING: duplicate citation id cite-1-test[39;49;00m
>
> __________________________ 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/duplicate_citation_id/test.bib... parsed 1 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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:
> [01mRunning Sphinx v5.0.2[39;49;00m
> checking bibtex cache... out of date
> parsing bibtex file /tmp/pytest-of-user42/pytest-36/list_citation/test.bib... parsed 4 entries
> [01mbuilding [mo]: [39;49;00mtargets for 0 po files that are out of date
> [01mbuilding [html]: [39;49;00mtargets for 1 source files that are out of date
> [01mupdating environment: [39;49;00m[new config] 1 added, 0 changed, 0 removed
> [01mreading sources... [39;49;00m[100%] [35mindex[39;49;00m
>
> [01mlooking for now-outdated files... [39;49;00mnone found
> [01mpickling environment... [39;49;00mdone
> [01mchecking consistency... [39;49;00mdone
> [01mpreparing documents... [39;49;00mdone
> [01mwriting output... [39;49;00m[100%] [32mindex[39;49;00m
>
> [01mgenerating indices... [39;49;00mgenindex done
> [01mwriting additional pages... [39;49;00msearch done
> [01mcopying static files... [39;49;00mdone
> [01mcopying extra files... [39;49;00mdone
> [01mdumping search index in English (code: en)... [39;49;00mdone
> [01mdumping object inventory... [39;49;00mdone
> [01mbuild succeeded.[39;49;00m
>
> 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