gh-76728: Coerce DictReader and DictWriter fieldnames argument to a list (GH-32225)

This commit is contained in:
Sam Ezeh 2022-08-25 11:13:24 +01:00 committed by GitHub
parent c09fa7542c
commit cd492d43a2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 37 additions and 0 deletions

View file

@ -736,6 +736,34 @@ class TestDictFields(unittest.TestCase):
csv.DictWriter.writerow(writer, dictrow)
self.assertEqual(fileobj.getvalue(), "1,2\r\n")
def test_dict_reader_fieldnames_accepts_iter(self):
fieldnames = ["a", "b", "c"]
f = StringIO()
reader = csv.DictReader(f, iter(fieldnames))
self.assertEqual(reader.fieldnames, fieldnames)
def test_dict_reader_fieldnames_accepts_list(self):
fieldnames = ["a", "b", "c"]
f = StringIO()
reader = csv.DictReader(f, fieldnames)
self.assertEqual(reader.fieldnames, fieldnames)
def test_dict_writer_fieldnames_rejects_iter(self):
fieldnames = ["a", "b", "c"]
f = StringIO()
writer = csv.DictWriter(f, iter(fieldnames))
self.assertEqual(writer.fieldnames, fieldnames)
def test_dict_writer_fieldnames_accepts_list(self):
fieldnames = ["a", "b", "c"]
f = StringIO()
writer = csv.DictWriter(f, fieldnames)
self.assertEqual(writer.fieldnames, fieldnames)
def test_dict_reader_fieldnames_is_optional(self):
f = StringIO()
reader = csv.DictReader(f, fieldnames=None)
def test_read_dict_fields(self):
with TemporaryFile("w+", encoding="utf-8") as fileobj:
fileobj.write("1,2,abc\r\n")