From 5ccd9b2543152dbdb8bd94b903a844e897b3a7c8 Mon Sep 17 00:00:00 2001 From: Bert Palm <bert.palm@ufz.de> Date: Mon, 30 May 2022 23:32:43 +0200 Subject: [PATCH] added basic call-redirect test for core.modules --- saqc/lib/types.py | 4 ++-- tests/core/test_FunctionsMixin.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 tests/core/test_FunctionsMixin.py diff --git a/saqc/lib/types.py b/saqc/lib/types.py index 6a448460c..6080d661c 100644 --- a/saqc/lib/types.py +++ b/saqc/lib/types.py @@ -32,7 +32,7 @@ ExternalFlag = Union[str, float, int] # needed for deeper type hinting magic class CurveFitter(Protocol): def __call__(self, data: np.ndarray, *params: float) -> np.ndarray: - ... + ... # pragma: no cover class GenericFunction(Protocol): @@ -41,7 +41,7 @@ class GenericFunction(Protocol): __globals__: Dict[str, Any] def __call__(self, *args: pd.Series) -> PandasLike: - ... + ... # pragma: no cover class OptionalNone: diff --git a/tests/core/test_FunctionsMixin.py b/tests/core/test_FunctionsMixin.py new file mode 100644 index 000000000..a7ac03098 --- /dev/null +++ b/tests/core/test_FunctionsMixin.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python +import inspect + +import pytest + +from saqc.core.modules import FunctionsMixin + + +methods = [ + attr + for attr in dir(FunctionsMixin) + if callable(getattr(FunctionsMixin, attr)) and not attr.startswith("_") +] + + +@pytest.mark.parametrize("name", methods) +def test_redirect_call(name): + fmixin = FunctionsMixin() + method = getattr(fmixin, name) + params = inspect.signature(method).parameters + assert "field" in params + assert "kwargs" in params + dummy_params = dict.fromkeys(params.keys()) + dummy_params.pop("kwargs") + + err_msg = "'FunctionsMixin' object has no attribute '_wrap'" + with pytest.raises(AttributeError, match=err_msg): + method(**dummy_params) -- GitLab