aboutsummaryrefslogtreecommitdiff
path: root/tests/qapi-schema/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'tests/qapi-schema/meson.build')
-rw-r--r--tests/qapi-schema/meson.build42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/qapi-schema/meson.build b/tests/qapi-schema/meson.build
index 83a0a68389..4e8cae62c8 100644
--- a/tests/qapi-schema/meson.build
+++ b/tests/qapi-schema/meson.build
@@ -224,3 +224,45 @@ qapi_doc = custom_target('QAPI doc',
test('QAPI doc', diff, args: ['-b', '-u', files('doc-good.texi'), qapi_doc[0].full_path()],
depends: qapi_doc,
suite: ['qapi-schema', 'qapi-doc'])
+
+SPHINX_ARGS = [config_host['SPHINX_BUILD']]
+
+if get_option('werror')
+ SPHINX_ARGS += [ '-W' ]
+endif
+
+qapi_doc_out = custom_target('QAPI rST doc',
+ output: ['doc-good.txt'],
+ input: files('doc-good.json', 'doc-good.rst'),
+ # We use -E to suppress Sphinx's caching, because we want it to
+ # always really run the QAPI doc generation code. It also means
+ # we don't clutter up the build dir with the cache.
+ command: [SPHINX_ARGS,
+ '-b', 'text', '-E',
+ '-c', meson.source_root() / 'docs',
+ '-D', 'master_doc=doc-good',
+ meson.current_source_dir(),
+ meson.current_build_dir()])
+
+qapi_doc_out_nocr = custom_target('QAPI rST doc newline-sanitized',
+ output: ['doc-good.txt.nocr'],
+ input: qapi_doc_out[0],
+ command: ['tr', '-d', '\r', '@INPUT@'],
+ capture: true)
+
+qapi_doc_ref_nocr = custom_target('QAPI rST doc reference newline-sanitized',
+ output: ['doc-good.ref.nocr'],
+ input: files('doc-good.txt'),
+ command: ['tr', '-d', '\r', '@INPUT@'],
+ capture: true)
+
+if build_docs
+ # "full_path()" needed here to work around
+ # https://github.com/mesonbuild/meson/issues/7585
+ # TODO don't want to use -b as we care about whitespace
+ # probably need to strip line-endings :-(
+ test('QAPI rST doc', diff, args: ['-u', qapi_doc_ref_nocr[0].full_path(),
+ qapi_doc_out_nocr[0].full_path()],
+ depends: [qapi_doc_ref_nocr, qapi_doc_out_nocr],
+ suite: ['qapi-schema', 'qapi-doc'])
+endif