fieldnames = list(fieldnames)
self.fieldnames = fieldnames # list of keys for the dict
self.restval = restval # for writing short dicts
- if extrasaction.lower() not in ("raise", "ignore"):
+ extrasaction = extrasaction.lower()
+ if extrasaction not in ("raise", "ignore"):
raise ValueError("extrasaction (%s) must be 'raise' or 'ignore'"
% extrasaction)
self.extrasaction = extrasaction
dictrow = {'f0': 0, 'f1': 1, 'f2': 2, 'f3': 3}
self.assertRaises(ValueError, csv.DictWriter.writerow, writer, dictrow)
+ # see bpo-44512 (differently cased 'raise' should not result in 'ignore')
+ writer = csv.DictWriter(fileobj, ['f1', 'f2'], extrasaction="RAISE")
+ self.assertRaises(ValueError, csv.DictWriter.writerow, writer, dictrow)
+
def test_write_field_not_in_field_names_ignore(self):
fileobj = StringIO()
writer = csv.DictWriter(fileobj, ['f1', 'f2'], extrasaction="ignore")
csv.DictWriter.writerow(writer, dictrow)
self.assertEqual(fileobj.getvalue(), "1,2\r\n")
+ # bpo-44512
+ writer = csv.DictWriter(fileobj, ['f1', 'f2'], extrasaction="IGNORE")
+ csv.DictWriter.writerow(writer, dictrow)
+
def test_dict_reader_fieldnames_accepts_iter(self):
fieldnames = ["a", "b", "c"]
f = StringIO()