summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVille Skyttä <ville.skytta@iki.fi>2020-12-26 18:33:08 +0200
committerVille Skyttä <ville.skytta@iki.fi>2020-12-26 18:37:04 +0200
commit30bcd7d550a9ae1fd94ad51561448e5becc42446 (patch)
treeddb166c5f464592bcfb333d3e45f2901861df721
parentc01eaf59e637dcf825725e7d4d2c83a7b2b17804 (diff)
downloadshared-mime-info-30bcd7d550a9ae1fd94ad51561448e5becc42446.tar.gz
tests/test_case.py: new spelling case test
-rw-r--r--tests/meson.build5
-rwxr-xr-xtests/test_case.py45
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)