diff --git a/libarchive/entry.py b/libarchive/entry.py index 863dbc7..4ff2cba 100644 --- a/libarchive/entry.py +++ b/libarchive/entry.py @@ -1,5 +1,5 @@ from contextlib import contextmanager -from ctypes import create_string_buffer, string_at +from ctypes import byref, c_char_p, create_string_buffer, c_size_t, c_void_p, string_at from enum import IntEnum import math @@ -493,6 +493,23 @@ def set_stored_digest(self, algorithm_name, value): f"{ffi.libarchive_path}) doesn't support {algorithm_name} digests" ) from None + def get_xattrs(self): + """Returns the extended attributes. + """ + xattrs = {} + + ffi.entry_xattr_reset(self._entry_p) + xattr_next = ffi.entry_xattr_next + + key, value, value_size = c_char_p(), c_void_p(), c_size_t() + key_p, value_p, value_size_p = byref(key), byref(value), byref(value_size) + + while True: + return_code = xattr_next(self._entry_p, key_p, value_p, value_size_p) + if return_code != ffi.ARCHIVE_OK: + break + yield key.value, string_at(value.value, value_size.value) + class ConsumedArchiveEntry(ArchiveEntry): diff --git a/libarchive/ffi.py b/libarchive/ffi.py index d960b59..e6af0c5 100644 --- a/libarchive/ffi.py +++ b/libarchive/ffi.py @@ -205,6 +205,10 @@ def get_write_filter_function(filter_name): ffi('entry_uname_w', [c_archive_entry_p], c_wchar_p) ffi('entry_gname_w', [c_archive_entry_p], c_wchar_p) +ffi('entry_xattr_count', [c_archive_entry_p], c_uint) +ffi('entry_xattr_reset', [c_archive_entry_p], c_uint) +ffi('entry_xattr_next', [c_archive_entry_p, POINTER(c_char_p), POINTER(c_void_p), POINTER(c_size_t)], c_uint) + ffi('entry_set_size', [c_archive_entry_p, c_longlong], None) ffi('entry_set_filetype', [c_archive_entry_p, c_uint], None) ffi('entry_set_uid', [c_archive_entry_p, c_longlong], None) diff --git a/tests/__init__.py b/tests/__init__.py index 7a7f583..5bf445e 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -63,7 +63,9 @@ def get_entries(location): 'isfifo': entry.isfifo, 'isdev': entry.isdev, 'uid': entry.uid, - 'gid': entry.gid + 'gid': entry.gid, + # Convert to str because JSON cannot differentiate between str and bytes. + 'xattrs': {key.decode('utf-8'): value.decode('utf-8') for key,value in entry.get_xattrs()}, } diff --git a/tests/data/file-with-attribute.bsd.tar b/tests/data/file-with-attribute.bsd.tar new file mode 100644 index 0000000..f96d663 Binary files /dev/null and b/tests/data/file-with-attribute.bsd.tar differ diff --git a/tests/data/file-with-attribute.bsd.tar.json b/tests/data/file-with-attribute.bsd.tar.json new file mode 100644 index 0000000..1b6a334 --- /dev/null +++ b/tests/data/file-with-attribute.bsd.tar.json @@ -0,0 +1,20 @@ +[ + { + "gid": 1000, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rwx------", + "mtime": 1748164058.1061919, + "path": "foo", + "size": 4, + "uid": 1000, + "xattrs": { "user.tags": "mytag" } + } +] diff --git a/tests/data/testtar.tar.json b/tests/data/testtar.tar.json index 46e3f0b..1ba545e 100644 --- a/tests/data/testtar.tar.json +++ b/tests/data/testtar.tar.json @@ -1,665 +1,704 @@ [ { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "ustar/conttype", - "size": 7011, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "ustar/regtype", - "size": 7011, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": true, - "isfifo": false, - "islnk": false, - "isreg": false, - "issym": false, - "linkpath": null, - "mode": "rwxr-xr-x", - "mtime": 1041808783, - "path": "ustar/dirtype/", - "size": 0, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": true, - "isfifo": false, - "islnk": false, - "isreg": false, - "issym": false, - "linkpath": null, - "mode": "rwxr-xr-x", - "mtime": 1041808783, - "path": "ustar/dirtype-with-size/", - "size": 0, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": true, - "isreg": false, - "issym": false, - "linkpath": "ustar/regtype", - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "ustar/lnktype", - "size": 0, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": false, - "issym": true, - "linkpath": "regtype", - "mode": "rwxrwxrwx", - "mtime": 1041808783, - "path": "ustar/symtype", - "size": 0, - "uid": 1000 - }, - { - "gid": 100, - "isblk": true, - "ischr": false, - "isdev": true, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": false, - "issym": false, - "linkpath": null, - "mode": "rw-rw----", - "mtime": 1041808783, - "path": "ustar/blktype", - "size": 0, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": true, - "isdev": true, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": false, - "issym": false, - "linkpath": null, - "mode": "rw-rw-rw-", - "mtime": 1041808783, - "path": "ustar/chrtype", - "size": 0, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": true, - "isdir": false, - "isfifo": true, - "islnk": false, - "isreg": false, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "ustar/fifotype", - "size": 0, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "ustar/sparse", - "size": 86016, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "ustar/umlauts-\udcc4\udcd6\udcdc\udce4\udcf6\udcfc\udcdf", - "size": 7011, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "ustar/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/1234567/longname", - "size": 7011, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": false, - "issym": true, - "linkpath": "../linktest1/regtype", - "mode": "rwxrwxrwx", - "mtime": 1041808783, - "path": "./ustar/linktest2/symtype", - "size": 0, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "ustar/linktest1/regtype", - "size": 7011, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": true, - "isreg": false, - "issym": false, - "linkpath": "./ustar/linktest1/regtype", - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "./ustar/linktest2/lnktype", - "size": 0, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": false, - "issym": true, - "linkpath": "ustar/regtype", - "mode": "rwxrwxrwx", - "mtime": 1041808783, - "path": "symtype2", - "size": 0, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "gnu/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longname", - "size": 7011, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": true, - "isreg": false, - "issym": false, - "linkpath": "gnu/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longname", - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "gnu/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longlink", - "size": 0, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "gnu/sparse", - "size": 86016, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "gnu/sparse-0.0", - "size": 86016, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "gnu/sparse-0.1", - "size": 86016, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "gnu/sparse-1.0", - "size": 86016, - "uid": 1000 - }, - { - "gid": 4294967295, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "gnu/regtype-gnu-uid", - "size": 7011, - "uid": 4294967295 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "misc/regtype-old-v7", - "size": 7011, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "misc/regtype-hpux-signed-chksum-\udcc4\udcd6\udcdc\udce4\udcf6\udcfc\udcdf", - "size": 7011, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "misc/regtype-old-v7-signed-chksum-\udcc4\udcd6\udcdc\udce4\udcf6\udcfc\udcdf", - "size": 7011, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": true, - "isfifo": false, - "islnk": false, - "isreg": false, - "issym": false, - "linkpath": null, - "mode": "rwxr-xr-x", - "mtime": 1041808783, - "path": "misc/dirtype-old-v7/", - "size": 0, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "misc/regtype-suntar", - "size": 7011, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "misc/regtype-xstar", - "size": 7011, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "pax/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longname", - "size": 7011, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": true, - "isreg": false, - "issym": false, - "linkpath": "pax/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longname", - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "pax/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longlink", - "size": 0, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "pax/umlauts-\u00c4\u00d6\u00dc\u00e4\u00f6\u00fc\u00df", - "size": 7011, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "pax/regtype1", - "size": 7011, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "pax/regtype2", - "size": 7011, - "uid": 1000 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "pax/regtype3", - "size": 7011, - "uid": 1000 - }, - { - "gid": 123, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "pax/regtype4", - "size": 7011, - "uid": 123 - }, - { - "gid": 1000, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "pax/bad-pax-\udce4\udcf6\udcfc", - "size": 7011, - "uid": 1000 - }, - { - "gid": 0, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "pax/hdrcharset-\udce4\udcf6\udcfc", - "size": 7011, - "uid": 0 - }, - { - "gid": 100, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1041808783, - "path": "misc/eof", - "size": 0, - "uid": 1000 + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "ustar/conttype", + "size": 7011, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "ustar/regtype", + "size": 7011, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": true, + "isfifo": false, + "islnk": false, + "isreg": false, + "issym": false, + "linkpath": null, + "mode": "rwxr-xr-x", + "mtime": 1041808783, + "path": "ustar/dirtype/", + "size": 0, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": true, + "isfifo": false, + "islnk": false, + "isreg": false, + "issym": false, + "linkpath": null, + "mode": "rwxr-xr-x", + "mtime": 1041808783, + "path": "ustar/dirtype-with-size/", + "size": 0, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": true, + "isreg": false, + "issym": false, + "linkpath": "ustar/regtype", + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "ustar/lnktype", + "size": 0, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": false, + "issym": true, + "linkpath": "regtype", + "mode": "rwxrwxrwx", + "mtime": 1041808783, + "path": "ustar/symtype", + "size": 0, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": true, + "ischr": false, + "isdev": true, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": false, + "issym": false, + "linkpath": null, + "mode": "rw-rw----", + "mtime": 1041808783, + "path": "ustar/blktype", + "size": 0, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": true, + "isdev": true, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": false, + "issym": false, + "linkpath": null, + "mode": "rw-rw-rw-", + "mtime": 1041808783, + "path": "ustar/chrtype", + "size": 0, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": true, + "isdir": false, + "isfifo": true, + "islnk": false, + "isreg": false, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "ustar/fifotype", + "size": 0, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "ustar/sparse", + "size": 86016, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "ustar/umlauts-\udcc4\udcd6\udcdc\udce4\udcf6\udcfc\udcdf", + "size": 7011, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "ustar/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/1234567/longname", + "size": 7011, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": false, + "issym": true, + "linkpath": "../linktest1/regtype", + "mode": "rwxrwxrwx", + "mtime": 1041808783, + "path": "./ustar/linktest2/symtype", + "size": 0, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "ustar/linktest1/regtype", + "size": 7011, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": true, + "isreg": false, + "issym": false, + "linkpath": "./ustar/linktest1/regtype", + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "./ustar/linktest2/lnktype", + "size": 0, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": false, + "issym": true, + "linkpath": "ustar/regtype", + "mode": "rwxrwxrwx", + "mtime": 1041808783, + "path": "symtype2", + "size": 0, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "gnu/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longname", + "size": 7011, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": true, + "isreg": false, + "issym": false, + "linkpath": "gnu/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longname", + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "gnu/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longlink", + "size": 0, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "gnu/sparse", + "size": 86016, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "gnu/sparse-0.0", + "size": 86016, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "gnu/sparse-0.1", + "size": 86016, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "gnu/sparse-1.0", + "size": 86016, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 4294967295, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "gnu/regtype-gnu-uid", + "size": 7011, + "uid": 4294967295, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "misc/regtype-old-v7", + "size": 7011, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "misc/regtype-hpux-signed-chksum-\udcc4\udcd6\udcdc\udce4\udcf6\udcfc\udcdf", + "size": 7011, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "misc/regtype-old-v7-signed-chksum-\udcc4\udcd6\udcdc\udce4\udcf6\udcfc\udcdf", + "size": 7011, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": true, + "isfifo": false, + "islnk": false, + "isreg": false, + "issym": false, + "linkpath": null, + "mode": "rwxr-xr-x", + "mtime": 1041808783, + "path": "misc/dirtype-old-v7/", + "size": 0, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "misc/regtype-suntar", + "size": 7011, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "misc/regtype-xstar", + "size": 7011, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "pax/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longname", + "size": 7011, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": true, + "isreg": false, + "issym": false, + "linkpath": "pax/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longname", + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "pax/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longlink", + "size": 0, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "pax/umlauts-\u00c4\u00d6\u00dc\u00e4\u00f6\u00fc\u00df", + "size": 7011, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "pax/regtype1", + "size": 7011, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "pax/regtype2", + "size": 7011, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "pax/regtype3", + "size": 7011, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 123, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "pax/regtype4", + "size": 7011, + "uid": 123, + "xattrs": {} + }, + { + "gid": 1000, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "pax/bad-pax-\udce4\udcf6\udcfc", + "size": 7011, + "uid": 1000, + "xattrs": {} + }, + { + "gid": 0, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "pax/hdrcharset-\udce4\udcf6\udcfc", + "size": 7011, + "uid": 0, + "xattrs": {} + }, + { + "gid": 100, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1041808783, + "path": "misc/eof", + "size": 0, + "uid": 1000, + "xattrs": {} } ] diff --git a/tests/data/unicode.tar.json b/tests/data/unicode.tar.json index 85c631e..be5a4bb 100644 --- a/tests/data/unicode.tar.json +++ b/tests/data/unicode.tar.json @@ -1,53 +1,56 @@ [ { - "gid": 513, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": true, - "isfifo": false, - "islnk": false, - "isreg": false, - "issym": false, - "linkpath": null, - "mode": "rwx------", - "mtime": 1319027321, - "path": "2859/", - "size": 0, - "uid": 500 - }, + "gid": 513, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": true, + "isfifo": false, + "islnk": false, + "isreg": false, + "issym": false, + "linkpath": null, + "mode": "rwx------", + "mtime": 1319027321, + "path": "2859/", + "size": 0, + "uid": 500, + "xattrs": {} + }, { - "gid": 513, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rwx------", - "mtime": 1319027194, - "path": "2859/Copy of h\u00e0nz\u00ec-somefile.txt", - "size": 0, - "uid": 500 - }, + "gid": 513, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rwx------", + "mtime": 1319027194, + "path": "2859/Copy of h\u00e0nz\u00ec-somefile.txt", + "size": 0, + "uid": 500, + "xattrs": {} + }, { - "gid": 513, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rwx------", - "mtime": 1319027194, - "path": "2859/h\u00e0nz\u00ec?-somefile.txt ", - "size": 0, - "uid": 500 + "gid": 513, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rwx------", + "mtime": 1319027194, + "path": "2859/h\u00e0nz\u00ec?-somefile.txt ", + "size": 0, + "uid": 500, + "xattrs": {} } -] \ No newline at end of file +] diff --git a/tests/data/unicode.zip.json b/tests/data/unicode.zip.json index a07ba81..668ee8d 100644 --- a/tests/data/unicode.zip.json +++ b/tests/data/unicode.zip.json @@ -1,36 +1,38 @@ [ { - "gid": 1000, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": true, - "isfifo": false, - "islnk": false, - "isreg": false, - "issym": false, - "linkpath": null, - "mode": "rwxr-xr-x", - "mtime": 1268678396, - "path": "a/", - "size": 0, - "uid": 1000 - }, + "gid": 1000, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": true, + "isfifo": false, + "islnk": false, + "isreg": false, + "issym": false, + "linkpath": null, + "mode": "rwxr-xr-x", + "mtime": 1268678396, + "path": "a/", + "size": 0, + "uid": 1000, + "xattrs": {} + }, { - "gid": 1000, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-r--r--", - "mtime": 1268678259, - "path": "a/gr\u00fcn.png", - "size": 362, - "uid": 1000 + "gid": 1000, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-r--r--", + "mtime": 1268678259, + "path": "a/gr\u00fcn.png", + "size": 362, + "uid": 1000, + "xattrs": {} } -] \ No newline at end of file +] diff --git a/tests/data/unicode2.zip.json b/tests/data/unicode2.zip.json index bd34813..77b1e4b 100644 --- a/tests/data/unicode2.zip.json +++ b/tests/data/unicode2.zip.json @@ -1,36 +1,38 @@ [ { - "gid": 0, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": true, - "isfifo": false, - "islnk": false, - "isreg": false, - "issym": false, - "linkpath": null, - "mode": "rwxrwxr-x", - "mtime": 1381752672, - "path": "a/", - "size": 0, - "uid": 0 - }, + "gid": 0, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": true, + "isfifo": false, + "islnk": false, + "isreg": false, + "issym": false, + "linkpath": null, + "mode": "rwxrwxr-x", + "mtime": 1381752672, + "path": "a/", + "size": 0, + "uid": 0, + "xattrs": {} + }, { - "gid": 0, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-rw-r--", - "mtime": 1268681860, - "path": "a/gru\u0308n.png", - "size": 362, - "uid": 0 + "gid": 0, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-rw-r--", + "mtime": 1268681860, + "path": "a/gru\u0308n.png", + "size": 362, + "uid": 0, + "xattrs": {} } -] \ No newline at end of file +] diff --git "a/tests/data/\355\224\204\353\241\234\352\267\270\353\236\250.zip.json" "b/tests/data/\355\224\204\353\241\234\352\267\270\353\236\250.zip.json" index 9ba3534..ff32acc 100644 --- "a/tests/data/\355\224\204\353\241\234\352\267\270\353\236\250.zip.json" +++ "b/tests/data/\355\224\204\353\241\234\352\267\270\353\236\250.zip.json" @@ -1,36 +1,38 @@ [ { - "gid": 502, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-rw-r--", - "mtime": 1390485689, - "path": "hello.txt", - "size": 14, - "uid": 502 - }, + "gid": 502, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-rw-r--", + "mtime": 1390485689, + "path": "hello.txt", + "size": 14, + "uid": 502, + "xattrs": {} + }, { - "gid": 502, - "isblk": false, - "ischr": false, - "isdev": false, - "isdir": false, - "isfifo": false, - "islnk": false, - "isreg": true, - "issym": false, - "linkpath": null, - "mode": "rw-rw-r--", - "mtime": 1390485651, - "path": "\ud504\ub85c\uadf8\ub7a8.txt", - "size": 13, - "uid": 502 + "gid": 502, + "isblk": false, + "ischr": false, + "isdev": false, + "isdir": false, + "isfifo": false, + "islnk": false, + "isreg": true, + "issym": false, + "linkpath": null, + "mode": "rw-rw-r--", + "mtime": 1390485651, + "path": "\ud504\ub85c\uadf8\ub7a8.txt", + "size": 13, + "uid": 502, + "xattrs": {} } -] \ No newline at end of file +] diff --git a/tests/test_entry.py b/tests/test_entry.py index 7c8afa7..71fce3e 100644 --- a/tests/test_entry.py +++ b/tests/test_entry.py @@ -46,6 +46,7 @@ def test_entry_properties(): assert b'rw' in entry.strmode assert entry.pathname == entry.path assert entry.pathname == entry.name + assert not list(entry.get_xattrs()) def test_check_ArchiveEntry_against_TarInfo(): @@ -54,6 +55,7 @@ def test_check_ArchiveEntry_against_TarInfo(): tarinfos = list(get_tarinfos(path)) entries = list(get_entries(path)) for tarinfo, entry in zip(tarinfos, entries): + del entry['xattrs'] # tarfile stores xattrs in paxheaders['LIBARCHIVE.xattr.*']. assert tarinfo == entry assert len(tarinfos) == len(entries) @@ -75,6 +77,8 @@ def test_check_archiveentry_with_unicode_and_binary_entries_tar(): def test_check_archiveentry_with_unicode_and_binary_entries_zip(): check_entries(join(data_dir, 'unicode.zip')) +def test_check_archiveentry_with_extended_attributes(): + check_entries(join(data_dir, 'file-with-attribute.bsd.tar')) def test_check_archiveentry_with_unicode_and_binary_entries_zip2(): check_entries(join(data_dir, 'unicode2.zip'), ignore='mode')