From d3c5a3edee7c1967f560ec108bfc477f3cffca81 Mon Sep 17 00:00:00 2001
From: Marko Mecina <marko.mecina@univie.ac.at>
Date: Wed, 31 Aug 2022 18:10:41 +0200
Subject: [PATCH] handle parsing errors when reading DP item list from csv

---
 Ccs/ccs_function_lib.py  | 5 ++++-
 Tst/tst/data_pool_tab.py | 4 ++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/Ccs/ccs_function_lib.py b/Ccs/ccs_function_lib.py
index 7bcafc5..42b039b 100644
--- a/Ccs/ccs_function_lib.py
+++ b/Ccs/ccs_function_lib.py
@@ -2839,6 +2839,9 @@ def get_tm_id(pcf_descr=None):
 
 
 def get_data_pool_items(pcf_descr=None, src_file=None):
+    if not isinstance(src_file, str):
+        raise TypeError('src_file must be str, is {}.'.format(type(src_file)))
+
     if src_file:
         with open(src_file, 'r') as fd:
             lines = fd.readlines()
@@ -2850,7 +2853,7 @@ def get_data_pool_items(pcf_descr=None, src_file=None):
                 if len(dp_item) == 6:
                     data_pool.append(dp_item[:2][::-1] + dp_item[2:])
                 else:
-                    raise Exception
+                    raise ValueError('Wrong format of input line in {}.'.format(src_file))
 
         return data_pool
 
diff --git a/Tst/tst/data_pool_tab.py b/Tst/tst/data_pool_tab.py
index 30375d7..1cd6baf 100644
--- a/Tst/tst/data_pool_tab.py
+++ b/Tst/tst/data_pool_tab.py
@@ -27,7 +27,7 @@ def reload_dp_data():
 
     try:
         dictionary_of_data_pool = cfl.get_data_pool_items(src_file=DP_ITEMS_SRC_FILE)
-    except FileNotFoundError:
+    except (FileNotFoundError, ValueError):
         logger.warning('Could not load data pool from file: {}. Using MIB instead.'.format(DP_ITEMS_SRC_FILE))
         dictionary_of_data_pool = cfl.get_data_pool_items()
 
@@ -58,7 +58,7 @@ def get_data_pool_sublist():
 data_pool_sublist = []
 try:
     dictionary_of_data_pool = cfl.get_data_pool_items(src_file=DP_ITEMS_SRC_FILE)
-except FileNotFoundError:
+except (FileNotFoundError, ValueError):
     logger.warning('Could not load data pool from file: {}. Using MIB instead.'.format(DP_ITEMS_SRC_FILE))
     dictionary_of_data_pool = cfl.get_data_pool_items()
 
-- 
GitLab