• Bug#1107077: kalamine autopkg test fails with libxml 2.14.x from experi

    From Matthias Klose@21:1/5 to All on Sun Jun 1 12:10:01 2025
    Package: src:kalamine
    Version: 0.38-3
    Tags: ftbfs sid forky
    User: debian-xml-sgml-pkgs@lists.alioth.debian.org
    Usertags: libxml2.14

    [this bug is NOT targeted to the upcoming trixie release]

    Note, that lxml also needs to be built with libxml 2.14.x from experimental.

    [...]
    79s python3.13 -m pytest
    80s ============================= test session starts ==============================
    80s platform linux -- Python 3.13.3, pytest-8.3.5, pluggy-1.5.0
    80s rootdir: /tmp/autopkgtest.V306QQ/autopkgtest_tmp
    80s plugins: typeguard-4.4.2
    80s collected 19 items
    80s
    80s tests/test_macos.py F
    [ 5%]
    80s tests/test_parser.py ...
    [ 21%]
    80s tests/test_serializer_ahk.py ...
    [ 36%]
    80s tests/test_serializer_keylayout.py ...
    [ 52%]
    80s tests/test_serializer_klc.py ......
    [ 84%]
    80s tests/test_serializer_xkb.py ...
    [100%]
    80s
    80s =================================== FAILURES ===================================
    80s _______________________________ test_keylayouts ________________________________
    80s
    80s def test_keylayouts():
    80s > check_keylayout("q-ansi")
    80s
    80s tests/test_macos.py:82:
    80s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    _ _ _ _ _ _ _
    80s
    80s filename = 'q-ansi'
    80s
    80s def check_keylayout(filename: str):
    80s path = Path(__file__).parent.parent / f"dist/{filename}.keylayout"
    80s tree = etree.parse(path, etree.XMLParser(recover=True))
    80s dead_keys = []
    80s
    80s # check all keymaps/layers: base, shift, caps, option, option+shift
    80s for keymap_index in range(5):
    80s keymap_query = f'//keyMap[@index="{keymap_index}"]'
    80s keymap = tree.xpath(keymap_query)
    80s assert len(keymap) == 1, f"{keymap_query} should be
    unique"
    80s
    80s # check all key codes for this keymap / layer
    80s # (the key codes below are not used, I don't know why)
    80s excluded_keys = [
    80s 54,
    80s 55,
    80s 56,
    80s 57,
    80s 58,
    80s 59,
    80s 60,
    80s 61,
    80s 62,
    80s 63,
    80s 68,
    80s 73,
    80s 74,
    80s 90,
    80s 93,
    80s 94,
    80s 95,
    80s ]
    80s for key_index in range(126):
    80s if key_index in excluded_keys:
    80s continue
    80s
    80s # ensure the key is defined and unique
    80s key_query = f'{keymap_query}/key[@code="{key_index}"]'
    80s key = tree.xpath(key_query)
    80s assert len(key) == 1, f"{key_query} should be unique"
    80s
    80s # ensure the key has either a direct output or a
    valid action
    80s action_id = key[0].get("action")
    80s if action_id:
    80s if action_id.startswith("dead_"):
    80s dead_keys.append(action_id[5:])
    80s action_query =
    f'//actions/action[@id="{action_id}"]'
    80s action = tree.xpath(action_query)
    80s assert len(action) == 1, f"{action_query}
    should be unique"
    80s assert (
    80s len(action_id) > 1
    80s ), f"{key_query} should have a multi-char
    action ID"
    80s else:
    80s assert (
    80s > len(key[0].get("output")) <= 1
    80s ), f"{key_query} should have a one-char output"
    80s E TypeError: object of type 'NoneType' has no len()
    80s
    80s tests/test_macos.py:60: TypeError
    80s =========================== short test summary info ============================

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)