From 494d1e576f99a1d0d54ea303f0a96aa4a655dcb0 Mon Sep 17 00:00:00 2001
From: Stefano Borini <sborini@enthought.com>
Date: Thu, 17 May 2018 18:31:29 +0100
Subject: [PATCH] Fixed workflow reader and improved error message

---
 force_bdss/io/tests/test_workflow_reader.py | 9 +++++----
 force_bdss/io/workflow_reader.py            | 8 ++++++--
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/force_bdss/io/tests/test_workflow_reader.py b/force_bdss/io/tests/test_workflow_reader.py
index c85263a..d5e55cb 100644
--- a/force_bdss/io/tests/test_workflow_reader.py
+++ b/force_bdss/io/tests/test_workflow_reader.py
@@ -4,10 +4,11 @@ from six import StringIO
 
 import testfixtures
 
-from force_bdss.factory_registry_plugin import FactoryRegistryPlugin
 from force_bdss.io.workflow_reader import (
     WorkflowReader,
     InvalidVersionException, InvalidFileException)
+from force_bdss.tests.dummy_classes.factory_registry_plugin import \
+    DummyFactoryRegistryPlugin
 
 try:
     import mock
@@ -17,13 +18,13 @@ except ImportError:
 
 class TestWorkflowReader(unittest.TestCase):
     def setUp(self):
-        self.mock_factory_registry = mock.Mock(spec=FactoryRegistryPlugin)
+        self.registry = DummyFactoryRegistryPlugin()
 
-        self.wfreader = WorkflowReader(self.mock_factory_registry)
+        self.wfreader = WorkflowReader(self.registry)
 
     def test_initialization(self):
         self.assertEqual(self.wfreader.factory_registry,
-                         self.mock_factory_registry)
+                         self.registry)
 
     def test_invalid_version(self):
         data = {
diff --git a/force_bdss/io/workflow_reader.py b/force_bdss/io/workflow_reader.py
index 5b76585..4f6ed89 100644
--- a/force_bdss/io/workflow_reader.py
+++ b/force_bdss/io/workflow_reader.py
@@ -96,8 +96,12 @@ class WorkflowReader(HasStrictTraits):
                 self._extract_notification_listeners(wf_data)
         except KeyError as e:
             log.error("Could not read file {}".format(file), exc_info=True)
-            raise InvalidFileException("Could not read file {}. "
-                                       "Unable to find key {}".format(file, e))
+            raise InvalidFileException(
+                "Could not read file {}. "
+                "Unable to find key {}."
+                "The plugin responsible for the missing "
+                "key may be missing or broken.".format(file, e)
+            )
         return wf
 
     def _extract_mco(self, wf_data):
-- 
GitLab