Skip to content

Commit a796f9d

Browse files
Increase test coverage for csv.DictReader and csv.Sniffer
Previously there were no tests for the DictReader fieldnames setter, the case where a StopIteration was encountered when trying to determine the fieldnames from the content or the case where Sniffer could not find a delimiter.
1 parent c919d02 commit a796f9d

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

Lib/test/test_csv.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -918,6 +918,13 @@ def test_dict_reader_fieldnames_accepts_list(self):
918918
reader = csv.DictReader(f, fieldnames)
919919
self.assertEqual(reader.fieldnames, fieldnames)
920920

921+
def test_dict_reader_set_fieldnames(self):
922+
fieldnames = ["a", "b", "c"]
923+
f = StringIO()
924+
reader = csv.DictReader(f)
925+
reader.fieldnames = fieldnames
926+
self.assertEqual(reader.fieldnames, fieldnames)
927+
921928
def test_dict_writer_fieldnames_rejects_iter(self):
922929
fieldnames = ["a", "b", "c"]
923930
f = StringIO()
@@ -933,6 +940,7 @@ def test_dict_writer_fieldnames_accepts_list(self):
933940
def test_dict_reader_fieldnames_is_optional(self):
934941
f = StringIO()
935942
reader = csv.DictReader(f, fieldnames=None)
943+
self.assertEqual(reader.fieldnames, None)
936944

937945
def test_read_dict_fields(self):
938946
with TemporaryFile("w+", encoding="utf-8") as fileobj:
@@ -951,7 +959,7 @@ def test_read_dict_no_fieldnames(self):
951959
self.assertEqual(reader.fieldnames, ["f1", "f2", "f3"])
952960

953961
# Two test cases to make sure existing ways of implicitly setting
954-
# fieldnames continue to work. Both arise from discussion in issue3436.
962+
# fieldnames continue to work. Both arise from discussion in issue3436.
955963
def test_read_dict_fieldnames_from_file(self):
956964
with TemporaryFile("w+", encoding="utf-8") as fileobj:
957965
fileobj.write("f1,f2,f3\r\n1,2,abc\r\n")
@@ -1353,6 +1361,9 @@ class TestSniffer(unittest.TestCase):
13531361
ghi\0jkl
13541362
"""
13551363

1364+
sample15 = "\n\n\n"
1365+
sample16 = "abc\ndef\nghi"
1366+
13561367
def test_issue43625(self):
13571368
sniffer = csv.Sniffer()
13581369
self.assertTrue(sniffer.has_header(self.sample12))
@@ -1423,6 +1434,11 @@ def test_delimiters(self):
14231434
self.assertEqual(dialect.quotechar, "'")
14241435
dialect = sniffer.sniff(self.sample14)
14251436
self.assertEqual(dialect.delimiter, '\0')
1437+
self.assertRaisesRegex(csv.Error, "Could not determine delimiter",
1438+
sniffer.sniff, self.sample15)
1439+
self.assertRaisesRegex(csv.Error, "Could not determine delimiter",
1440+
sniffer.sniff, self.sample16)
1441+
14261442

14271443
def test_doublequote(self):
14281444
sniffer = csv.Sniffer()

0 commit comments

Comments
 (0)