From f7cb7c9fef60915e909e550b63b8cf154b17416b Mon Sep 17 00:00:00 2001
From: Manuel Gunther <siebenkopf@googlemail.com>
Date: Wed, 18 Jan 2017 15:02:43 -0700
Subject: [PATCH] Added check for existing protocol directory

---
 bob/bio/base/database/filelist/query.py |  5 +++++
 bob/bio/base/test/test_filelist.py      | 11 ++++-------
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/bob/bio/base/database/filelist/query.py b/bob/bio/base/database/filelist/query.py
index 5e5cdf8c..fe034c02 100644
--- a/bob/bio/base/database/filelist/query.py
+++ b/bob/bio/base/database/filelist/query.py
@@ -229,7 +229,12 @@ class FileListBioDatabase(ZTBioDatabase):
 
     def _list_reader(self, protocol):
       if protocol not in self.list_readers:
+        if protocol is not None:
+          protocol_dir = os.path.join(self.get_base_directory(), protocol)
+          if not os.path.isdir(protocol_dir):
+            raise ValueError("The directory %s for the given protocol '%s' does not exist" % (protocol_dir, protocol))
         self.list_readers[protocol] = ListReader(self.keep_read_lists_in_memory)
+
       return self.list_readers[protocol]
 
     def _make_bio(self, files):
diff --git a/bob/bio/base/test/test_filelist.py b/bob/bio/base/test/test_filelist.py
index 2063ea55..fcaa4627 100644
--- a/bob/bio/base/test/test_filelist.py
+++ b/bob/bio/base/test/test_filelist.py
@@ -22,6 +22,7 @@
 import os
 import bob.io.base.test_utils
 from bob.bio.base.database import FileListBioDatabase
+import nose.tools
 
 
 example_dir = os.path.realpath(bob.io.base.test_utils.datafile('.', __name__, 'data/example_filelist'))
@@ -124,6 +125,8 @@ def test_query_protocol():
     assert db.client_id_from_model_id('6', group=None) == '6'
     assert db.client_id_from_t_model_id('7', group=None) == '7'
 
+    nose.tools.assert_raises(ValueError, db.objects, protocol='non-existent')
+
 
 def test_query_dense():
     db = FileListBioDatabase(example_dir, 'test', probes_filename='for_probes.lst')
@@ -162,13 +165,7 @@ def test_multiple_extensions():
     assert file_name == os.path.join(example_dir, file.path + '.pos')
 
     file = bob.bio.base.database.BioFile(4, "data/model4_session1_sample1", "data/model4_session1_sample1")
-    try:
-        file_name = db.original_file_name(file, False)
-        raised = False
-    except IOError as e:
-        raised = True
-
-    assert raised
+    nose.tools.assert_raises(IOError, db.original_file_name, file, False)
 
 
 def test_driver_api():
-- 
GitLab