From: Martin v. Löwis Date: Sun, 22 Aug 2004 21:28:33 +0000 (+0000) Subject: Flush bz2 data even if nothing had been written so far. Fixes #1013882. X-Git-Tag: v2.4a3~152 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c234a5245814af7334b5b35cd643b603b7525b50;p=python Flush bz2 data even if nothing had been written so far. Fixes #1013882. Will backport to 2.3. --- diff --git a/Lib/tarfile.py b/Lib/tarfile.py index ff9f51f265..2d5bf642ae 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 52b62048da..66156023f7 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():