diff options
author | Simon McVittie <smcv@debian.org> | 2020-08-13 00:09:59 +0100 |
---|---|---|
committer | Simon McVittie <smcv@debian.org> | 2020-08-13 00:14:35 +0100 |
commit | cf52865fa92f2b4c7241bc04c13642f5434225f3 (patch) | |
tree | ffb45dc8f3d55dd5cf9b5c6aea5d901c8d2f335b | |
parent | 250a21f24365b6fed6271b5f235307d9fbef5eeb (diff) | |
download | gtk-doc-wip/smcv/mkhtml2-test.tar.gz |
tests: Attempt to do an integration test for mkhtml2wip/smcv/mkhtml2-test
Signed-off-by: Simon McVittie <smcv@debian.org>
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | tests/Makefile.am | 4 | ||||
-rwxr-xr-x | tests/gobject-mkhtml2.sh | 6 | ||||
-rw-r--r-- | tests/gobject-mkhtml2/Makefile.am | 11 | ||||
-rw-r--r-- | tests/gobject-mkhtml2/docs/Makefile.am | 2 | ||||
-rw-r--r-- | tests/gobject-mkhtml2/docs/images/meson.build | 3 | ||||
-rw-r--r-- | tests/gobject-mkhtml2/docs/images/object.png | bin | 0 -> 4101 bytes | |||
-rw-r--r-- | tests/gobject-mkhtml2/docs/meson.build | 113 | ||||
-rw-r--r-- | tests/gobject-mkhtml2/docs/tester-docs.xml | 119 | ||||
-rw-r--r-- | tests/gobject-mkhtml2/docs/tester-sections.txt | 81 | ||||
-rw-r--r-- | tests/gobject-mkhtml2/meson.build | 1 | ||||
-rw-r--r-- | tests/gtk-doc.make | 23 | ||||
-rw-r--r-- | tests/helpers/gtkdoc_mkhtml2_runner.py | 38 | ||||
-rw-r--r-- | tests/helpers/meson.build | 3 | ||||
-rw-r--r-- | tests/meson.build | 1 |
15 files changed, 397 insertions, 10 deletions
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 Binary files differnew file mode 100644 index 0000000..b7f4535 --- /dev/null +++ b/tests/gobject-mkhtml2/docs/images/object.png 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 @@ +<?xml version="1.0"?> +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" + "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" +[ + <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'"> + <!ENTITY % gtkdocentities SYSTEM "xml/gtkdocentities.ent"> + %gtkdocentities; +]> +<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude"> + <bookinfo> + <title>&package_name; Reference Manual</title> + <corpauthor> + The <ulink url="http://www.gtk.org/gtk-doc">gtk-doc team</ulink>. + </corpauthor> + <releaseinfo> + for &package_string;. + The latest version of this documentation can be found on-line at + <ulink role="online-location" url="http://[SERVER]/tester/index.html">http://[SERVER]/tester/</ulink>. + </releaseinfo> + <legalnotice id="legal"> + <para> + This manual is published as public domain. + </para> + </legalnotice> + </bookinfo> + + <preface id="intro"> + <title>Introduction</title> + <para> + This document is for testing purpose only. + It is generated from Docbook-<acronym>XML</acronym>. + <footnote id="intro.footnote-1"> + <para> + Most of the actual text is quite non-sense. Don't pay attention. + </para> + </footnote> + </para> + </preface> + + <part label="1" id="part.i"> + <title>Overview</title> + <chapter id="Overview-building"> + <title>How to build the library</title> + <para></para> + </chapter> + </part> + + <reference label="2" id="part.ii"> + <title>API Reference</title> + <chapter id="main-api"> + <title>Tests</title> + <xi:include href="xml/object.xml"/> + <xi:include href="xml/object2.xml"/> + <xi:include href="xml/object3.xml"/> + <xi:include href="xml/iface.xml"/> + <xi:include href="xml/iface2.xml"/> + <xi:include href="xml/types.xml"/> + </chapter> + </reference> + + <part label="3" id="part.iii"> + <title>Appendix</title> + + <chapter id="object-tree"> + <title>Object Hierarchy</title> + <xi:include href="xml/tree_index.sgml"/> + </chapter> + + <chapter id="object-index"> + <title>Object Index</title> + <xi:include href="xml/object_index.sgml"/> + </chapter> + + <index id="api-index-full"> + <title>API Index</title> + <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include> + </index> + <index id="api-index-deprecated" role="deprecated"> + <title>Index of deprecated API</title> + <xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include> + </index> + <index id="api-index-0-1" role="0.1"> + <title>Index of new API in 0.1</title> + <xi:include href="xml/api-index-0.1.xml"><xi:fallback /></xi:include> + </index> + <index id="api-index-0-5" role="0.5"> + <title>Index of new API in 0.5</title> + <xi:include href="xml/api-index-0.5.xml"><xi:fallback /></xi:include> + </index> + + <glossary id="glossary"> + <title>Glossary</title> + <glossdiv><title>A</title> + <glossentry> + <glossterm><anchor id="glossterm-API"/>API</glossterm> + <glossdef> + <para>Application Programming Interface</para> + </glossdef> + </glossentry> + </glossdiv> + <glossdiv><title>X</title> + <glossentry> + <glossterm><anchor id="glossterm-XML"/>XML</glossterm> + <glossdef> + <para>Extensible Markup Language</para> + </glossdef> + </glossentry> + <glossentry> + <glossterm><anchor id="glossterm-XSL"/>XSL</glossterm> + <glossdef> + <para>XML Stylesheet Language</para> + </glossdef> + </glossentry> + </glossdiv> + </glossary> + + <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include> + </part> +</book> 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 @@ +<SECTION> +<FILE>object</FILE> +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 +<SUBSECTION Standard> +GTKDOC_OBJECT +GTKDOC_IS_OBJECT +GTKDOC_TYPE_OBJECT +gtkdoc_object_get_type +GTKDOC_OBJECT_CLASS +GTKDOC_IS_OBJECT_CLASS +GTKDOC_OBJECT_GET_CLASS +</SECTION> + +<SECTION> +<FILE>object2</FILE> +GtkdocObject2 +GtkdocObject2Class +<SUBSECTION Standard> +GTKDOC_TYPE_OBJECT2 +gtkdoc_object2_get_type +</SECTION> + +<SECTION> +<FILE>object3</FILE> +<SUBSECTION Standard> +GtkdocObject3 +GtkdocObject3Class +GTKDOC_TYPE_OBJECT3 +gtkdoc_object3_get_type +</SECTION> + +<SECTION> +<FILE>iface</FILE> +GtkdocIface +GtkdocIfaceInterface +gtkdoc_iface_configure +GTKDOC_IFACE_MACRO_DUMMY +GTKDOC_IFACE_MACRO_SUM +<SUBSECTION Standard> +GTKDOC_IFACE +GTKDOC_IS_IFACE +GTKDOC_TYPE_IFACE +gtkdoc_iface_get_type +GTKDOC_IFACE_GET_INTERFACE +</SECTION> + +<SECTION> +<FILE>iface2</FILE> +GtkdocIface2 +<SUBSECTION Standard> +GTKDOC_TYPE_IFACE2 +gtkdoc_iface2_get_type +</SECTION> + +<SECTION> +<FILE>types</FILE> +GtkdocEnum +GtkdocEnum2 +GtkdocPlainOldData +GtkdocBoxedPlainOldData +GtkdocHelperEnum +GtkdocHelperStruct +<SUBSECTION Standard> +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 +</SECTION> + 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') |