From cf52865fa92f2b4c7241bc04c13642f5434225f3 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Thu, 13 Aug 2020 00:09:59 +0100 Subject: tests: Attempt to do an integration test for mkhtml2 Signed-off-by: Simon McVittie --- configure.ac | 2 + tests/Makefile.am | 4 +- tests/gobject-mkhtml2.sh | 6 ++ tests/gobject-mkhtml2/Makefile.am | 11 +++ tests/gobject-mkhtml2/docs/Makefile.am | 2 + tests/gobject-mkhtml2/docs/images/meson.build | 3 + tests/gobject-mkhtml2/docs/images/object.png | Bin 0 -> 4101 bytes tests/gobject-mkhtml2/docs/meson.build | 113 +++++++++++++++++++++++ tests/gobject-mkhtml2/docs/tester-docs.xml | 119 +++++++++++++++++++++++++ tests/gobject-mkhtml2/docs/tester-sections.txt | 81 +++++++++++++++++ tests/gobject-mkhtml2/meson.build | 1 + tests/gtk-doc.make | 23 +++-- tests/helpers/gtkdoc_mkhtml2_runner.py | 38 ++++++++ tests/helpers/meson.build | 3 +- tests/meson.build | 1 + 15 files changed, 397 insertions(+), 10 deletions(-) create mode 100755 tests/gobject-mkhtml2.sh create mode 100644 tests/gobject-mkhtml2/Makefile.am create mode 100644 tests/gobject-mkhtml2/docs/Makefile.am create mode 100644 tests/gobject-mkhtml2/docs/images/meson.build create mode 100644 tests/gobject-mkhtml2/docs/images/object.png create mode 100644 tests/gobject-mkhtml2/docs/meson.build create mode 100644 tests/gobject-mkhtml2/docs/tester-docs.xml create mode 100644 tests/gobject-mkhtml2/docs/tester-sections.txt create mode 100644 tests/gobject-mkhtml2/meson.build create mode 100644 tests/helpers/gtkdoc_mkhtml2_runner.py diff --git a/configure.ac b/configure.ac index f242c80..f720b6d 100644 --- a/configure.ac +++ b/configure.ac @@ -179,6 +179,8 @@ tests/fail/docs/Makefile tests/gobject/Makefile tests/gobject/src/Makefile tests/gobject/docs/Makefile +tests/gobject-mkhtml2/Makefile +tests/gobject-mkhtml2/docs/Makefile tests/program/Makefile tests/program/src/Makefile tests/program/docs/Makefile diff --git a/tests/Makefile.am b/tests/Makefile.am index d2d0b86..24bc904 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -8,8 +8,8 @@ TESTS = \ if BUILD_TESTS # we need to run '.' last so that sanity processes the generated docs # maybe move it to a subdir? -SUBDIRS += annotations bugs empty fail gobject program repro . -TESTS += annotations.sh bugs.sh empty.sh fail.sh gobject.sh program.sh +SUBDIRS += annotations bugs empty fail gobject gobject-mkhtml2 program repro . +TESTS += annotations.sh bugs.sh empty.sh fail.sh gobject.sh gobject-mkhtml2.sh program.sh endif TESTS_ENVIRONMENT = \ diff --git a/tests/gobject-mkhtml2.sh b/tests/gobject-mkhtml2.sh new file mode 100755 index 0000000..a9486b9 --- /dev/null +++ b/tests/gobject-mkhtml2.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +set -e + +gtkdoctest.sh gobject-mkhtml2 +sanity.sh gobject-mkhtml2 diff --git a/tests/gobject-mkhtml2/Makefile.am b/tests/gobject-mkhtml2/Makefile.am new file mode 100644 index 0000000..a95a0bb --- /dev/null +++ b/tests/gobject-mkhtml2/Makefile.am @@ -0,0 +1,11 @@ +## Process this file with automake to produce Makefile.in + +SUBDIRS = docs + +if BUILD_TESTS + +check-local: clean + +endif + +-include $(top_srcdir)/git.mk diff --git a/tests/gobject-mkhtml2/docs/Makefile.am b/tests/gobject-mkhtml2/docs/Makefile.am new file mode 100644 index 0000000..07a53c1 --- /dev/null +++ b/tests/gobject-mkhtml2/docs/Makefile.am @@ -0,0 +1,2 @@ +MKHTML2=1 +include $(top_srcdir)/tests/gobject/docs/Makefile.am diff --git a/tests/gobject-mkhtml2/docs/images/meson.build b/tests/gobject-mkhtml2/docs/images/meson.build new file mode 100644 index 0000000..ee2da70 --- /dev/null +++ b/tests/gobject-mkhtml2/docs/images/meson.build @@ -0,0 +1,3 @@ +gobject_test_html_data += [ + join_paths(srcdir, 'tests', 'gobject', 'docs', 'images', 'object.png') +] \ No newline at end of file diff --git a/tests/gobject-mkhtml2/docs/images/object.png b/tests/gobject-mkhtml2/docs/images/object.png new file mode 100644 index 0000000..b7f4535 Binary files /dev/null and b/tests/gobject-mkhtml2/docs/images/object.png differ diff --git a/tests/gobject-mkhtml2/docs/meson.build b/tests/gobject-mkhtml2/docs/meson.build new file mode 100644 index 0000000..1613c5e --- /dev/null +++ b/tests/gobject-mkhtml2/docs/meson.build @@ -0,0 +1,113 @@ +gobject_test_source_dir = join_paths( + srcdir, + 'tests', + 'gobject', + 'src' +) + +gobject_test_docs_dir = join_paths( + srcdir, + 'tests', + 'gobject-mkhtml2', + 'docs' +) + +gobject_test_output_dir = join_paths( + builddir, + 'tests', + 'gobject-mkhtml2', + 'docs' +) + +gobject_test_html_data = [] + +test( + 'test-gobject-scan', + python_prg, + workdir: gobject_test_docs_dir, + is_parallel: false, + args: [ + gtkdoc_scan_runner_script, + '--binary-dir=@0@'.format(builddir), + '--change-dir=@0@'.format(gobject_test_output_dir), + '--module=@0@'.format('tester'), + '--source-dir=@0@'.format(gobject_test_source_dir), + '--ignore-headers=config.h', + '--deprecated-guards=GTKDOC_TESTER_DISABLE_DEPRECATED', + '--rebuild-types', + ], +) + +test( + 'test-gobject-scangobj', + python_prg, + workdir: gobject_test_output_dir, + is_parallel: false, + args: [ + gtkdoc_scangobj_runner_script, + '--binary-dir=@0@'.format(builddir), + '--pkg-config=@0@'.format(pkgconfig_prg_path), + '--extra-pkg=@0@'.format('glib-2.0'), + '--extra-pkg=@0@'.format('gobject-2.0'), + '--extra-lib=@0@'.format(gobject_test_lib.full_path()), + '--module=@0@'.format('tester'), + ], +) + +test( + 'test-gobject-mkdb', + python_prg, + workdir: gobject_test_output_dir, + is_parallel: false, + args: [ + gtkdoc_mkdb_runner_script, + '--binary-dir=@0@'.format(builddir), + '--module=@0@'.format('tester'), + '--source-dir=@0@'.format(gobject_test_source_dir), + '--main-sgml-file=@0@'.format('tester-docs.xml'), + '--output-format=xml', + '--xml-mode', + ], +) + +foreach style_data: gtkdoc_style_data + gobject_test_html_data += join_paths(srcdir, 'style', style_data) +endforeach + +subdir('images') # Appends to gobject_test_html_data + +test( + 'test-gobject-mkhtml2', + python_prg, + workdir: gobject_test_output_dir, + is_parallel: false, + args: [ + gtkdoc_mkhtml2_runner_script, + '--binary-dir=@0@'.format(builddir), + '--change-dir=@0@'.format(join_paths(gobject_test_output_dir, 'html')), + '--html-assets=@0@'.format('@@'.join(gobject_test_html_data)), + '@0@'.format('tester'), + '@0@'.format(join_paths('..', 'tester-docs.xml')), + '--uninstalled', + '--path=@0@'.format(':'.join([ + gobject_test_docs_dir, + srcdir, + ]) + ), + '--extra-dir=@0@'.format(glib_docpath), + '--extra-dir=@0@'.format(gobject_docpath), + ], +) + +test( + 'test-gobject-check', + python_prg, + workdir: gobject_test_docs_dir, + is_parallel: false, + args: [ + gtkdoc_check_runner_script, + '--binary-dir=@0@'.format(builddir), + '--input-dir=@0@'.format(gobject_test_docs_dir), + '--output-dir=@0@'.format(gobject_test_output_dir), + ], +) diff --git a/tests/gobject-mkhtml2/docs/tester-docs.xml b/tests/gobject-mkhtml2/docs/tester-docs.xml new file mode 100644 index 0000000..cb78ca8 --- /dev/null +++ b/tests/gobject-mkhtml2/docs/tester-docs.xml @@ -0,0 +1,119 @@ + + + + %gtkdocentities; +]> + + + &package_name; Reference Manual + + The gtk-doc team. + + + for &package_string;. + The latest version of this documentation can be found on-line at + http://[SERVER]/tester/. + + + + This manual is published as public domain. + + + + + + Introduction + + This document is for testing purpose only. + It is generated from Docbook-XML. + + + Most of the actual text is quite non-sense. Don't pay attention. + + + + + + + Overview + + How to build the library + + + + + + API Reference + + Tests + + + + + + + + + + + Appendix + + + Object Hierarchy + + + + + Object Index + + + + + API Index + + + + Index of deprecated API + + + + Index of new API in 0.1 + + + + Index of new API in 0.5 + + + + + Glossary + A + + API + + Application Programming Interface + + + + X + + XML + + Extensible Markup Language + + + + XSL + + XML Stylesheet Language + + + + + + + + diff --git a/tests/gobject-mkhtml2/docs/tester-sections.txt b/tests/gobject-mkhtml2/docs/tester-sections.txt new file mode 100644 index 0000000..b1d5942 --- /dev/null +++ b/tests/gobject-mkhtml2/docs/tester-sections.txt @@ -0,0 +1,81 @@ +
+object +GtkdocObject +GtkdocObjectClass +gtkdoc_object_new +gtkdoc_object_set_otest +gtkdoc_object_frobnicate +gtkdoc_object_fooify +gtkdoc_object_do_not_use +GTKDOC_OBJECT_MACRO_DUMMY +GTKDOC_OBJECT_MACRO_SUM + +GTKDOC_OBJECT +GTKDOC_IS_OBJECT +GTKDOC_TYPE_OBJECT +gtkdoc_object_get_type +GTKDOC_OBJECT_CLASS +GTKDOC_IS_OBJECT_CLASS +GTKDOC_OBJECT_GET_CLASS +
+ +
+object2 +GtkdocObject2 +GtkdocObject2Class + +GTKDOC_TYPE_OBJECT2 +gtkdoc_object2_get_type +
+ +
+object3 + +GtkdocObject3 +GtkdocObject3Class +GTKDOC_TYPE_OBJECT3 +gtkdoc_object3_get_type +
+ +
+iface +GtkdocIface +GtkdocIfaceInterface +gtkdoc_iface_configure +GTKDOC_IFACE_MACRO_DUMMY +GTKDOC_IFACE_MACRO_SUM + +GTKDOC_IFACE +GTKDOC_IS_IFACE +GTKDOC_TYPE_IFACE +gtkdoc_iface_get_type +GTKDOC_IFACE_GET_INTERFACE +
+ +
+iface2 +GtkdocIface2 + +GTKDOC_TYPE_IFACE2 +gtkdoc_iface2_get_type +
+ +
+types +GtkdocEnum +GtkdocEnum2 +GtkdocPlainOldData +GtkdocBoxedPlainOldData +GtkdocHelperEnum +GtkdocHelperStruct + +GTKDOC_TYPE_ENUM +GTKDOC_TYPE_ENUM2 +GTKDOC_TYPE_BOXED +gtkdoc_enum_get_type +gtkdoc_enum2_get_type +gtkdoc_boxed_get_type +GTKDOC_TYPE_BOXED_PLAIN_OLD_DATA +gtkdoc_boxed_plain_old_data_get_type +
+ diff --git a/tests/gobject-mkhtml2/meson.build b/tests/gobject-mkhtml2/meson.build new file mode 100644 index 0000000..dd7c213 --- /dev/null +++ b/tests/gobject-mkhtml2/meson.build @@ -0,0 +1 @@ +subdir('docs') diff --git a/tests/gtk-doc.make b/tests/gtk-doc.make index 9235874..2c4d1d7 100644 --- a/tests/gtk-doc.make +++ b/tests/gtk-doc.make @@ -168,19 +168,28 @@ html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) if test "x$(V)" = "x1"; then \ mkhtml_options="$$mkhtml_options --verbose"; \ fi; \ - echo "gtkdoc-mkhtml --uninstalled --path="$(abs_srcdir)" $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)" >gtkdoc-mkhtml.log; \ + if test -n "$(MKHTML2)"; then \ + mkhtml="gtkdoc-mkhtml2"; \ + mkhtml_fixxref_options="$(FIXXREF_OPTIONS)"; \ + else \ + mkhtml="gtkdoc-mkhtml"; \ + mkhtml_fixxref_options=""; \ + fi; \ + echo "$$mkhtml --uninstalled --path="$(abs_srcdir)" $$mkhtml_options $(MKHTML_OPTIONS) $$mkhtml_fixxref_options $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)" >$$mkhtml.log; \ cd html && PATH=$(abs_top_builddir):$(PATH) PYTHONPATH=$(abs_top_builddir):$(abs_top_srcdir):$(PYTHONPATH) ABS_TOP_SRCDIR=$(abs_top_srcdir) \ - gtkdoc-mkhtml --uninstalled --path="$(abs_srcdir)" $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) 2>&1 | tee -a ../gtkdoc-mkhtml.log + $$mkhtml --uninstalled --path="$(abs_srcdir)" $$mkhtml_options $(MKHTML_OPTIONS) $$mkhtml_fixxref_options $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) 2>&1 | tee -a ../$$mkhtml.log -@test "x$(HTML_IMAGES)" = "x" || \ for file in $(HTML_IMAGES) ; do \ test -f $(abs_srcdir)/$$file && cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ test -f $(abs_builddir)/$$file && cp $(abs_builddir)/$$file $(abs_builddir)/html; \ done; - @ts=`cat ts`;tsd=`date -d "now - $$ts seconds" $(TS_FMT)`; \ - echo " DOC `$(DATE_FMT_CMD)$$tsd`: Fixing cross-references" - @echo "gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)" >gtkdoc-fixxref.log; \ - PATH=$(abs_top_builddir):$(PATH) PYTHONPATH=$(abs_top_builddir):$(abs_top_srcdir):$(PYTHONPATH) \ - gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) 2>&1 | tee -a gtkdoc-fixxref.log + @if test -z "$(MKHTML2)"; then \ + ts=`cat ts`;tsd=`date -d "now - $$ts seconds" $(TS_FMT)`; \ + echo " DOC `$(DATE_FMT_CMD)$$tsd`: Fixing cross-references"; \ + echo "gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)" >gtkdoc-fixxref.log; \ + PATH=$(abs_top_builddir):$(PATH) PYTHONPATH=$(abs_top_builddir):$(abs_top_srcdir):$(PYTHONPATH) \ + gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) 2>&1 | tee -a gtkdoc-fixxref.log; \ + fi @touch html-build.stamp #### pdf #### diff --git a/tests/helpers/gtkdoc_mkhtml2_runner.py b/tests/helpers/gtkdoc_mkhtml2_runner.py new file mode 100644 index 0000000..fc4dae8 --- /dev/null +++ b/tests/helpers/gtkdoc_mkhtml2_runner.py @@ -0,0 +1,38 @@ +# -*- python -*- + +from __future__ import print_function + +import argparse +import os +import shutil +import sys + +from subprocess import call + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='gtkdoc-mkhtml2 runner.') + + parser.add_argument("--binary-dir", type=str, required=True, + help='Path to be used as a working directory') + parser.add_argument("--change-dir", type=str, default=None, + help='Path to be used as a working directory') + parser.add_argument("--html-assets", type=str, default=None, + help='List of HTML assets, seprated by "@@"') + + options, arguments = parser.parse_known_args() + + arguments.insert(0, os.path.join(options.binary_dir, 'gtkdoc-mkhtml2')) + + if options.change_dir is not None: + if not os.path.exists(options.change_dir): + os.makedirs(options.change_dir) + + if not options.html_assets is None: + for html_asset in options.html_assets.split('@@'): + if options.change_dir is not None: + html_target = os.path.join(options.change_dir, os.path.basename(html_asset)) + else: + html_target = os.path.join(os.getcwd(), os.path.basename(html_asset)) + shutil.copyfile(html_asset, html_target) + + sys.exit(call(arguments, cwd=options.change_dir)) diff --git a/tests/helpers/meson.build b/tests/helpers/meson.build index 7e0123e..42b6400 100644 --- a/tests/helpers/meson.build +++ b/tests/helpers/meson.build @@ -2,5 +2,6 @@ gtkdoc_scan_runner_script = files('gtkdoc_scan_runner.py') gtkdoc_scangobj_runner_script = files('gtkdoc_scangobj_runner.py') gtkdoc_mkdb_runner_script = files('gtkdoc_mkdb_runner.py') gtkdoc_mkhtml_runner_script = files('gtkdoc_mkhtml_runner.py') +gtkdoc_mkhtml2_runner_script = files('gtkdoc_mkhtml2_runner.py') gtkdoc_fixxref_runner_script = files('gtkdoc_fixxref_runner.py') -gtkdoc_check_runner_script = files('gtkdoc_check_runner.py') \ No newline at end of file +gtkdoc_check_runner_script = files('gtkdoc_check_runner.py') diff --git a/tests/meson.build b/tests/meson.build index 92add69..2d83673 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -42,4 +42,5 @@ subdir('bugs') subdir('empty') subdir('fail') subdir('gobject') +subdir('gobject-mkhtml2') subdir('program') -- cgit v1.2.1