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