From cf7da1843c45a4c2df7a749f7886a2d2ba0ee92a Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 15 Apr 2024 19:25:40 +0200 Subject: Adding upstream version 7.2.6. Signed-off-by: Daniel Baumann --- tests/test_addnodes.py | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 tests/test_addnodes.py (limited to 'tests/test_addnodes.py') diff --git a/tests/test_addnodes.py b/tests/test_addnodes.py new file mode 100644 index 0000000..184a696 --- /dev/null +++ b/tests/test_addnodes.py @@ -0,0 +1,51 @@ +"""Test the non-trivial features in the :mod:`sphinx.addnodes` module.""" + +from __future__ import annotations + +import pytest + +from sphinx import addnodes + + +@pytest.fixture() +def sig_elements() -> set[type[addnodes.desc_sig_element]]: + """Fixture returning the current ``addnodes.SIG_ELEMENTS`` set.""" + original = addnodes.SIG_ELEMENTS.copy() # safe copy of the current nodes + yield {*addnodes.SIG_ELEMENTS} # temporary value to use during tests + addnodes.SIG_ELEMENTS = original # restore the previous value + + +def test_desc_sig_element_nodes(sig_elements): + """Test the registration of ``desc_sig_element`` subclasses.""" + + # expected desc_sig_* node classes (must be declared *after* reloading + # the module since otherwise the objects are not the correct ones) + EXPECTED_SIG_ELEMENTS = { + addnodes.desc_sig_space, + addnodes.desc_sig_name, + addnodes.desc_sig_operator, + addnodes.desc_sig_punctuation, + addnodes.desc_sig_keyword, + addnodes.desc_sig_keyword_type, + addnodes.desc_sig_literal_number, + addnodes.desc_sig_literal_string, + addnodes.desc_sig_literal_char, + } + + assert addnodes.SIG_ELEMENTS == EXPECTED_SIG_ELEMENTS + + # create a built-in custom desc_sig_element (added to SIG_ELEMENTS) + class BuiltInSigElementLikeNode(addnodes.desc_sig_element, _sig_element=True): + pass + + # create a custom desc_sig_element (implicitly not added to SIG_ELEMENTS) + class Custom1SigElementLikeNode(addnodes.desc_sig_element): + pass + + # create a custom desc_sig_element (explicitly not added to SIG_ELEMENTS) + class Custom2SigElementLikeNode(addnodes.desc_sig_element, _sig_element=False): + pass + + assert BuiltInSigElementLikeNode in addnodes.SIG_ELEMENTS + assert Custom1SigElementLikeNode not in addnodes.SIG_ELEMENTS + assert Custom2SigElementLikeNode not in addnodes.SIG_ELEMENTS -- cgit v1.2.3