Merge pull request #148 from madprog/issue-147

dataset.freeze should not close provided fileobj
This commit is contained in:
Friedrich Lindenberg 2016-01-18 10:33:06 +01:00
commit 5e9745b858
3 changed files with 13 additions and 2 deletions

View File

@ -47,4 +47,5 @@ class CSVSerializer(Serializer):
def close(self): def close(self):
for writer, fh in self.handles.values(): for writer, fh in self.handles.values():
if fh != self.fileobj:
fh.close() fh.close()

View File

@ -55,4 +55,5 @@ class JSONSerializer(Serializer):
self.export.get('callback'), self.export.get('callback'),
data) data)
fh.write(data) fh.write(data)
if self.fileobj is None:
fh.close() fh.close()

View File

@ -62,6 +62,15 @@ class FreezeTestCase(unittest.TestCase):
finally: finally:
fh.close() fh.close()
def test_memory_streams(self):
import io
for fmt in ('csv', 'json', 'tabson'):
with io.StringIO() as fd:
freeze(self.tbl.all(), format=fmt, fileobj=fd)
self.assertFalse(fd.closed, 'fileobj was closed for format %s' % fmt)
fd.getvalue() # should not throw
class SerializerTestCase(unittest.TestCase): class SerializerTestCase(unittest.TestCase):