diff options
Diffstat (limited to 'toolkit/components/glean/tests/pytest/test_yaml_indices.py')
-rw-r--r-- | toolkit/components/glean/tests/pytest/test_yaml_indices.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/toolkit/components/glean/tests/pytest/test_yaml_indices.py b/toolkit/components/glean/tests/pytest/test_yaml_indices.py new file mode 100644 index 0000000000..4edb402e03 --- /dev/null +++ b/toolkit/components/glean/tests/pytest/test_yaml_indices.py @@ -0,0 +1,42 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import sys +from os import path + +import mozunit + +# Shenanigans to import the metrics index's lists of yamls +FOG_ROOT_PATH = path.abspath( + path.join(path.dirname(__file__), path.pardir, path.pardir) +) +sys.path.append(FOG_ROOT_PATH) +import metrics_index + + +def test_yamls_sorted(): + """ + Ensure the yamls indices are sorted lexicographically. + """ + # Ignore lists that are the concatenation of others. + to_ignore = ["metrics_yamls", "pings_yamls"] + + # Fetch names of all variables defined in the `metrics_index` module. + yaml_lists = [ + item + for item in dir(metrics_index) + if isinstance(item, list) and not item.startswith("__") + ] + for name in yaml_lists: + if name in to_ignore: + continue + + yamls_to_test = metrics_index.__dict__[name] + assert ( + sorted(yamls_to_test) == yamls_to_test + ), f"{name} must be be lexicographically sorted." + + +if __name__ == "__main__": + mozunit.main() |