Skip to content

Commit 8b0c74d

Browse files
committed
Regression tests: write out pseudoxml files for rst files
1 parent d58bf18 commit 8b0c74d

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

tests_regression/helpers/regression.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
from pathlib import Path
1313
from warnings import catch_warnings
1414

15+
from docutils.writers import pseudoxml
16+
from docutils.io import FileOutput
1517
from sphinx.application import Sphinx
1618
from sphinx.util.docutils import docutils_namespace
1719
from sphinx.testing.restructuredtext import parse as sphinx_parse
@@ -79,6 +81,13 @@ class MinimalSphinxTemplate(DocumentTemplate):
7981
register_template('minimal_sphinx', MinimalSphinxTemplate)
8082

8183

84+
def write_pseudoxml(docutils_doctree, out_filepath):
85+
out_filepath.parent.mkdir(parents=True, exist_ok=True)
86+
pxml_writer = pseudoxml.Writer()
87+
output = FileOutput(encoding='utf-8', destination_path=out_filepath)
88+
pxml_writer.write(docutils_doctree, output)
89+
90+
8291
def render_md_file(md_path, out_filename, reference_path):
8392
reader = CommonMarkReader()
8493
doctree = reader.parse(md_path)
@@ -87,10 +96,13 @@ def render_md_file(md_path, out_filename, reference_path):
8796

8897

8998
def render_rst_file(rst_path, out_filename, reference_path):
99+
output_dir = TEST_DIR / 'rst_output'
90100
reader = ReStructuredTextReader()
91101
doctree = reader.parse(rst_path)
92-
return _render_file(rst_path, doctree, TEST_DIR / 'rst_output',
93-
out_filename, reference_path)
102+
pseudoxml_path = (output_dir / out_filename / out_filename).with_suffix('.pxml')
103+
write_pseudoxml(doctree.source.node, pseudoxml_path)
104+
return _render_file(rst_path, doctree, output_dir, out_filename,
105+
reference_path)
94106

95107

96108
def render_sphinx_rst_file(rst_path, out_filename, reference_path):
@@ -103,6 +115,8 @@ def render_sphinx_rst_file(rst_path, out_filename, reference_path):
103115
contents = rst_file.read()
104116
sphinx_doctree = sphinx_parse(app, contents)
105117
doctree = from_doctree(sphinx_doctree)
118+
pseudoxml_path = (output_dir / out_filename / out_filename).with_suffix('.pxml')
119+
write_pseudoxml(sphinx_doctree, pseudoxml_path)
106120
docinfo = sphinx_doctree.settings.env.metadata['index']
107121
warnings = docinfo.get('warnings', '').splitlines()
108122
return _render_file(rst_path, doctree, output_dir, out_filename,

0 commit comments

Comments
 (0)