summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <smcv@debian.org>2020-08-13 00:09:59 +0100
committerSimon McVittie <smcv@debian.org>2020-08-13 00:14:35 +0100
commitcf52865fa92f2b4c7241bc04c13642f5434225f3 (patch)
treeffb45dc8f3d55dd5cf9b5c6aea5d901c8d2f335b
parent250a21f24365b6fed6271b5f235307d9fbef5eeb (diff)
downloadgtk-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.ac2
-rw-r--r--tests/Makefile.am4
-rwxr-xr-xtests/gobject-mkhtml2.sh6
-rw-r--r--tests/gobject-mkhtml2/Makefile.am11
-rw-r--r--tests/gobject-mkhtml2/docs/Makefile.am2
-rw-r--r--tests/gobject-mkhtml2/docs/images/meson.build3
-rw-r--r--tests/gobject-mkhtml2/docs/images/object.pngbin0 -> 4101 bytes
-rw-r--r--tests/gobject-mkhtml2/docs/meson.build113
-rw-r--r--tests/gobject-mkhtml2/docs/tester-docs.xml119
-rw-r--r--tests/gobject-mkhtml2/docs/tester-sections.txt81
-rw-r--r--tests/gobject-mkhtml2/meson.build1
-rw-r--r--tests/gtk-doc.make23
-rw-r--r--tests/helpers/gtkdoc_mkhtml2_runner.py38
-rw-r--r--tests/helpers/meson.build3
-rw-r--r--tests/meson.build1
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
new file mode 100644
index 0000000..b7f4535
--- /dev/null
+++ b/tests/gobject-mkhtml2/docs/images/object.png
Binary files 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 @@
+<?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')