Skip to content
Open
Changes from 3 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
71 changes: 71 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 @@ -1351,6 +1359,59 @@ class TestSniffer(unittest.TestCase):
abc\0def
ghijkl\0mno
ghi\0jkl
"""

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

sample17 = """\
name,age
Alice,30
Bob,40
Carol,50
Dave,60
Eve,70
Frank,80
Grace,90
Heidi,100
Ivan,110
Judy,120
Karl,130
Liam,140
Mallory,150
Niaj,160
Olivia,170
Peggy,180
Quinn,190
Rupert,200
Sybil,210
Trent,220
Victor,not_a_number
"""
sample18 = """\
name,age
Alice,30
Bob,40
Carol,50
Dave,60
Eve,70
Frank,80
Grace,90
Heidi,100
Ivan,110
Judy,120
Karl,130
Liam,140
Mallory,150
Niaj,160
Olivia,170
Peggy,180
Quinn,190
Rupert,200
Sybil,210
Trent,220
Uma,230
Victor,not_a_number
"""

def test_issue43625(self):
Expand All @@ -1374,6 +1435,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 +1489,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