On 14.1.2013 12:56, Petr Viktorin wrote:
On 01/09/2013 06:11 PM, Jan Cholasta wrote:
Hi,
this patch fixes <https://fedorahosted.org/freeipa/ticket/3323>.
Honza
The patch works well, but could you also add a test to ensure we don't
regress in the future?
Test added.
--
Jan Cholasta
>From a6cd1e4550a779146eac7fcb2d986e2a4903d9a6 Mon Sep 17 00:00:00 2001
From: Jan Cholasta <jchol...@redhat.com>
Date: Tue, 8 Jan 2013 16:32:41 +0100
Subject: [PATCH] Raise ValidationError on invalid CSV values.
https://fedorahosted.org/freeipa/ticket/3323
---
ipalib/parameters.py | 13 ++++++++++---
tests/test_ipalib/test_parameters.py | 4 ++++
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/ipalib/parameters.py b/ipalib/parameters.py
index 670e036..63fa2f6 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 b30ae5a..12270a9 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.
--
1.8.1
_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel