summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/tarfile.py4
-rw-r--r--Lib/test/test_tarfile.py8
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():