From 66e15b8f5cf1eb2c3dfe72d1b416e4e6a94676b6 Mon Sep 17 00:00:00 2001 From: florian <f.spreckelsen@inidscale.com> Date: Mon, 26 Sep 2022 14:57:20 +0200 Subject: [PATCH] ENH: Raise an error in case of unknown filter rules --- src/caoscrawler/converters.py | 5 +++++ unittests/test_converters.py | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/caoscrawler/converters.py b/src/caoscrawler/converters.py index 7f9dce83..5c193e61 100644 --- a/src/caoscrawler/converters.py +++ b/src/caoscrawler/converters.py @@ -337,6 +337,11 @@ class Converter(object): group: str, rule: str): """Filter children according to regexp `expr` and `rule`.""" + if rule not in FILTER_FUNCTIONS: + raise RuntimeError( + f"{rule} is not a known filter rule. Only {list(FILTER_FUNCTIONS.keys())} are implemented." + ) + to_be_filtered = [] unmatched_children = [] diff --git a/unittests/test_converters.py b/unittests/test_converters.py index b50ceef1..15a39b72 100644 --- a/unittests/test_converters.py +++ b/unittests/test_converters.py @@ -329,3 +329,22 @@ def test_filter_children_of_directory(converter_registry): assert children[0].name == "test_2022-01-01.json" assert children[1].__class__ == File assert children[1].name == "some_other_file.csv" + + dc = DirectoryConverter( + definition={ + "match": "(.*)", + "filter": { + "expr": "test_(?P<date>[0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2}).json", + "group": "date", + "rule": "does_not_exist" + } + }, + name="TestBrokenDirectoryConverter", + converter_registry=converter_registry + ) + + m = dc.match(test_dir) + assert m is not None + + with pytest.raises(RuntimeError): + children = dc.create_children(None, test_dir) -- GitLab