diff options
author | Lars Gustäbel <lars@gustaebel.de> | 2007-08-21 12:17:05 (GMT) |
---|---|---|
committer | Lars Gustäbel <lars@gustaebel.de> | 2007-08-21 12:17:05 (GMT) |
commit | 3741effcf8de2af3224e20af2865b7e378e59855 (patch) | |
tree | 8787415d72087c64291b10cb75949662f0b3deab /Lib/test/test_tarfile.py | |
parent | 4566c71e0ea13acd519b732eda3cf9d70d3a62ca (diff) | |
download | cpython-3741effcf8de2af3224e20af2865b7e378e59855.zip cpython-3741effcf8de2af3224e20af2865b7e378e59855.tar.gz cpython-3741effcf8de2af3224e20af2865b7e378e59855.tar.bz2 |
Fall back to 'ascii' encoding if sys.getfilesystemencoding() returns
None. Remove encoding and errors argument from pax create methods in
TarInfo, pax always uses UTF-8.
Adapt the documentation and tests to the new string/unicode concept.
Diffstat (limited to 'Lib/test/test_tarfile.py')
-rw-r--r-- | Lib/test/test_tarfile.py | 45 |
1 files changed, 28 insertions, 17 deletions
diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py index 0585131..913ab60 100644 --- a/Lib/test/test_tarfile.py +++ b/Lib/test/test_tarfile.py @@ -780,8 +780,8 @@ class PaxWriteTest(GNUWriteTest): tar = tarfile.open(tmpname, "w", format=tarfile.PAX_FORMAT, encoding="iso8859-1") t = tarfile.TarInfo() - t.name = "\xe4\xf6\xfc" # non-ASCII - t.uid = 8**8 # too large + t.name = "\xe4\xf6\xfc" # non-ASCII + t.uid = 8**8 # too large t.pax_headers = pax_headers tar.addfile(t) tar.close() @@ -794,7 +794,6 @@ class PaxWriteTest(GNUWriteTest): class UstarUnicodeTest(unittest.TestCase): - # All *UnicodeTests FIXME format = tarfile.USTAR_FORMAT @@ -814,11 +813,14 @@ class UstarUnicodeTest(unittest.TestCase): tar.close() tar = tarfile.open(tmpname, encoding=encoding) - self.assert_(type(tar.getnames()[0]) is not bytes) self.assertEqual(tar.getmembers()[0].name, name) tar.close() def test_unicode_filename_error(self): + if self.format == tarfile.PAX_FORMAT: + # PAX_FORMAT ignores encoding in write mode. + return + tar = tarfile.open(tmpname, "w", format=self.format, encoding="ascii", errors="strict") tarinfo = tarfile.TarInfo() @@ -839,21 +841,24 @@ class UstarUnicodeTest(unittest.TestCase): tar.close() def test_uname_unicode(self): - for name in ("\xe4\xf6\xfc", "\xe4\xf6\xfc"): - t = tarfile.TarInfo("foo") - t.uname = name - t.gname = name - - fobj = io.BytesIO() - tar = tarfile.open("foo.tar", mode="w", fileobj=fobj, format=self.format, encoding="iso8859-1") - tar.addfile(t) - tar.close() - fobj.seek(0) + t = tarfile.TarInfo("foo") + t.uname = "\xe4\xf6\xfc" + t.gname = "\xe4\xf6\xfc" + + tar = tarfile.open(tmpname, mode="w", format=self.format, encoding="iso8859-1") + tar.addfile(t) + tar.close() - tar = tarfile.open("foo.tar", fileobj=fobj, encoding="iso8859-1") + tar = tarfile.open(tmpname, encoding="iso8859-1") + t = tar.getmember("foo") + self.assertEqual(t.uname, "\xe4\xf6\xfc") + self.assertEqual(t.gname, "\xe4\xf6\xfc") + + if self.format != tarfile.PAX_FORMAT: + tar = tarfile.open(tmpname, encoding="ascii") t = tar.getmember("foo") - self.assertEqual(t.uname, "\xe4\xf6\xfc") - self.assertEqual(t.gname, "\xe4\xf6\xfc") + self.assertEqual(t.uname, "\ufffd\ufffd\ufffd") + self.assertEqual(t.gname, "\ufffd\ufffd\ufffd") class GNUUnicodeTest(UstarUnicodeTest): @@ -861,6 +866,11 @@ class GNUUnicodeTest(UstarUnicodeTest): format = tarfile.GNU_FORMAT +class PAXUnicodeTest(UstarUnicodeTest): + + format = tarfile.PAX_FORMAT + + class AppendTest(unittest.TestCase): # Test append mode (cp. patch #1652681). @@ -1047,6 +1057,7 @@ def test_main(): PaxWriteTest, UstarUnicodeTest, GNUUnicodeTest, + PAXUnicodeTest, AppendTest, LimitsTest, MiscTest, |