Skip to content
Open
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions Lib/test/test_csv.py
Original file line number Diff line number Diff line change
Expand Up @@ -918,6 +918,13 @@ def test_dict_reader_fieldnames_accepts_list(self):
reader = csv.DictReader(f, fieldnames)
self.assertEqual(reader.fieldnames, fieldnames)

def test_dict_reader_set_fieldnames(self):
fieldnames = ["a", "b", "c"]
f = StringIO()
reader = csv.DictReader(f)
reader.fieldnames = fieldnames
self.assertEqual(reader.fieldnames, fieldnames)

def test_dict_writer_fieldnames_rejects_iter(self):
fieldnames = ["a", "b", "c"]
f = StringIO()
Expand All @@ -933,6 +940,7 @@ def test_dict_writer_fieldnames_accepts_list(self):
def test_dict_reader_fieldnames_is_optional(self):
f = StringIO()
reader = csv.DictReader(f, fieldnames=None)
self.assertEqual(reader.fieldnames, None)

def test_read_dict_fields(self):
with TemporaryFile("w+", encoding="utf-8") as fileobj:
Expand Down Expand Up @@ -1353,6 +1361,18 @@ class TestSniffer(unittest.TestCase):
ghi\0jkl
"""

sample15 = "\n\n\n"
sample16 = "abc\ndef\nghi"

sample17 = ["letter,offset"]
sample17.extend(f"{chr(ord('a') + i)},{i}" for i in range(20))
sample17.append("v,twenty_one")
sample17 = '\n'.join(sample17)
sample18 = ["letter,offset"]
sample18.extend(f"{chr(ord('a') + i)},{i}" for i in range(21))
sample18.append("v,twenty_one")
sample18 = '\n'.join(sample18)

def test_issue43625(self):
sniffer = csv.Sniffer()
self.assertTrue(sniffer.has_header(self.sample12))
Expand All @@ -1374,6 +1394,11 @@ def test_has_header_regex_special_delimiter(self):
self.assertIs(sniffer.has_header(self.sample8), False)
self.assertIs(sniffer.has_header(self.header2 + self.sample8), True)

def test_has_header_checks_20_rows(self):
sniffer = csv.Sniffer()
self.assertIs(sniffer.has_header(self.sample17), False)
self.assertIs(sniffer.has_header(self.sample18), True)

def test_guess_quote_and_delimiter(self):
sniffer = csv.Sniffer()
for header in (";'123;4';", "'123;4';", ";'123;4'", "'123;4'"):
Expand Down Expand Up @@ -1423,6 +1448,11 @@ def test_delimiters(self):
self.assertEqual(dialect.quotechar, "'")
dialect = sniffer.sniff(self.sample14)
self.assertEqual(dialect.delimiter, '\0')
self.assertRaisesRegex(csv.Error, "Could not determine delimiter",
sniffer.sniff, self.sample15)
self.assertRaisesRegex(csv.Error, "Could not determine delimiter",
sniffer.sniff, self.sample16)


def test_doublequote(self):
sniffer = csv.Sniffer()
Expand Down
Loading