diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2015-03-25 17:16:54 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2015-03-25 17:16:54 (GMT) |
commit | 7c316a181a38d97a1af7da8199c5b6dfcb25b450 (patch) | |
tree | 7fd700e10eb3def5efee48b9c7ece17a32dcd3d8 /Lib/test/test_csv.py | |
parent | b20f905f6d52d6839ca2e5b3fd069cf5ccffc429 (diff) | |
parent | 0b4e355b8e7729d1e3a67da8539b3701f4e546ff (diff) | |
download | cpython-7c316a181a38d97a1af7da8199c5b6dfcb25b450.zip cpython-7c316a181a38d97a1af7da8199c5b6dfcb25b450.tar.gz cpython-7c316a181a38d97a1af7da8199c5b6dfcb25b450.tar.bz2 |
Check that failed writerow() doesn't produce change a file.
Diffstat (limited to 'Lib/test/test_csv.py')
-rw-r--r-- | Lib/test/test_csv.py | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py index 3f3f328..41ef790 100644 --- a/Lib/test/test_csv.py +++ b/Lib/test/test_csv.py @@ -124,12 +124,19 @@ class Test_Csv(unittest.TestCase): self.assertEqual(fileobj.read(), expect + writer.dialect.lineterminator) + def _write_error_test(self, exc, fields, **kwargs): + with TemporaryFile("w+", newline='') as fileobj: + writer = csv.writer(fileobj, **kwargs) + with self.assertRaises(exc): + writer.writerow(fields) + fileobj.seek(0) + self.assertEqual(fileobj.read(), '') + def test_write_arg_valid(self): - self.assertRaises(csv.Error, self._write_test, None, '') + self._write_error_test(csv.Error, None) self._write_test((), '') self._write_test([None], '""') - self.assertRaises(csv.Error, self._write_test, - [None], None, quoting = csv.QUOTE_NONE) + self._write_error_test(csv.Error, [None], quoting = csv.QUOTE_NONE) # Check that exceptions are passed up the chain class BadList: def __len__(self): @@ -137,11 +144,11 @@ class Test_Csv(unittest.TestCase): def __getitem__(self, i): if i > 2: raise OSError - self.assertRaises(OSError, self._write_test, BadList(), '') + self._write_error_test(OSError, BadList()) class BadItem: def __str__(self): raise OSError - self.assertRaises(OSError, self._write_test, [BadItem()], '') + self._write_error_test(OSError, [BadItem()]) def test_write_bigfield(self): # This exercises the buffer realloc functionality @@ -151,10 +158,8 @@ class Test_Csv(unittest.TestCase): def test_write_quoting(self): self._write_test(['a',1,'p,q'], 'a,1,"p,q"') - self.assertRaises(csv.Error, - self._write_test, - ['a',1,'p,q'], 'a,1,p,q', - quoting = csv.QUOTE_NONE) + self._write_error_test(csv.Error, ['a',1,'p,q'], + quoting = csv.QUOTE_NONE) self._write_test(['a',1,'p,q'], 'a,1,"p,q"', quoting = csv.QUOTE_MINIMAL) self._write_test(['a',1,'p,q'], '"a",1,"p,q"', @@ -167,10 +172,8 @@ class Test_Csv(unittest.TestCase): def test_write_escape(self): self._write_test(['a',1,'p,q'], 'a,1,"p,q"', escapechar='\\') - self.assertRaises(csv.Error, - self._write_test, - ['a',1,'p,"q"'], 'a,1,"p,\\"q\\""', - escapechar=None, doublequote=False) + self._write_error_test(csv.Error, ['a',1,'p,"q"'], + escapechar=None, doublequote=False) self._write_test(['a',1,'p,"q"'], 'a,1,"p,\\"q\\""', escapechar='\\', doublequote = False) self._write_test(['"'], '""""', @@ -1073,7 +1076,6 @@ class TestUnicode(unittest.TestCase): self.assertEqual(fileobj.read(), expected) - def test_main(): mod = sys.modules[__name__] support.run_unittest( |