Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 18 additions & 2 deletions nodescraper/interfaces/dataplugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,9 @@
dict[str, Type[CollectorArgs]],
]

NO_TASK_STR = "No {task_name} configured for {plugin_name}"
TASK_NOT_RAN_STR = "Data {task_name} not ran for {plugin_name}"


class DataPlugin(
PluginInterface,
Expand Down Expand Up @@ -119,13 +122,26 @@ def __init__(
**kwargs,
)
self._validate_class_var()
collector = self.get_collector_classes()
self.collection_result: TaskResult = TaskResult(
status=ExecutionStatus.NOT_RAN,
message=f"Data collection not ran for {self.__class__.__name__}",
message=(
TASK_NOT_RAN_STR.format(task_name="collection", plugin_name=self.__class__.__name__)
if collector
else NO_TASK_STR.format(task_name="collection", plugin_name=self.__class__.__name__)
),
parent=self.__class__.__name__,
task=collector[0].__name__ if collector else None,
)
self.analysis_result: TaskResult = TaskResult(
status=ExecutionStatus.NOT_RAN,
message=f"Data analysis not ran for {self.__class__.__name__}",
message=(
TASK_NOT_RAN_STR.format(task_name="analysis", plugin_name=self.__class__.__name__)
if self.ANALYZER is not None
else NO_TASK_STR.format(task_name="analysis", plugin_name=self.__class__.__name__)
),
parent=self.__class__.__name__,
task=self.ANALYZER.__name__ if self.ANALYZER is not None else None,
)
self._data: Optional[TDataModel] = None

Expand Down
14 changes: 14 additions & 0 deletions test/unit/framework/test_dataplugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,20 @@ def test_data_property(self, plugin):
assert isinstance(plugin.data, StandardDataModel)
assert plugin.data.value == "dict_value"

def test_default_analysis_result_is_poplulated(self, plugin):
assert plugin.analysis_result.status == ExecutionStatus.NOT_RAN
assert "not ran" in plugin.analysis_result.message
assert "analysis" in plugin.analysis_result.message
assert plugin.analysis_result.parent is not None
assert plugin.analysis_result.task is not None

def test_default_collection_result_is_poplulated(self, plugin):
assert plugin.collection_result.status == ExecutionStatus.NOT_RAN
assert "not ran" in plugin.collection_result.message
assert "collection" in plugin.collection_result.message
assert plugin.collection_result.parent is not None
assert plugin.collection_result.task is not None

def test_data_setter_error_names_expected_model(self, plugin):
"""Invalid data should report the expected DATA_MODEL name, not its metaclass."""
with pytest.raises(ValueError) as exc_info:
Expand Down
Loading