From 38c3ef3da0134eeafc99bc3f30ea4d310957d79a Mon Sep 17 00:00:00 2001 From: Sarah Hoffmann Date: Mon, 7 Feb 2022 11:22:24 +0100 Subject: [PATCH] add tests for get_string_list() Renaming test file for sanitizer config because pytest requires unique names for test files. --- nominatim/tokenizer/sanitizers/config.py | 2 +- ...est_config.py => test_sanitizer_config.py} | 34 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) rename test/python/tokenizer/sanitizers/{test_config.py => test_sanitizer_config.py} (74%) diff --git a/nominatim/tokenizer/sanitizers/config.py b/nominatim/tokenizer/sanitizers/config.py index 3ff681b9..ecfcacbe 100644 --- a/nominatim/tokenizer/sanitizers/config.py +++ b/nominatim/tokenizer/sanitizers/config.py @@ -33,7 +33,7 @@ class SanitizerConfig(UserDict): return None if default is None else list(default) if isinstance(values, str): - return [values] + return [values] if values else [] if not isinstance(values, (list, tuple)): raise UsageError(f"Parameter '{param}' must be string or list of strings.") diff --git a/test/python/tokenizer/sanitizers/test_config.py b/test/python/tokenizer/sanitizers/test_sanitizer_config.py similarity index 74% rename from test/python/tokenizer/sanitizers/test_config.py rename to test/python/tokenizer/sanitizers/test_sanitizer_config.py index 612df5d9..02794776 100644 --- a/test/python/tokenizer/sanitizers/test_config.py +++ b/test/python/tokenizer/sanitizers/test_sanitizer_config.py @@ -13,6 +13,40 @@ from nominatim.errors import UsageError from nominatim.tokenizer.place_sanitizer import PlaceName from nominatim.tokenizer.sanitizers.config import SanitizerConfig +def test_string_list_default_empty(): + assert SanitizerConfig().get_string_list('op') == [] + + +def test_string_list_default_none(): + assert SanitizerConfig().get_string_list('op', default=None) is None + + +def test_string_list_default_something(): + assert SanitizerConfig().get_string_list('op', default=['a', 'b']) == ['a', 'b'] + + +def test_string_list_value_string(): + assert SanitizerConfig({'op': 't'}).get_string_list('op', default=['a', 'b']) == ['t'] + + +def test_string_list_value_list(): + assert SanitizerConfig({'op': ['1', '2']}).get_string_list('op') == ['1', '2'] + + +def test_string_list_value_empty(): + assert SanitizerConfig({'op': ''}).get_string_list('op', default=['a', 'b']) == [] + + +def test_string_list_value_dict(): + with pytest.raises(UsageError): + SanitizerConfig({'op': {'1': 'a'}}).get_string_list('op') + + +def test_string_list_value_int_list(): + with pytest.raises(UsageError): + SanitizerConfig({'op': [1, 2]}).get_string_list('op') + + @pytest.mark.parametrize('inp', ('fg34', 'f\\f', 'morning [glory]', '56.78')) def test_create_split_regex_no_params_unsplit(inp): regex = SanitizerConfig().get_delimiter() -- 2.39.5