Source code for ramble.test.util.naming

# Copyright 2022-2026 The Ramble Authors
#
# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
# https://www.apache.org/licenses/LICENSE-2.0> or the MIT license
# <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
# option. This file may not be copied, modified, or distributed
# except according to those terms.
"""Perform tests of the util/naming functions"""

import pytest

from ramble.util import naming


[docs] @pytest.mark.parametrize( "mod_name,expected_cls_name", [ ("test_mod_1", "TestMod1"), ("2_test_mod", "_2TestMod"), ], ) def test_mod_to_class(mod_name, expected_cls_name): assert naming.mod_to_class(mod_name) == expected_cls_name
[docs] @pytest.mark.parametrize( "mod_name,expected_py_mod_name", [ ("app", "app"), ("intel-mlc", "intel_mlc"), ("1-app", "num1_app"), ], ) def test_ramble_module_to_python_module(mod_name, expected_py_mod_name): assert naming.ramble_module_to_python_module(mod_name) == expected_py_mod_name
[docs] @pytest.mark.parametrize( "py_mod_name,expected_names", [ ("app", ["app"]), ("py_mod", ["py_mod", "py-mod"]), ("num1_app", ["1_app", "1-app"]), ], ) def test_possible_ramble_module_names(py_mod_name, expected_names): assert naming.possible_ramble_module_names(py_mod_name) == expected_names
[docs] @pytest.mark.parametrize( "in_name,expected_out_name", [ ("ImageMagick", "imagemagick"), ("l_mkl", "mkl"), ("ALLCAPS", "allcaps"), ("a_b.c++", "a-b-cpp"), ], ) def test_simplify_name(in_name, expected_out_name): assert naming.simplify_name(in_name) == expected_out_name
[docs] @pytest.mark.parametrize( "mod_name,expect_error", [ ("valid-mod", False), ("a.b", True), ("-ab", True), ], ) def test_validate_module_name(mod_name, expect_error): if expect_error: with pytest.raises(naming.InvalidModuleNameError): naming.validate_module_name(mod_name) else: naming.validate_module_name(mod_name)
[docs] @pytest.mark.parametrize( "mod_name,expect_error", [ ("valid-mod", False), ("a.b", False), ("-ab", True), ("valid-mod.a.b-c", False), ], ) def test_validate_fully_qualified_module_name(mod_name, expect_error): if expect_error: with pytest.raises(naming.InvalidFullyQualifiedModuleNameError): naming.validate_fully_qualified_module_name(mod_name) else: naming.validate_fully_qualified_module_name(mod_name)
[docs] @pytest.mark.parametrize( "pattern,string,expected_match,expected_groups", [ (None, "anything", True, {}), ("Step *", "Step 123", True, {}), # Glob ("Step (?P<num>[0-9]+)", "Step 123", True, {"num": "123"}), # Regex ("foo.bar", "fooxbar", True, {}), # Regex (. matches x) ("foo.bar", "foo.bar", True, {}), # Glob matches literally ("^start.*", "start_here", True, {}), # Regex with anchor ("Step [0-9]+", "Step 123", True, {}), # Regex with [] ("a|b", "a", True, {}), # Regex with | ("a|b", "c", False, {}), # Regex mismatch ("*.txt", "file.txt", True, {}), # Glob ("*.txt", "file.py", False, {}), # Glob mismatch ], ) def test_match_pattern(pattern, string, expected_match, expected_groups): match, groups = naming.match_pattern(pattern, string) assert match == expected_match assert groups == expected_groups