001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
001_a.dox
002_addindex.dox
003_anchor.dox
004_arg.dox
005_attention.dox
006_author.dox
007_b.dox
008_brief.c
009_bug.cpp
010_c.dox
011_category.m
012_cite.dox
013_class.h
014_code.dox
015_cond.c
016_copydoc.c
017_copyright.dox
018_def.c
019_defgroup.c
020_only.dox
021_dontinclude.cpp
022_dot.cpp
023_e.dox
024_if.dox
025_example.cpp
026_exception.cpp
027_extends.c
028_formula.c
029_hideinit.c
030_htmlinclude.dox
031_image.dox
032_include.cpp
033_internal.dox
034_internal.dox
035_invariant.c
036_link.c
037_msc.cpp
038_n.dox
039_name.cpp
040_namespace.cpp
041_overload.cpp
042_package.java
043_page.dox
044_section.h
045_refitem.dox
046_related.cpp
047_return.cpp
048_showinit.c
049_snippet.cpp
050_verbatim.dox
051_escape.dox
052_tilde.dox
053_tilde.dox
054_parblock.cpp
055_markdown.md
056_latexinclude.dox
057_caller_graphs.tcl
058_bracket_recursion.tcl
059_command_catch.tcl
060_command_switch.tcl
061_bug_705503.tcl
062_namespace_resolution.tcl
063_bug_729092.tcl
064_castoperator.cpp
065_tilde.dox
066_property_initializer.cs
067_using.cpp
068_typed_enum.cpp
CMakeLists.txt
Doxyfile
README.txt
_057_caller_graphs.tcl
example_test.cpp
runtests.py
sample.bib
sample.html
sample.png
sample.tex
snippet_test.cpp
testsqlite3.py
README.txt
Doxygen regession test suite
============================

This directory contains a set of regression tests. Each test consists of a
file starting with a 3 digit number and a corresponding directory whose name
has the same 3 digit number. The directory contains one or more reference
files that are compared against the XML output produced by doxygen. If the
result is the same, there is no regression and the test passes. If there is a
difference the test fails and the difference (in diff -u format) will be shown.

The runtest.py script responsible for running the tests takes a number of
optional parameters:
-id n:        run test with number n only (the option may be specified
              multiple times) default is to run all tests.
-updateref:   update the reference files. Should be used in combination
              with -id to update the reference file(s) for the given test.
-all:         can be used in combination with -updateref to update the
              reference files for all tests.
-doxygen exe: run the specified doxygen executable.
-xmllint exe: run the specified xmllint executable.

The runtest.pl has the following dependenies on 3rd party tools:
- python  to run the script
- xmllint to normalize the XML output
- diff    to show the differences in case a test fails

Each test file can have a number of special comment lines that are extracted by
the runtest.pl script and take the form:
// <identifier>: 'argument'
Where <identifier> can be one of:
- objective: 'argument' provides the objective for the test (i.e. its purpose)
- check:     'argument' names a file that is generated by doxygen, which should
             be compared against the reference.
- config:    'argument' is a line that is added to the default Doxyfile used to
             run doxygen on the test file.

Example to run all tests:
    python runtest.py

Example to run a test
    python runtest.py -id 10

Example to update the reference files for a test
    python runtest.py -updateref -id 10

There is also a CMakeLists.txt, which can be used from the build directory
to run all tests by simply invoking 'make tests'.