diff --git a/tests/test_build_html.py b/tests/test_build_html.py
index 2568bb5b8..7688f76b3 100644
--- a/tests/test_build_html.py
+++ b/tests/test_build_html.py
@@ -361,8 +361,6 @@ def test_html4_output(app, status, warning):
'index.html': [
(".//meta[@name='hc'][@content='hcval']", ''),
(".//meta[@name='hc_co'][@content='hcval_co']", ''),
- (".//dt[@class='label']/span[@class='brackets']", r'Ref1'),
- (".//dt[@class='label']", ''),
(".//li[@class='toctree-l1']/a", 'Testing various markup'),
(".//li[@class='toctree-l2']/a", 'Inline markup'),
(".//title", 'Sphinx '),
@@ -400,6 +398,26 @@ def test_html4_output(app, status, warning):
(".//a", "entry"),
(".//li/a", "double"),
],
+ 'otherext.html': [
+ (".//h1", "Generated section"),
+ (".//a[@href='_sources/otherext.foo.txt']", ''),
+ ]
+}))
+@pytest.mark.sphinx('html', tags=['testtag'],
+ confoverrides={'html_context.hckey_co': 'hcval_co'})
+@pytest.mark.test_params(shared_result='test_build_html_output')
+def test_html5_output(app, cached_etree_parse, fname, expect):
+ app.build()
+ print(app.outdir / fname)
+ check_xpath(cached_etree_parse(app.outdir / fname), fname, *expect)
+
+
+@pytest.mark.skipif(docutils.__version_info__ >= (0, 18), reason='docutils-0.17 or below is required.')
+@pytest.mark.parametrize("fname,expect", flat_dict({
+ 'index.html': [
+ (".//dt[@class='label']/span[@class='brackets']", r'Ref1'),
+ (".//dt[@class='label']", ''),
+ ],
'footnote.html': [
(".//a[@class='footnote-reference brackets'][@href='#id9'][@id='id1']", r"1"),
(".//a[@class='footnote-reference brackets'][@href='#id10'][@id='id2']", r"2"),
@@ -417,15 +435,42 @@ def test_html4_output(app, status, warning):
(".//a[@class='fn-backref'][@href='#id7']", r"5"),
(".//a[@class='fn-backref'][@href='#id8']", r"6"),
],
- 'otherext.html': [
- (".//h1", "Generated section"),
- (".//a[@href='_sources/otherext.foo.txt']", ''),
- ]
}))
-@pytest.mark.sphinx('html', tags=['testtag'],
- confoverrides={'html_context.hckey_co': 'hcval_co'})
-@pytest.mark.test_params(shared_result='test_build_html_output')
-def test_html5_output(app, cached_etree_parse, fname, expect):
+@pytest.mark.sphinx('html')
+@pytest.mark.test_params(shared_result='test_build_html_output_docutils17')
+def test_docutils17_output(app, cached_etree_parse, fname, expect):
+ app.build()
+ print(app.outdir / fname)
+ check_xpath(cached_etree_parse(app.outdir / fname), fname, *expect)
+
+
+@pytest.mark.skipif(docutils.__version_info__ < (0, 18), reason='docutils-0.18+ is required.')
+@pytest.mark.parametrize("fname,expect", flat_dict({
+ 'index.html': [
+ (".//div[@class='citation']/span", r'Ref1'),
+ (".//div[@class='citation']/span", r'Ref_1'),
+ ],
+ 'footnote.html': [
+ (".//a[@class='footnote-reference brackets'][@href='#id9'][@id='id1']", r"1"),
+ (".//a[@class='footnote-reference brackets'][@href='#id10'][@id='id2']", r"2"),
+ (".//a[@class='footnote-reference brackets'][@href='#foo'][@id='id3']", r"3"),
+ (".//a[@class='reference internal'][@href='#bar'][@id='id4']/span", r"\[bar\]"),
+ (".//a[@class='reference internal'][@href='#baz-qux'][@id='id5']/span", r"\[baz_qux\]"),
+ (".//a[@class='footnote-reference brackets'][@href='#id11'][@id='id6']", r"4"),
+ (".//a[@class='footnote-reference brackets'][@href='#id12'][@id='id7']", r"5"),
+ (".//aside[@class='footnote brackets']/span/a[@href='#id1']", r"1"),
+ (".//aside[@class='footnote brackets']/span/a[@href='#id2']", r"2"),
+ (".//aside[@class='footnote brackets']/span/a[@href='#id3']", r"3"),
+ (".//div[@class='citation']/span/a[@href='#id4']", r"bar"),
+ (".//div[@class='citation']/span/a[@href='#id5']", r"baz_qux"),
+ (".//aside[@class='footnote brackets']/span/a[@href='#id6']", r"4"),
+ (".//aside[@class='footnote brackets']/span/a[@href='#id7']", r"5"),
+ (".//aside[@class='footnote brackets']/span/a[@href='#id8']", r"6"),
+ ],
+}))
+@pytest.mark.sphinx('html')
+@pytest.mark.test_params(shared_result='test_build_html_output_docutils18')
+def test_docutils18_output(app, cached_etree_parse, fname, expect):
app.build()
print(app.outdir / fname)
check_xpath(cached_etree_parse(app.outdir / fname), fname, *expect)