cd plugins
python -m unittest
- cd doxygen
+ cd documentation
python -m unittest
- node test/test-search.js
+ node test_doxygen/test-search.js
Code coverage needs `coverage.py <https://coverage.readthedocs.io/>`_ for
Python (use ``pip`` or your system package) and
.. code:: sh
- cd doxygen
+ cd documentation
npm install istanbul
There is no
.. code:: sh
- cd doxygen
+ cd documentation
coverage run -m unittest ; coverage html
# open htmlcov/index.html in your browser
- cd doxygen
+ cd documentation
node ./node_modules/istanbul/lib/cli.js cover test/test-search.js
# open coverage/lcov-report/index.html in your browser
id="svg8"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="favicon.svg"
- inkscape:export-filename="/home/mosra/Code/magnum-website/m.css/doxygen/favicon-dark.png"
+ inkscape:export-filename="/home/mosra/Code/magnum-website/m.css/documentation/favicon-dark.png"
inkscape:export-xdpi="96.000008"
inkscape:export-ydpi="96.000008">
<defs
.. code:: html
- <pre class="m-console">CONTRIBUTING.rst CREDITS.rst <span class="g g-AnsiBrightBlue">doc</span> <span class="g g-AnsiBrightBlue">plugins</span> README.rst
- COPYING <span class="g g-AnsiBrightBlue">css</span> <span class="g g-AnsiBrightBlue">doxygen</span> <span class="g g-AnsiBrightBlue">pelican-theme</span> <span class="g g-AnsiBrightBlue">site</span></pre>
+ <pre class="m-console">CONTRIBUTING.rst CREDITS.rst <span class="g g-AnsiBrightBlue">doc</span> <span class="g g-AnsiBrightBlue">plugins</span> README.rst
+ COPYING <span class="g g-AnsiBrightBlue">css</span> <span class="g g-AnsiBrightBlue">documentation</span> <span class="g g-AnsiBrightBlue">pelican-theme</span> <span class="g g-AnsiBrightBlue">site</span></pre>
.. raw:: html
- <pre class="m-console">CONTRIBUTING.rst CREDITS.rst <span class="g g-AnsiBrightBlue">doc</span> <span class="g g-AnsiBrightBlue">plugins</span> README.rst
- COPYING <span class="g g-AnsiBrightBlue">css</span> <span class="g g-AnsiBrightBlue">doxygen</span> <span class="g g-AnsiBrightBlue">pelican-theme</span> <span class="g g-AnsiBrightBlue">site</span></pre>
+ <pre class="m-console">CONTRIBUTING.rst CREDITS.rst <span class="g g-AnsiBrightBlue">doc</span> <span class="g g-AnsiBrightBlue">plugins</span> README.rst
+ COPYING <span class="g g-AnsiBrightBlue">css</span> <span class="g g-AnsiBrightBlue">documentation</span> <span class="g g-AnsiBrightBlue">pelican-theme</span> <span class="g g-AnsiBrightBlue">site</span></pre>
.. note-success::
!\e[0;34m[\e[1;37mmosra@don-perverzo \e[0;37mm.css\e[0;34m]\e[1;36m$ \e[0mls
-CONTRIBUTING.rst CREDITS.rst \e[0m\e[01;34mdoc\e[0m \e[01;34mplugins\e[0m README.rst
-COPYING \e[01;34mcss\e[0m \e[01;34mdoxygen\e[0m \e[01;34mpelican-theme\e[0m \e[01;34msite\e[0m
+CONTRIBUTING.rst CREDITS.rst \e[0m\e[01;34mdoc\e[0m \e[01;34mplugins\e[0m README.rst
+COPYING \e[01;34mcss\e[0m \e[01;34mdocumentation\e[0m \e[01;34mpelican-theme\e[0m \e[01;34msite\e[0m
--- /dev/null
+test_doxygen/*/html/
+test_doxygen/*/xml/
+test_doxygen/layout_generated_doxyfile/Doxyfile
+!test_doxygen/layout_generated_doxyfile/xml/
+node_modules/
+test_doxygen/package-lock.json
return serialize_search_data(trie, map, symbol_count, merge_subtrees=merge_subtrees, merge_prefixes=merge_prefixes)
def base85encode_search_data(data: bytearray) -> bytearray:
- return (b"/* Generated by https://mcss.mosra.cz/doxygen/. Do not edit. */\n" +
+ return (b"/* Generated by https://mcss.mosra.cz/documentation/doxygen/. Do not edit. */\n" +
b"Search.load('" + base64.b85encode(data, True) + b"');\n")
def parse_xml(state: State, xml: str):
default_index_pages = ['pages', 'files', 'namespaces', 'modules', 'annotated']
default_wildcard = '*.xml'
-default_templates = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'templates/')
+default_templates = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'templates/doxygen/')
def run(doxyfile, templates=default_templates, wildcard=default_wildcard, index_pages=default_index_pages, search_add_lookahead_barriers=True, search_merge_subtrees=True, search_merge_prefixes=True, sort_globbed_files=False):
state = State()
let type = '';
let color = '';
switch(results[i].flags >> 4) {
- /* Keep in sync with dox2html5.py */
+ /* Keep in sync with doxygen.py */
case 1:
type = 'page';
color = 'm-success';
import unittest
import xml.etree.ElementTree as ET
-from dox2html5 import run, default_templates, default_wildcard, default_index_pages
+from doxygen import run, default_templates, default_wildcard, default_index_pages
def doxygen_version():
return subprocess.check_output(['doxygen', '-v']).decode('utf-8').strip()
def setUp(self):
if os.path.exists(os.path.join(self.path, 'html')): shutil.rmtree(os.path.join(self.path, 'html'))
- def run_dox2html5(self, templates=default_templates, wildcard=default_wildcard, index_pages=default_index_pages):
+ def run_doxygen(self, templates=default_templates, wildcard=default_wildcard, index_pages=default_index_pages):
run(os.path.join(self.path, 'Doxyfile'), templates=templates, wildcard=wildcard, index_pages=index_pages, sort_globbed_files=True)
def actual_expected_contents(self, actual, expected = None):
import pathlib
sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), '..'))
-from dox2html5 import Trie, ResultMap, ResultFlag, serialize_search_data
+from doxygen import Trie, ResultMap, ResultFlag, serialize_search_data
basedir = pathlib.Path(os.path.dirname(os.path.realpath(__file__)))/'js-test-data'
from distutils.version import LooseVersion
-from test import IntegrationTestCase, doxygen_version
+from . import IntegrationTestCase, doxygen_version
class Listing(IntegrationTestCase):
def __init__(self, *args, **kwargs):
super().__init__(__file__, 'listing', *args, **kwargs)
def test_index_pages(self):
- self.run_dox2html5(wildcard='index.xml', index_pages=['annotated', 'namespaces', 'pages'])
+ self.run_doxygen(wildcard='index.xml', index_pages=['annotated', 'namespaces', 'pages'])
self.assertEqual(*self.actual_expected_contents('annotated.html'))
self.assertEqual(*self.actual_expected_contents('namespaces.html'))
self.assertEqual(*self.actual_expected_contents('pages.html'))
def test_index_pages_custom_expand_level(self):
- self.run_dox2html5(wildcard='index.xml', index_pages=['files'])
+ self.run_doxygen(wildcard='index.xml', index_pages=['files'])
self.assertEqual(*self.actual_expected_contents('files.html'))
def test_dir(self):
- self.run_dox2html5(wildcard='dir_*.xml')
+ self.run_doxygen(wildcard='dir_*.xml')
self.assertEqual(*self.actual_expected_contents('dir_4b0d5f8864bf89936129251a2d32609b.html'))
self.assertEqual(*self.actual_expected_contents('dir_bbe5918fe090eee9db2d9952314b6754.html'))
def test_file(self):
- self.run_dox2html5(wildcard='*_8h.xml')
+ self.run_doxygen(wildcard='*_8h.xml')
self.assertEqual(*self.actual_expected_contents('File_8h.html'))
self.assertEqual(*self.actual_expected_contents('Class_8h.html'))
def test_namespace(self):
- self.run_dox2html5(wildcard='namespaceRoot_1_1Directory.xml')
+ self.run_doxygen(wildcard='namespaceRoot_1_1Directory.xml')
self.assertEqual(*self.actual_expected_contents('namespaceRoot_1_1Directory.html'))
def test_namespace_empty(self):
- self.run_dox2html5(wildcard='namespaceAnother.xml')
+ self.run_doxygen(wildcard='namespaceAnother.xml')
self.assertEqual(*self.actual_expected_contents('namespaceAnother.html'))
def test_class(self):
- self.run_dox2html5(wildcard='classRoot_1_1Directory_1_1Sub_1_1Class.xml')
+ self.run_doxygen(wildcard='classRoot_1_1Directory_1_1Sub_1_1Class.xml')
self.assertEqual(*self.actual_expected_contents('classRoot_1_1Directory_1_1Sub_1_1Class.html'))
def test_page_no_toc(self):
- self.run_dox2html5(wildcard='page-no-toc.xml')
+ self.run_doxygen(wildcard='page-no-toc.xml')
self.assertEqual(*self.actual_expected_contents('page-no-toc.html'))
class Detailed(IntegrationTestCase):
super().__init__(__file__, 'detailed', *args, **kwargs)
def test_namespace(self):
- self.run_dox2html5(wildcard='namespaceNamee.xml')
+ self.run_doxygen(wildcard='namespaceNamee.xml')
self.assertEqual(*self.actual_expected_contents('namespaceNamee.html'))
def test_class_template(self):
- self.run_dox2html5(wildcard='structTemplate.xml')
+ self.run_doxygen(wildcard='structTemplate.xml')
self.assertEqual(*self.actual_expected_contents('structTemplate.html'))
def test_class_template_specialized(self):
- self.run_dox2html5(wildcard='structTemplate_3_01void_01_4.xml')
+ self.run_doxygen(wildcard='structTemplate_3_01void_01_4.xml')
self.assertEqual(*self.actual_expected_contents('structTemplate_3_01void_01_4.html'))
def test_class_template_warnings(self):
- self.run_dox2html5(wildcard='structTemplateWarning.xml')
+ self.run_doxygen(wildcard='structTemplateWarning.xml')
self.assertEqual(*self.actual_expected_contents('structTemplateWarning.html'))
def test_function(self):
- self.run_dox2html5(wildcard='namespaceFoo.xml')
+ self.run_doxygen(wildcard='namespaceFoo.xml')
self.assertEqual(*self.actual_expected_contents('namespaceFoo.html'))
def test_enum(self):
- self.run_dox2html5(wildcard='namespaceEno.xml')
+ self.run_doxygen(wildcard='namespaceEno.xml')
self.assertEqual(*self.actual_expected_contents('namespaceEno.html'))
def test_function_enum_warnings(self):
- self.run_dox2html5(wildcard='namespaceWarning.xml')
+ self.run_doxygen(wildcard='namespaceWarning.xml')
self.assertEqual(*self.actual_expected_contents('namespaceWarning.html'))
def test_typedef(self):
- self.run_dox2html5(wildcard='namespaceType.xml')
+ self.run_doxygen(wildcard='namespaceType.xml')
self.assertEqual(*self.actual_expected_contents('namespaceType.html'))
def test_var(self):
- self.run_dox2html5(wildcard='namespaceVar.xml')
+ self.run_doxygen(wildcard='namespaceVar.xml')
self.assertEqual(*self.actual_expected_contents('namespaceVar.html'))
def test_define(self):
- self.run_dox2html5(wildcard='File_8h.xml')
+ self.run_doxygen(wildcard='File_8h.xml')
self.assertEqual(*self.actual_expected_contents('File_8h.html'))
class Ignored(IntegrationTestCase):
super().__init__(__file__, 'ignored', *args, **kwargs)
def test(self):
- self.run_dox2html5(index_pages=[], wildcard='*.xml')
+ self.run_doxygen(index_pages=[], wildcard='*.xml')
self.assertTrue(os.path.exists(os.path.join(self.path, 'html', 'classA.html')))
@unittest.expectedFailure
def test_empty_class_doc_not_generated(self):
# This needs to be generated in order to be compatible with tag files
- self.run_dox2html5(index_pages=[], wildcard='classBrief.xml')
+ self.run_doxygen(index_pages=[], wildcard='classBrief.xml')
self.assertFalse(os.path.exists(os.path.join(self.path, 'html', 'classBrief.html')))
class Warnings(IntegrationTestCase):
def test(self):
# Should warn that an export macro is present in the XML
- self.run_dox2html5(wildcard='namespaceMagnum.xml')
+ self.run_doxygen(wildcard='namespaceMagnum.xml')
self.assertEqual(*self.actual_expected_contents('namespaceMagnum.html'))
class Modules(IntegrationTestCase):
super().__init__(__file__, 'modules', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='*.xml')
+ self.run_doxygen(wildcard='*.xml')
self.assertEqual(*self.actual_expected_contents('group__group.html'))
self.assertEqual(*self.actual_expected_contents('group__group2.html'))
self.assertEqual(*self.actual_expected_contents('group__subgroup.html'))
super().__init__(__file__, 'deprecated', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='*.xml')
+ self.run_doxygen(wildcard='*.xml')
# Test that the [deprecated] label is in all places where it should ne
# Class tree
super().__init__(__file__, 'namespace_members_in_file_scope', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='namespaceNamespace.xml')
+ self.run_doxygen(wildcard='namespaceNamespace.xml')
# The namespace should have the detailed docs
self.assertEqual(*self.actual_expected_contents('namespaceNamespace.html'))
@unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.14"),
"https://github.com/doxygen/doxygen/pull/653")
def test_file(self):
- self.run_dox2html5(wildcard='File_8h.xml')
+ self.run_doxygen(wildcard='File_8h.xml')
# The file should have just links to detailed docs
self.assertEqual(*self.actual_expected_contents('File_8h.html'))
@unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.14"),
"https://github.com/doxygen/doxygen/pull/653")
def test(self):
- self.run_dox2html5(wildcard='File_8h.xml')
+ self.run_doxygen(wildcard='File_8h.xml')
# The file should have just links to detailed docs
self.assertEqual(*self.actual_expected_contents('File_8h.html'))
super().__init__(__file__, 'filename_case', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='*.xml')
+ self.run_doxygen(wildcard='*.xml')
# Verify that all filenames are "converted" to lowercase and the links
# and page tree work properly as well
super().__init__(__file__, 'crazy_template_params', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='*.xml')
+ self.run_doxygen(wildcard='*.xml')
# The file should have the whole template argument as a type
self.assertEqual(*self.actual_expected_contents('File_8h.html'))
super().__init__(__file__, 'includes', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='*.xml')
+ self.run_doxygen(wildcard='*.xml')
# The Contained namespace should have just the global include, the
# Spread just the local includes, the class a global include and the
super().__init__(__file__, 'includes_disabled', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='*.xml')
+ self.run_doxygen(wildcard='*.xml')
# No include information as SHOW_INCLUDE_FILES is disabled globally
self.assertEqual(*self.actual_expected_contents('namespaceContained.html'))
super().__init__(__file__, 'includes_undocumented_files', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='*.xml')
+ self.run_doxygen(wildcard='*.xml')
# The files are not documented, so there should be no include
# information -- practically the same output as when SHOW_INCLUDE_FILES
super().__init__(__file__, 'includes_templated', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='*.xml')
+ self.run_doxygen(wildcard='*.xml')
# All entries should have the includes next to the template
self.assertEqual(*self.actual_expected_contents('namespaceSpread.html'))
super().__init__(__file__, 'base_derived_in_root_namespace', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='*.xml')
+ self.run_doxygen(wildcard='*.xml')
# Shouldn't crash or anything
self.assertEqual(*self.actual_expected_contents('structNamespace_1_1BothBaseAndDerivedInRootNamespace.html'))
super().__init__(__file__, 'typography', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
class Blocks(IntegrationTestCase):
super().__init__(__file__, 'blocks', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='*.xml')
+ self.run_doxygen(wildcard='*.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
# Multiple xrefitems should be merged into one
self.assertEqual(*self.actual_expected_contents('File_8h.html'))
@unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.14"),
"https://github.com/doxygen/doxygen/pull/6587 fucking broke this")
def test_xrefitem1814(self):
- self.run_dox2html5(wildcard='*.xml')
+ self.run_doxygen(wildcard='*.xml')
self.assertEqual(*self.actual_expected_contents('todo.html'))
self.assertEqual(*self.actual_expected_contents('old.html'))
@unittest.skipUnless(LooseVersion(doxygen_version()) <= LooseVersion("1.8.14"),
"https://github.com/doxygen/doxygen/pull/6587 fucking broke this")
def test_xrefitem(self):
- self.run_dox2html5(wildcard='*.xml')
+ self.run_doxygen(wildcard='*.xml')
self.assertEqual(*self.actual_expected_contents('todo.html', 'todo_1814.html'))
self.assertEqual(*self.actual_expected_contents('old.html', 'old_1814.html'))
super().__init__(__file__, 'internal', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
class Code(IntegrationTestCase):
super().__init__(__file__, 'code', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
def test_warnings(self):
- self.run_dox2html5(wildcard='warnings.xml')
+ self.run_doxygen(wildcard='warnings.xml')
self.assertEqual(*self.actual_expected_contents('warnings.html'))
class CodeLanguage(IntegrationTestCase):
@unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.13"),
"https://github.com/doxygen/doxygen/pull/621")
def test(self):
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
@unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.13"),
"https://github.com/doxygen/doxygen/pull/623")
def test_ansi(self):
- self.run_dox2html5(wildcard='ansi.xml')
+ self.run_doxygen(wildcard='ansi.xml')
self.assertEqual(*self.actual_expected_contents('ansi.html'))
@unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.13"),
"https://github.com/doxygen/doxygen/pull/621")
def test_warnings(self):
- self.run_dox2html5(wildcard='warnings.xml')
+ self.run_doxygen(wildcard='warnings.xml')
self.assertEqual(*self.actual_expected_contents('warnings.html'))
class Image(IntegrationTestCase):
super().__init__(__file__, 'image', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
self.assertTrue(os.path.exists(os.path.join(self.path, 'html', 'tiny.png')))
def test_warnings(self):
- self.run_dox2html5(wildcard='warnings.xml')
+ self.run_doxygen(wildcard='warnings.xml')
self.assertEqual(*self.actual_expected_contents('warnings.html'))
@unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.15"),
"fully fixed after 1:8.15")
def test_imagelink(self):
- self.run_dox2html5(wildcard='imagelink.xml')
+ self.run_doxygen(wildcard='imagelink.xml')
self.assertEqual(*self.actual_expected_contents('imagelink.html'))
class Math(IntegrationTestCase):
@unittest.skipUnless(shutil.which('latex'),
"Math rendering requires LaTeX installed")
def test(self):
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
@unittest.skipUnless(shutil.which('latex'),
"Math rendering requires LaTeX installed")
def test_latex_error(self):
with self.assertRaises(subprocess.CalledProcessError) as context:
- self.run_dox2html5(wildcard='error.xml')
+ self.run_doxygen(wildcard='error.xml')
class MathCached(IntegrationTestCase):
def __init__(self, *args, **kwargs):
with open(os.path.join(self.path, 'xml/math.cache'), 'wb') as f:
pickle.dump(math_cache, f)
- self.run_dox2html5(wildcard='math.xml')
+ self.run_doxygen(wildcard='math.xml')
self.assertEqual(*self.actual_expected_contents('math.html'))
# Expect that after the operation the global cache age is bumped,
with open(os.path.join(self.path, 'xml/math.cache'), 'wb') as f:
pickle.dump((1337, 0, {"something different"}), f)
- self.run_dox2html5(wildcard='math-uncached.xml')
+ self.run_doxygen(wildcard='math-uncached.xml')
with open(os.path.join(self.path, 'math.html')) as f:
expected_contents = f.read().strip()
shutil.rmtree(os.path.join(self.path, 'xml/math.cache'))
# Processing without any math
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
# There should be no file generated
self.assertFalse(os.path.exists(os.path.join(self.path, 'xml/math.cache')))
super().__init__(__file__, 'tagfile', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
class Custom(IntegrationTestCase):
super().__init__(__file__, 'custom', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
@unittest.skipUnless(shutil.which('latex'),
"Math rendering requires LaTeX installed")
def test_math(self):
- self.run_dox2html5(wildcard='math.xml')
+ self.run_doxygen(wildcard='math.xml')
self.assertEqual(*self.actual_expected_contents('math.html'))
@unittest.skipUnless(LooseVersion(dot_version()) >= LooseVersion("2.40.1"),
"Dot < 2.40.1 has a completely different output.")
def test_dot(self):
- self.run_dox2html5(wildcard='dot.xml')
+ self.run_doxygen(wildcard='dot.xml')
self.assertEqual(*self.actual_expected_contents('dot.html'))
@unittest.skipUnless(LooseVersion(dot_version()) < LooseVersion("2.40.1") and
LooseVersion(dot_version()) >= LooseVersion("2.38.0"),
"Dot < 2.38 and dot > 2.38 has a completely different output.")
def test_dot238(self):
- self.run_dox2html5(wildcard='dot.xml')
+ self.run_doxygen(wildcard='dot.xml')
self.assertEqual(*self.actual_expected_contents('dot.html', 'dot-238.html'))
@unittest.skipUnless(LooseVersion(dot_version()) < LooseVersion("2.38.0"),
"Dot > 2.36 has a completely different output.")
def test_dot236(self):
- self.run_dox2html5(wildcard='dot.xml')
+ self.run_doxygen(wildcard='dot.xml')
self.assertEqual(*self.actual_expected_contents('dot.html', 'dot-236.html'))
class ParseError(BaseTestCase):
super().__init__(__file__, 'parse_error', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='broken.xml')
+ self.run_doxygen(wildcard='broken.xml')
# The index file should be generated, no abort
self.assertTrue(os.path.exists(os.path.join(self.path, 'html', 'index.html')))
super().__init__(__file__, 'autobrief_cpp_comments', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='File_8h.xml')
+ self.run_doxygen(wildcard='File_8h.xml')
self.assertEqual(*self.actual_expected_contents('File_8h.html'))
# JAVADOC_AUTOBRIEF should be nuked from orbit. Or implemented from scratch,
@unittest.skipUnless(LooseVersion(doxygen_version()) < LooseVersion("1.8.15"),
"1.8.15 doesn't put <hruler> into <briefdescription> anymore")
def test(self):
- self.run_dox2html5(wildcard='namespaceNamespace.xml')
+ self.run_doxygen(wildcard='namespaceNamespace.xml')
self.assertEqual(*self.actual_expected_contents('namespaceNamespace.html'))
class AutobriefMultiline(IntegrationTestCase):
super().__init__(__file__, 'autobrief_multiline', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='namespaceNamespace.xml')
+ self.run_doxygen(wildcard='namespaceNamespace.xml')
self.assertEqual(*self.actual_expected_contents('namespaceNamespace.html'))
class AutobriefHeading(IntegrationTestCase):
@unittest.skipUnless(LooseVersion(doxygen_version()) < LooseVersion("1.8.15"),
"1.8.15 doesn't put <heading> into <briefdescription> anymore")
def test(self):
- self.run_dox2html5(wildcard='namespaceNamespace.xml')
+ self.run_doxygen(wildcard='namespaceNamespace.xml')
self.assertEqual(*self.actual_expected_contents('namespaceNamespace.html'))
class SectionUnderscoreOne(IntegrationTestCase):
super().__init__(__file__, 'section_underscore_one', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
class SectionsHeadings(IntegrationTestCase):
super().__init__(__file__, 'sections_headings', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
def test_warnings(self):
- self.run_dox2html5(wildcard='warnings.xml')
+ self.run_doxygen(wildcard='warnings.xml')
self.assertEqual(*self.actual_expected_contents('warnings.html'))
def test_functions(self):
- self.run_dox2html5(wildcard='File_8h.xml')
+ self.run_doxygen(wildcard='File_8h.xml')
self.assertEqual(*self.actual_expected_contents('File_8h.html'))
class AnchorInBothGroupAndNamespace(IntegrationTestCase):
super().__init__(__file__, 'anchor_in_both_group_and_namespace', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='*.xml')
+ self.run_doxygen(wildcard='*.xml')
self.assertEqual(*self.actual_expected_contents('namespaceFoo.html'))
self.assertEqual(*self.actual_expected_contents('group__fizzbuzz.html'))
super().__init__(__file__, 'anchor_html_no_prefix_bug', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='some-long-page-name.xml')
+ self.run_doxygen(wildcard='some-long-page-name.xml')
self.assertEqual(*self.actual_expected_contents('some-long-page-name.html'))
class UnexpectedSections(IntegrationTestCase):
super().__init__(__file__, 'unexpected_sections', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='File_8h.xml')
+ self.run_doxygen(wildcard='File_8h.xml')
self.assertEqual(*self.actual_expected_contents('File_8h.html'))
class Dot(IntegrationTestCase):
@unittest.skipUnless(LooseVersion(dot_version()) >= LooseVersion("2.40.1"),
"Dot < 2.40.1 has a completely different output.")
def test(self):
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
@unittest.skipUnless(LooseVersion(dot_version()) < LooseVersion("2.40.1"),
"Dot < 2.40.1 has a completely different output.")
def test_238(self):
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html', 'index-238.html'))
def test_warnings(self):
- self.run_dox2html5(wildcard='warnings.xml')
+ self.run_doxygen(wildcard='warnings.xml')
self.assertEqual(*self.actual_expected_contents('warnings.html'))
class Htmlinclude(IntegrationTestCase):
super().__init__(__file__, 'htmlinclude', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
def test_warnings(self):
- self.run_dox2html5(wildcard='warnings.xml')
+ self.run_doxygen(wildcard='warnings.xml')
self.assertEqual(*self.actual_expected_contents('warnings.html'))
class BriefMultilineIngroup(IntegrationTestCase):
super().__init__(__file__, 'brief_multiline_ingroup', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='group__thatgroup.xml')
+ self.run_doxygen(wildcard='group__thatgroup.xml')
self.assertEqual(*self.actual_expected_contents('group__thatgroup.html'))
from distutils.version import LooseVersion
-from test import IntegrationTestCase, doxygen_version
+from . import IntegrationTestCase, doxygen_version
class EnumClass(IntegrationTestCase):
def __init__(self, *args, **kwargs):
@unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.13"),
"https://github.com/doxygen/doxygen/pull/627")
def test(self):
- self.run_dox2html5(wildcard='File_8h.xml')
+ self.run_doxygen(wildcard='File_8h.xml')
self.assertEqual(*self.actual_expected_contents('File_8h.html'))
class TemplateAlias(IntegrationTestCase):
@unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.13"),
"https://github.com/doxygen/doxygen/pull/626")
def test(self):
- self.run_dox2html5(wildcard='*.xml')
+ self.run_doxygen(wildcard='*.xml')
self.assertEqual(*self.actual_expected_contents('File_8h.html'))
self.assertEqual(*self.actual_expected_contents('structTemplate.html'))
super().__init__(__file__, 'derived', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='*.xml')
+ self.run_doxygen(wildcard='*.xml')
self.assertEqual(*self.actual_expected_contents('classNamespace_1_1A.html'))
self.assertEqual(*self.actual_expected_contents('classNamespace_1_1PrivateBase.html'))
self.assertEqual(*self.actual_expected_contents('classAnother_1_1ProtectedBase.html'))
@unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.13"),
"1.8.13 produces invalid XML for friend declarations")
def test(self):
- self.run_dox2html5(wildcard='class*.xml')
+ self.run_doxygen(wildcard='class*.xml')
self.assertEqual(*self.actual_expected_contents('classClass.html'))
self.assertEqual(*self.actual_expected_contents('classTemplate.html'))
super().__init__(__file__, 'signals_slots', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='classClass.xml')
+ self.run_doxygen(wildcard='classClass.xml')
self.assertEqual(*self.actual_expected_contents('classClass.html'))
class VariableTemplate(IntegrationTestCase):
super().__init__(__file__, 'variable_template', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='*.xml')
+ self.run_doxygen(wildcard='*.xml')
self.assertEqual(*self.actual_expected_contents('structFoo.html'))
self.assertEqual(*self.actual_expected_contents('structBar.html'))
super().__init__(__file__, 'function_attributes', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='*.xml')
+ self.run_doxygen(wildcard='*.xml')
self.assertEqual(*self.actual_expected_contents('structFoo.html'))
self.assertEqual(*self.actual_expected_contents('classBase.html'))
self.assertEqual(*self.actual_expected_contents('classDerived.html'))
super().__init__(__file__, 'function_attributes_nospace', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='structFoo.xml')
+ self.run_doxygen(wildcard='structFoo.xml')
self.assertEqual(*self.actual_expected_contents('structFoo.html'))
import subprocess
import unittest
-from dox2html5 import parse_doxyfile, State
+from doxygen import parse_doxyfile, State
from . import BaseTestCase
def test(self):
state = State()
- parse_doxyfile(state, 'test/doxyfile/Doxyfile')
+ parse_doxyfile(state, 'test_doxygen/doxyfile/Doxyfile')
self.assertEqual(state.doxyfile, {
'DOT_FONTNAME': 'Helvetica',
'DOT_FONTSIZE': 10,
def test_subdirs(self):
state = State()
with self.assertRaises(NotImplementedError):
- parse_doxyfile(state, 'test/doxyfile/Doxyfile-subdirs')
+ parse_doxyfile(state, 'test_doxygen/doxyfile/Doxyfile-subdirs')
class Upgrade(BaseTestCase):
def __init__(self, *args, **kwargs):
from distutils.version import LooseVersion
-from test import IntegrationTestCase, doxygen_version
+from . import IntegrationTestCase, doxygen_version
class Example(IntegrationTestCase):
def __init__(self, *args, **kwargs):
super().__init__(__file__, '', *args, **kwargs)
def test_cpp(self):
- self.run_dox2html5(index_pages=[], wildcard='*.xml')
+ self.run_doxygen(index_pages=[], wildcard='*.xml')
self.assertEqual(*self.actual_expected_contents('path-prefix_2configure_8h_8cmake-example.html'))
self.assertEqual(*self.actual_expected_contents('path-prefix_2main_8cpp-example.html'))
@unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.13"),
"needs to have file extension exposed in the XML")
def test_other(self):
- self.run_dox2html5(index_pages=[], wildcard='*.xml')
+ self.run_doxygen(index_pages=[], wildcard='*.xml')
self.assertEqual(*self.actual_expected_contents('path-prefix_2CMakeLists_8txt-example.html'))
self.assertEqual(*self.actual_expected_contents('a_8txt-example.html'))
import os
import subprocess
-from test import BaseTestCase
+from . import BaseTestCase
class Layout(BaseTestCase):
def __init__(self, *args, **kwargs):
super().__init__(__file__, '', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='index.xml')
+ self.run_doxygen(wildcard='index.xml')
self.assertEqual(*self.actual_expected_contents('pages.html'))
self.assertTrue(os.path.exists(os.path.join(self.path, 'html', 'm-dark+doxygen.compiled.css')))
self.assertTrue(os.path.exists(os.path.join(self.path, 'html', 'search.js')))
os.remove(os.path.join(self.path, 'Doxyfile'))
subprocess.run(['doxygen', '-g'], cwd=self.path)
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
class Minimal(BaseTestCase):
super().__init__(__file__, 'minimal', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
class TemplateFallback(BaseTestCase):
super().__init__(__file__, 'template_fallback', *args, **kwargs)
def test(self):
- self.run_dox2html5(templates=self.path, wildcard='indexpage.xml')
+ self.run_doxygen(templates=self.path, wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
class NavbarSingleColumn(BaseTestCase):
super().__init__(__file__, 'navbar_single_column', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
class NavbarHtml(BaseTestCase):
super().__init__(__file__, 'navbar_html', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
class NavbarMainProjectUrl(BaseTestCase):
super().__init__(__file__, 'navbar_main_project_url', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
class SearchBinary(BaseTestCase):
super().__init__(__file__, 'search_binary', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
self.assertTrue(os.path.exists(os.path.join(self.path, 'html', 'searchdata.bin')))
super().__init__(__file__, 'search_opensearch', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
- # Renamed with a HTML extension so dox2html5's metadata parser doesn't
+ # Renamed with a HTML extension so doxygen.py's metadata parser doesn't
# pick it up
self.assertEqual(*self.actual_expected_contents('opensearch.xml', 'opensearch.xml.html'))
from distutils.version import LooseVersion
-from test import IntegrationTestCase, doxygen_version
+from . import IntegrationTestCase, doxygen_version
class Order(IntegrationTestCase):
def __init__(self, *args, **kwargs):
super().__init__(__file__, 'order', *args, **kwargs)
def test(self):
- self.run_dox2html5(index_pages=['pages'], wildcard='index.xml')
+ self.run_doxygen(index_pages=['pages'], wildcard='index.xml')
self.assertEqual(*self.actual_expected_contents('pages.html'))
class Brief(IntegrationTestCase):
@unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.13"),
"https://github.com/doxygen/doxygen/pull/624")
def test(self):
- self.run_dox2html5(wildcard='*.xml')
+ self.run_doxygen(wildcard='*.xml')
self.assertEqual(*self.actual_expected_contents('pages.html'))
self.assertEqual(*self.actual_expected_contents('page-a.html'))
self.assertEqual(*self.actual_expected_contents('page-b.html'))
@unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.13"),
"https://github.com/doxygen/doxygen/pull/625")
def test(self):
- self.run_dox2html5(wildcard='page-toc.xml')
+ self.run_doxygen(wildcard='page-toc.xml')
self.assertEqual(*self.actual_expected_contents('page-toc.html'))
class InNavbar(IntegrationTestCase):
super().__init__(__file__, 'in_navbar', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='page*.xml')
+ self.run_doxygen(wildcard='page*.xml')
self.assertEqual(*self.actual_expected_contents('page-in-navbar.html'))
self.assertEqual(*self.actual_expected_contents('page-b.html'))
super().__init__(__file__, 'footernavigation', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='subpage*.xml')
+ self.run_doxygen(wildcard='subpage*.xml')
self.assertEqual(*self.actual_expected_contents('subpage1.html'))
self.assertEqual(*self.actual_expected_contents('subpage2.html'))
super().__init__(__file__, 'empty_index', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='indexpage.xml')
+ self.run_doxygen(wildcard='indexpage.xml')
self.assertEqual(*self.actual_expected_contents('index.html'))
class EmptyTitle(IntegrationTestCase):
super().__init__(__file__, 'empty_title', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='untitled.xml')
+ self.run_doxygen(wildcard='untitled.xml')
self.assertEqual(*self.actual_expected_contents('untitled.html'))
class SubpageOfIndex(IntegrationTestCase):
super().__init__(__file__, 'subpage_of_index', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='*.xml')
+ self.run_doxygen(wildcard='*.xml')
self.assertEqual(*self.actual_expected_contents('page.html'))
self.assertEqual(*self.actual_expected_contents('pages.html'))
import unittest
from types import SimpleNamespace as Empty
-from dox2html5 import Trie, ResultMap, ResultFlag, serialize_search_data, search_data_header_struct
+from doxygen import Trie, ResultMap, ResultFlag, serialize_search_data, search_data_header_struct
-from . import IntegrationTestCase
+from test_doxygen import IntegrationTestCase
def _pretty_print_trie(serialized: bytearray, hashtable, stats, base_offset, indent, show_merged, show_lookahead_barriers, color_map) -> str:
# Visualize where the trees were merged
super().__init__(__file__, '', *args, **kwargs)
def test(self):
- self.run_dox2html5(index_pages=[], wildcard='*.xml')
+ self.run_doxygen(index_pages=[], wildcard='*.xml')
with open(os.path.join(self.path, 'html', 'searchdata.bin'), 'rb') as f:
serialized = f.read()
super().__init__(__file__, 'long_suffix_length', *args, **kwargs)
def test(self):
- self.run_dox2html5(index_pages=[], wildcard='*.xml')
+ self.run_doxygen(index_pages=[], wildcard='*.xml')
with open(os.path.join(self.path, 'html', 'searchdata.bin'), 'rb') as f:
serialized = f.read()
import os
-from dox2html5 import search_data_header_struct
+from doxygen import search_data_header_struct
from . import IntegrationTestCase
super().__init__(__file__, '', *args, **kwargs)
def test(self):
- self.run_dox2html5(wildcard='*.xml')
+ self.run_doxygen(wildcard='*.xml')
# The index pages should be full
self.assertEqual(*self.actual_expected_contents('annotated.html'))
import unittest
import html
-from dox2html5 import add_wbr, fix_type_spacing
+from doxygen import add_wbr, fix_type_spacing
class Utility(unittest.TestCase):
def test_add_wbr(self):
+++ /dev/null
-test/*/html/
-test/*/xml/
-test/layout_generated_doxyfile/Doxyfile
-!test/layout_generated_doxyfile/xml/
-node_modules/
-test/package-lock.json
# Test doxygen theme. Math rendering is not tested as dvisvgm on 14.04 is
# unusable.
- - if [ "$WITH_DOXYGEN" == "ON" ]; then cd $TRAVIS_BUILD_DIR/doxygen && coverage run -m unittest && cp .coverage ../.coverage.doxygen; fi
+ - if [ "$WITH_DOXYGEN" == "ON" ]; then cd $TRAVIS_BUILD_DIR/documentation && coverage run -m unittest && cp .coverage ../.coverage.doxygen; fi
# Test client doxygen JS
- - if [ "$WITH_NODE" == "ON" ]; then cd $TRAVIS_BUILD_DIR && istanbul cover doxygen/test/test-search.js; fi
+ - if [ "$WITH_NODE" == "ON" ]; then cd $TRAVIS_BUILD_DIR && istanbul cover documentation/test_doxygen/test-search.js; fi
# Test that compiled CSS is up-to-date. First display the diff, then check
# with diff-index which should print what's wrong and return with non-zero
import latex2svg
-# Extracted common code used by both dox2html5.py and the m.math plugin to
-# avoid dependency of dox2html5.py on Pelican
+# Extracted common code used by both doxygen.py and the m.math plugin to
+# avoid dependency of doxygen.py on Pelican
# Modified params to use for math rendering
params = latex2svg.default_params.copy()
<p>Inline code is here: <code class="cpp m-code"><span class="k">constexpr</span></code>. Code without a language should be
rendered as plain monospace text: <code>code</code>.</p>
<pre class="m-console">!<span class="g g-AnsiBlue">[</span><span class="g g-AnsiBrightWhite">mosra@don-perverzo </span><span class="g g-AnsiWhite">m.css</span><span class="g g-AnsiBlue">]</span><span class="g g-AnsiBrightCyan">$ </span>ls
-CONTRIBUTING.rst CREDITS.rst <span class="g g-AnsiBrightBlue">doc</span> <span class="g g-AnsiBrightBlue">plugins</span> README.rst
-COPYING <span class="g g-AnsiBrightBlue">css</span> <span class="g g-AnsiBrightBlue">doxygen</span> <span class="g g-AnsiBrightBlue">pelican-theme</span> <span class="g g-AnsiBrightBlue">site</span></pre>
+CONTRIBUTING.rst CREDITS.rst <span class="g g-AnsiBrightBlue">doc</span> <span class="g g-AnsiBrightBlue">plugins</span> README.rst
+COPYING <span class="g g-AnsiBrightBlue">css</span> <span class="g g-AnsiBrightBlue">documentation</span> <span class="g g-AnsiBrightBlue">pelican-theme</span> <span class="g g-AnsiBrightBlue">site</span></pre>
<pre class="m-code">// this language is not highlighted</pre>
<p>Properly preserve backslashes: <code class="m-code"><span class="k">\frac</span><span class="nb">{</span>a<span class="nb">}{</span>b<span class="nb">}</span></code></p>
<p>Don't trim leading spaces in blocks:</p>