diff options
author | Ville Skyttä <ville.skytta@iki.fi> | 2020-12-26 18:33:08 +0200 |
---|---|---|
committer | Ville Skyttä <ville.skytta@iki.fi> | 2020-12-26 18:37:04 +0200 |
commit | 30bcd7d550a9ae1fd94ad51561448e5becc42446 (patch) | |
tree | ddb166c5f464592bcfb333d3e45f2901861df721 | |
parent | c01eaf59e637dcf825725e7d4d2c83a7b2b17804 (diff) | |
download | shared-mime-info-30bcd7d550a9ae1fd94ad51561448e5becc42446.tar.gz |
tests/test_case.py: new spelling case test
-rw-r--r-- | tests/meson.build | 5 | ||||
-rwxr-xr-x | tests/test_case.py | 45 |
2 files changed, 50 insertions, 0 deletions
diff --git a/tests/meson.build b/tests/meson.build index 7ee6559c..a3d00c7a 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -37,6 +37,11 @@ test('No duplicate mime-types', args: freedesktop_org_xml, ) +test('Single spelling case', + find_program('test_case.py'), + args: freedesktop_org_xml, +) + test('Sanity check sub-class-of', find_program('test_sub_class_ofs.py'), args: freedesktop_org_xml, diff --git a/tests/test_case.py b/tests/test_case.py new file mode 100755 index 00000000..3235476b --- /dev/null +++ b/tests/test_case.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 + +from collections import defaultdict +import itertools +import sys +import xml.etree.ElementTree as ET + +FDO_XMLNS = "{http://www.freedesktop.org/standards/shared-mime-info}" + + +def test_case(fdo_xml: str) -> int: + + with open(fdo_xml, "rb") as f: + tree = ET.parse(f) + + errors = 0 + + types = defaultdict(set) + for elem in itertools.chain( + tree.findall(f"{FDO_XMLNS}mime-type"), + tree.findall(f"{FDO_XMLNS}mime-type/{FDO_XMLNS}alias"), + tree.findall(f"{FDO_XMLNS}mime-type/{FDO_XMLNS}sub-class-of"), + ): + type_ = elem.attrib["type"] + types[type_.lower()].add(type_) + assert types + + for type_, spellings in types.items(): + if len(spellings) != 1: + print( + f"{fdo_xml}: multiple spellings differing only by case " + f"for {', '.join(sorted(spellings))}", + file=sys.stderr, + ) + errors += 1 + + return errors + + +if __name__ == "__main__": + if len(sys.argv) != 2: + print(f"Usage: {__file__} FREEDESKTOP_ORG_XML", file=sys.stderr) + sys.exit(2) + + sys.exit(test_case(sys.argv[1]) and 1 or 0) |