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