summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ipalib/parameters.py13
-rw-r--r--tests/test_ipalib/test_parameters.py4
2 files changed, 14 insertions, 3 deletions
diff --git a/ipalib/parameters.py b/ipalib/parameters.py
index 502f173c9..2e26923dd 100644
--- a/ipalib/parameters.py
+++ b/ipalib/parameters.py
@@ -694,9 +694,16 @@ class Param(ReadOnly):
delimiter=self.csv_separator, quotechar='"',
skipinitialspace=self.csv_skipspace,
**kwargs)
- for row in csv_reader:
- # decode UTF-8 back to Unicode, cell by cell:
- yield [unicode(cell, 'utf-8') for cell in row]
+ try:
+ for row in csv_reader:
+ # decode UTF-8 back to Unicode, cell by cell:
+ yield [unicode(cell, 'utf-8') for cell in row]
+ except csv.Error, e:
+ raise ValidationError(
+ name=self.get_param_name(),
+ value=unicode_csv_data,
+ error=_("Improperly formatted CSV value (%s)" % e)
+ )
def split_csv(self, value):
"""Split CSV strings into individual values.
diff --git a/tests/test_ipalib/test_parameters.py b/tests/test_ipalib/test_parameters.py
index b30ae5ada..12270a94f 100644
--- a/tests/test_ipalib/test_parameters.py
+++ b/tests/test_ipalib/test_parameters.py
@@ -631,6 +631,10 @@ class test_Param(ClassChecker):
assert type(n) is tuple
assert len(n) is 3
+ e = raises(ValidationError, o.split_csv, '"a')
+ assert e.name == 'my_list'
+ assert e.error == u'Improperly formatted CSV value (newline inside string)'
+
def test_split_csv_separator(self):
"""
Test the `ipalib.parameters.Param.split_csv` method with csv and a separator.