diff options
-rw-r--r-- | Lib/tarfile.py | 4 | ||||
-rw-r--r-- | 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(): |