Skip to content
Snippets Groups Projects
Unverified Commit 4b450bb5 authored by Stefano Borini's avatar Stefano Borini Committed by GitHub
Browse files

Merge pull request #176 from force-h2020/verifier-fix

Verifier Fix
parents 16a69a9d eba44f03
No related branches found
No related tags found
No related merge requests found
...@@ -124,7 +124,7 @@ class TestVerifier(unittest.TestCase): ...@@ -124,7 +124,7 @@ class TestVerifier(unittest.TestCase):
ds_model.output_slot_info[0].name = '' ds_model.output_slot_info[0].name = ''
errors = verify_workflow(wf) errors = verify_workflow(wf)
self.assertEqual(len(errors), 2) self.assertEqual(len(errors), 2)
self.assertIn("Undefined name for output parameter", self.assertIn("Undefined names for all output parameters",
errors[1].local_error) errors[1].local_error)
def test_multi_error_format(self): def test_multi_error_format(self):
......
...@@ -11,7 +11,7 @@ class VerifierError(HasStrictTraits): ...@@ -11,7 +11,7 @@ class VerifierError(HasStrictTraits):
subject = Any() subject = Any()
#: An error message relevant to the local modelview #: An error message relevant to the local modelview
local_error = Str() local_error = Str()
#: An error message relevent to the overall workflow #: An error message relevant to the overall workflow
global_error = Str() global_error = Str()
def __init__(self, subject, global_error='', local_error=''): def __init__(self, subject, global_error='', local_error=''):
...@@ -53,6 +53,7 @@ def _check_mco(workflow): ...@@ -53,6 +53,7 @@ def _check_mco(workflow):
subject=mco, subject=mco,
global_error="The MCO has no defined parameters")) global_error="The MCO has no defined parameters"))
#: Check MCO parameters have names and types
for idx, param in enumerate(mco.parameters): for idx, param in enumerate(mco.parameters):
factory_name = param.factory.name factory_name = param.factory.name
if param.name == '': if param.name == '':
...@@ -69,6 +70,7 @@ def _check_mco(workflow): ...@@ -69,6 +70,7 @@ def _check_mco(workflow):
global_error="Error in MCO parameter " global_error="Error in MCO parameter "
"(Type: {})".format(factory_name))) "(Type: {})".format(factory_name)))
#: Check KPIs have names and optimisation objectives
for idx, kpi in enumerate(mco.kpis): for idx, kpi in enumerate(mco.kpis):
if kpi.name == '': if kpi.name == '':
errors.append(VerifierError(subject=kpi, errors.append(VerifierError(subject=kpi,
...@@ -151,10 +153,12 @@ def _check_data_source(data_source_model, layer_number): ...@@ -151,10 +153,12 @@ def _check_data_source(data_source_model, layer_number):
global_error="Missing input slot name assignment " global_error="Missing input slot name assignment "
"in layer {}".format(layer_number))) "in layer {}".format(layer_number)))
#: Check if any input slots are unnamed
row_index_errors = [] row_index_errors = []
for idx, info in enumerate(data_source_model.input_slot_info): for idx, info in enumerate(data_source_model.input_slot_info):
if info.name == '': if info.name == '':
row_index_errors.append(idx) row_index_errors.append(idx)
if row_index_errors != []: if row_index_errors != []:
err_no_string = multi_error_format(row_index_errors) err_no_string = multi_error_format(row_index_errors)
if len(row_index_errors) == 1: if len(row_index_errors) == 1:
...@@ -178,18 +182,15 @@ def _check_data_source(data_source_model, layer_number): ...@@ -178,18 +182,15 @@ def _check_data_source(data_source_model, layer_number):
global_error="Missing output slot name assignment " global_error="Missing output slot name assignment "
"in layer {}".format(layer_number))) "in layer {}".format(layer_number)))
row_index_errors = [] #: Check if the datasource has all outputs unnamed
for idx, info in enumerate(data_source_model.output_slot_info): unnamed = [info.name == "" for info in data_source_model.output_slot_info]
if info.name == '': if all(unnamed) and len(unnamed) != 0:
row_index_errors.append(idx)
err_no_string = multi_error_format(row_index_errors)
if len(row_index_errors) == 1:
errors.append(VerifierError( errors.append(VerifierError(
subject=data_source_model, subject=data_source_model,
local_error="Undefined name for output " local_error="Undefined names for all output "
"parameters {}".format(err_no_string), "parameters",
global_error="An output parameter is undefined in {}" global_error="An output parameter is undefined in {}"
" (Layer {})".format(factory.name, layer_number))) " (Layer {})".format(factory.name, layer_number)))
return errors return errors
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment