From c234a5245814af7334b5b35cd643b603b7525b50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Sun, 22 Aug 2004 21:28:33 +0000 Subject: Flush bz2 data even if nothing had been written so far. Fixes #1013882. Will backport to 2.3. --- Lib/tarfile.py | 4 ++-- Lib/test/test_tarfile.py | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Lib/tarfile.py b/Lib/tarfile.py index ff9f51f..2d5bf64 100644 --- a/Lib/tarfile.py +++ b/Lib/tarfile.py @@ -350,9 +350,9 @@ class _Stream: if self.closed: return + if self.mode == "w" and self.type != "tar": + self.buf += self.cmp.flush() if self.mode == "w" and self.buf: - if self.type != "tar": - self.buf += self.cmp.flush() self.fileobj.write(self.buf) self.buf = "" if self.type == "gz": diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py index 52b6204..6615602 100644 --- a/Lib/test/test_tarfile.py +++ b/Lib/test/test_tarfile.py @@ -177,7 +177,8 @@ class WriteTest(BaseTest): def setUp(self): mode = self.mode + self.sep + self.comp self.src = tarfile.open(tarname(self.comp), 'r') - self.dst = tarfile.open(tmpname(), mode) + self.dstname = tmpname() + self.dst = tarfile.open(self.dstname, mode) def tearDown(self): self.src.close() @@ -191,6 +192,11 @@ class WriteTest(BaseTest): self.dst.posix = 0 self._test() + def test_small(self): + self.dst.add(os.path.join(os.path.dirname(__file__),"cfgparser.1")) + self.dst.close() + self.assertNotEqual(os.stat(self.dstname).st_size, 0) + def _test(self): for tarinfo in self.src: if not tarinfo.isreg(): -- cgit v0.12