From e5b6cf6b381669e0c989403b0c01bc38a5dd90be Mon Sep 17 00:00:00 2001 From: Samuel Gaist <samuel.gaist@idiap.ch> Date: Mon, 6 May 2019 15:32:05 +0200 Subject: [PATCH] [experiment] Properly handle "default" case There's no prototype available for the experiment as it needs to be configured with the content of a prefix based on the toolchain selected for it. --- beat/core/experiment.py | 11 ++++------- beat/core/test/test_experiment_loading.py | 11 +++++++++++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/beat/core/experiment.py b/beat/core/experiment.py index a901c927..65533af8 100644 --- a/beat/core/experiment.py +++ b/beat/core/experiment.py @@ -52,7 +52,6 @@ from . import algorithm from . import schema from . import database from . import toolchain -from . import prototypes from . import hash @@ -233,12 +232,10 @@ class Experiment(object): self.data = None self.errors = [] - if data is None: # loads prototype and validates it - - experiment_data, self.errors = prototypes.load("experiment") - assert not self.errors, "\n * %s" % "\n *".join(self.errors) # nosec - toolchain_data, self.errors = prototypes.load("toolchain") - assert not self.errors, "\n * %s" % "\n *".join(self.errors) # nosec + if data is None: # Invalid case + # There can't be a prototype for experiments they must be + # filled based on the toolchain and the content of the prefix + raise RuntimeError("Experiments can't have default implementation") elif isinstance(data, (tuple, list)): # the user has passed a tuple diff --git a/beat/core/test/test_experiment_loading.py b/beat/core/test/test_experiment_loading.py index 311ee32f..e3c6fdd7 100644 --- a/beat/core/test/test_experiment_loading.py +++ b/beat/core/test/test_experiment_loading.py @@ -42,6 +42,17 @@ from . import prefix, tmp_prefix from .utils import cleanup +# ---------------------------------------------------------- + + +@nose.tools.raises(RuntimeError) +def test_load_default_experiment_fails(): + Experiment(prefix, data=None) + + +# ---------------------------------------------------------- + + def test_load_valid_experiment(): experiment = Experiment(prefix, "user/integers_addition/1/integers_addition") -- GitLab