summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_csv.py
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2015-03-25 17:16:54 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2015-03-25 17:16:54 (GMT)
commit7c316a181a38d97a1af7da8199c5b6dfcb25b450 (patch)
tree7fd700e10eb3def5efee48b9c7ece17a32dcd3d8 /Lib/test/test_csv.py
parentb20f905f6d52d6839ca2e5b3fd069cf5ccffc429 (diff)
parent0b4e355b8e7729d1e3a67da8539b3701f4e546ff (diff)
downloadcpython-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.py30
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(