Source code for testing.tests.configs_tree_view_data

# -*- coding: utf8 -*-
########################################################################################
# This file is part of exhale.  Copyright (c) 2017-2024, Stephen McDowell.             #
# Full BSD 3-Clause license available here:                                            #
#                                                                                      #
#                https://github.com/svenevs/exhale/blob/master/LICENSE                 #
########################################################################################
"""
Helper module for :mod:`~testing.tests.configs_tree_view`.

Defines :data:`class_hierarchy_ground_truth` and :data:`file_hierarchy_ground_truth`
here for convenience, and to hide away the dubious nature by which these tests are
validated.
"""
import platform
from pathlib import Path

this_file_dir = Path(__file__).parent.absolute()
"""The path to the directory containing this file."""

class_data_root = this_file_dir / "classes"
"""The class view hierarchy test validation data root for tree view."""

file_data_root = this_file_dir / "files"
"""The file view hierarchy test validation root for tree view."""

tree_view_keys = {"default_rst_list", "collapsible_lists", "bootstrap"}
"""Available kinds of tree views to validate against."""


[docs] def read_default_data(root: Path, file_name: str, is_html: bool) -> str: """ Open, read, and return the contents of the file ``{root}/{file_name}``. If the default data being read is html (collapsible lists and bootstrap), underscores in the refid need to be replaced with dashes since the link generated follows an html anchor (``#``). The stored data files include the unix doxygen refids, on windows they are replaced with the expected refid. Doxygen only seems to differ on the platforms when there is nesting / specialization occurring. The tree view tests are validating against the ``cpp_nesting`` project which has a large amount of this going on. """ # First elem: unix refid, second item: windows refid. # NOTE: order matters!!! You must replace the nested ones first before their # parent otherwise the parent one will break the nested unix item. unix_to_windows_refid_map = [ ( "structspecial_1_1complex_1_1Fold", "structspecial_1_1complex_1_1_fold" ), ################################################################################ ( "structspecial_1_1complex_1_1has__type__member_3_01T_00_01void__t_3_01typename_01T_1_1type_01_4_01_4", # noqa: E501 "structspecial_1_1complex_1_1has__type__member_3_01_t_00_01void__t_3_01typename_01_t_1_1type_01_4_01_4", # noqa: E501 ), ################################################################################ ( "structspecial_1_1complex_1_1IntPtr", "structspecial_1_1complex_1_1_int_ptr" ), ( "structspecial_1_1complex_1_1IntRef", "structspecial_1_1complex_1_1_int_ref" ), ################################################################################ ( "structspecial_1_1unique_1_1snowflake_1_1Ontology_3_0111_01_4", "structspecial_1_1unique_1_1snowflake_1_1_ontology_3_0111_01_4" ), ( "structspecial_1_1unique_1_1snowflake_1_1Ontology", "structspecial_1_1unique_1_1snowflake_1_1_ontology" ), ################################################################################ ( "structspecial_1_1unique_1_1Nonsense_3_0111_00_01snowflake_1_1Ontology_3_0111_01_4_01_4", "structspecial_1_1unique_1_1Nonsense_3_0111_00_01snowflake_1_1_ontology_3_0111_01_4_01_4" ), ( "structspecial_1_1unique_1_1Nonsense_3_01X_00_01snowflake_1_1Ontology_3_01X_01_4_01_4", "structspecial_1_1unique_1_1Nonsense_3_01_x_00_01snowflake_1_1_ontology_3_01_x_01_4_01_4" ), ( "structspecial_1_1unique_1_1Nonsense", "structspecial_1_1unique_1_1_nonsense" ), ################################################################################ ( "structspecial_1_1Base_3_012_01_4_1_1InnerTemplatedStruct_3_014_00_01dont__use__this_01_4", "structspecial_1_1Base_3_012_01_4_1_1_inner_templated_struct_3_014_00_01dont__use__this_01_4" ), ( "structspecial_1_1Base_3_012_01_4_1_1InnerTemplatedStruct", "structspecial_1_1Base_3_012_01_4_1_1_inner_templated_struct" ), ( "structspecial_1_1Base_3_012_01_4_1_1InnerStruct", "structspecial_1_1Base_3_012_01_4_1_1_inner_struct" ), ( "structspecial_1_1Base_3_012_01_4_1_1AnotherNestedStruct", "structspecial_1_1Base_3_012_01_4_1_1_another_nested_struct" ), ( "structspecial_1_1Base_3_012_01_4", "structspecial_1_1_base_3_012_01_4" ), ( "structspecial_1_1Base_1_1A", "structspecial_1_1Base_1_1_a" ), ( "structspecial_1_1Base", "structspecial_1_1_base" ), ################################################################################ ( "structspecial_1_1Normal_1_1Nested_1_1Like_1_1Usual", "structspecial_1_1Normal_1_1Nested_1_1Like_1_1_usual" ), ( "structspecial_1_1Normal_1_1Nested_1_1Like", "structspecial_1_1Normal_1_1Nested_1_1_like" ), ( "structspecial_1_1Normal_1_1Nested", "structspecial_1_1Normal_1_1_nested" ), ( "structspecial_1_1Normal", "structspecial_1_1_normal" ), ################################################################################ ( "classspecial_1_1ImageBuffer_3_01Image_3_011920_00_011080_01_4_00_01float_00_01128_01_4", "classspecial_1_1ImageBuffer_3_01_image_3_011920_00_011080_01_4_00_01float_00_01128_01_4" ), ( "classspecial_1_1ImageBuffer_3_01TImage_00_01Tdata__t_00_014_01_4", "classspecial_1_1ImageBuffer_3_01_t_image_00_01_tdata__t_00_014_01_4" ), ( "classspecial_1_1ImageBuffer", "classspecial_1_1_image_buffer" ), ################################################################################ ( "structspecial_1_1ImageBuffer_3_01Image_3_011920_00_011080_01_4_00_01float_00_01128_01_4_1_1Data", "structspecial_1_1Image_buffer_3_01_image_3_011920_00_011080_01_4_00_01float_00_01128_01_4_1_1_data" # noqa: E501 ), ( "structspecial_1_1ImageBuffer_3_01Image_3_011920_00_011080_01_4_00_01float_00_01128_01_4_1_1SomeThing", # noqa: E501 "structspecial_1_1Image_buffer_3_01_image_3_011920_00_011080_01_4_00_01float_00_01128_01_4_1_1_some_thing" # noqa: E501 ), ################################################################################ ( "structspecial_1_1ImageBuffer_3_01TImage_00_01Tdata__t_00_014_01_4_1_1Data", "structspecial_1_1Image_buffer_3_01_t_image_00_01_tdata__t_00_014_01_4_1_1_data" ), ( "structspecial_1_1ImageBuffer_3_01TImage_00_01Tdata__t_00_014_01_4_1_1SomeThing", "structspecial_1_1Image_buffer_3_01_t_image_00_01_tdata__t_00_014_01_4_1_1_some_thing" ), ################################################################################ ( "structspecial_1_1ImageBuffer_1_1Data", "structspecial_1_1_image_buffer_1_1_data" ), ( "structspecial_1_1ImageBuffer_1_1SomeThing", "structspecial_1_1_image_buffer_1_1_some_thing" ), ################################################################################ ( "structspecial_1_1Image", "structspecial_1_1_image" ), ] with open(root / file_name) as f: contents = f.read() if platform.system() in {"Darwin", "Windows"}: for unix_refid, windows_refid in unix_to_windows_refid_map: # For html, two replacements are needed. The generated page is named as # {refid}.html with underscores in tact, but the anchor names are #{refid} # with underscores as hyphens. contents = contents.replace(unix_refid, windows_refid) if is_html: # Anchors transform __ to _ and then - first. unix_anchor = unix_refid.replace("__", "_").replace("_", "-") windows_anchor = windows_refid.replace("__", "_").replace("_", "-") contents = contents.replace(unix_anchor, windows_anchor) return contents
class_hierarchy_ground_truth = { k: read_default_data(class_data_root, f"{k}.txt", k != "default_rst_list") for k in tree_view_keys } """ Ground truth for the three versions of class hierarchies. Keys and what they represent: ``"default_rst_list"`` The reStructuredText list version (``createTreeView=False``). ``"collapsible_lists"`` The collapsible lists version of the tree view (raw html unordered list). ``"bootstrap"`` The bootstrap version of the tree view (raw JavaScript function returning json data). """ file_hierarchy_ground_truth = { k: read_default_data(file_data_root, f"{k}.txt", k != "default_rst_list") for k in tree_view_keys } """ Ground truth for the three versions of file hierarchies. Keys and what they represent: ``"default_rst_list"`` The reStructuredText list version (``createTreeView=False``). ``"collapsible_lists"`` The collapsible lists version of the tree view (raw html unordered list). ``"bootstrap"`` The bootstrap version of the tree view (raw JavaScript function returning json data). """