libarchive Validation
Port build from safelibs/port-libarchive at commit 44530269d9c3 (release build-44530269d9c3)
Tests
Archive metadata listing behavior Original / libarchive / archive-metadata-listing Passed
archive read API smoke Original / libarchive / archive-read-api-smoke Passed
bsdcpio copy archive round trip Original / libarchive / bsdcpio-copy-roundtrip Passed
bsdtar tar and zip round trip Original / libarchive / bsdtar-tar-zip-roundtrip Passed
Path traversal rejection Original / libarchive / path-traversal-rejection Passed
python libarchive add entries pax to zip Original / libarchive / usage-python-libarchive-c-add-entries-pax-to-zip Passed
python-libarchive-c cpio binary roundtrip Original / libarchive / usage-python-libarchive-c-batch10-cpio-binary-roundtrip Passed
Writes a repeated binary payload into a cpio archive via python-libarchive-c and verifies the bytes match after read-back.
python-libarchive-c pax binary payload Original / libarchive / usage-python-libarchive-c-batch10-pax-binary-payload Passed
Writes a 64-byte binary payload into a pax archive via python-libarchive-c and verifies all bytes survive the round trip.
python-libarchive-c tar gzip filter roundtrip Original / libarchive / usage-python-libarchive-c-batch10-tar-gzip-roundtrip Passed
Writes a tar archive through the gzip filter via python-libarchive-c and verifies the entry payload survives a read-back.
python-libarchive-c tar seven empty files Original / libarchive / usage-python-libarchive-c-batch10-tar-many-empties Passed
Writes seven zero-byte files into a tar via python-libarchive-c and verifies all entries are read back with empty payloads.
python-libarchive-c tar mixed empty and non-empty Original / libarchive / usage-python-libarchive-c-batch10-tar-size-zero-mixed Passed
Writes a tar containing two empty and two four-byte entries via python-libarchive-c and verifies the metadata sizes match each entry.
python-libarchive-c tar zstd memory reader Original / libarchive / usage-python-libarchive-c-batch10-tar-zstd-memory-reader Passed
Writes a zstd-filtered tar via python-libarchive-c and verifies memory_reader returns both entries with their payloads.
python-libarchive-c bzip2 filter listing Original / libarchive / usage-python-libarchive-c-batch10-zip-bzip2-filter-fallback Passed
Writes a tar through the bzip2 filter via python-libarchive-c and verifies the entry name appears in the listing.
python-libarchive-c zip deep nested path Original / libarchive / usage-python-libarchive-c-batch10-zip-deep-path Passed
Writes a six-segment nested pathname into a zip via python-libarchive-c and verifies the full path survives the round trip.
python-libarchive-c zip large payload Original / libarchive / usage-python-libarchive-c-batch10-zip-large-payload Passed
Writes a multi-kilobyte repeating payload into a zip via python-libarchive-c and verifies the read-back bytes match exactly.
python-libarchive-c zip preserves write order Original / libarchive / usage-python-libarchive-c-batch10-zip-name-order-preserved Passed
Writes three zip entries in non-alphabetical order via python-libarchive-c and verifies the reader returns them in the same insertion order.
libarchive bzip2 memory reader Original / libarchive / usage-python-libarchive-c-batch11-bzip2-memory-reader Passed
libarchive cpio name order Original / libarchive / usage-python-libarchive-c-batch11-cpio-name-order Passed
libarchive gzip two entries Original / libarchive / usage-python-libarchive-c-batch11-gzip-two-entries Passed
libarchive memory empty tar Original / libarchive / usage-python-libarchive-c-batch11-memory-empty-tar Passed
libarchive pax size map Original / libarchive / usage-python-libarchive-c-batch11-pax-size-map Passed
libarchive tar large blocks Original / libarchive / usage-python-libarchive-c-batch11-tar-large-blocks Passed
libarchive tar leading directory Original / libarchive / usage-python-libarchive-c-batch11-tar-leading-dir Passed
libarchive zip CRLF payload Original / libarchive / usage-python-libarchive-c-batch11-zip-crlf-payload Passed
libarchive zip JSON payload Original / libarchive / usage-python-libarchive-c-batch11-zip-json-payload Passed
libarchive zstd size check Original / libarchive / usage-python-libarchive-c-batch11-zstd-size-check Passed
python-libarchive-c 7zip read Original / libarchive / usage-python-libarchive-c-batch12-7zip-read Passed
python-libarchive-c ar svr4 roundtrip Original / libarchive / usage-python-libarchive-c-batch12-ar-svr4-roundtrip Passed
Writes an ar svr4 (System V) archive through python-libarchive-c and reads back the member payloads.
python-libarchive-c extract_file to cwd Original / libarchive / usage-python-libarchive-c-batch12-extract-file-to-cwd Passed
Builds a tar archive then unpacks it via libarchive.extract_file into a chdir'd directory and validates payloads on disk.
python-libarchive-c hardlink from disk Original / libarchive / usage-python-libarchive-c-batch12-hardlink-from-disk Passed
Writes a tar archive containing a regular file plus a hardlink entry pointing back to it via libarchive's C ABI, then reads it back through python-libarchive-c and verifies islnk is True with linkname pointing at the original.
python-libarchive-c mtree roundtrip Original / libarchive / usage-python-libarchive-c-batch12-mtree-roundtrip Passed
Writes an mtree-format archive via python-libarchive-c and verifies entry names roundtrip on read.
python-libarchive-c raw gzip stream Original / libarchive / usage-python-libarchive-c-batch12-raw-gzip-stream Passed
Reads a plain gzip-compressed file using format_name="raw" through python-libarchive-c and verifies the payload bytes match.
python-libarchive-c symlink from disk Original / libarchive / usage-python-libarchive-c-batch12-symlink-from-disk Passed
Adds a real on-disk symlink via add_files and verifies entry.issym and linkname are preserved on read.
python-libarchive-c tar 1000 entries Original / libarchive / usage-python-libarchive-c-batch12-tar-1000-entries Passed
Writes 1000 small entries into a tar archive via python-libarchive-c and verifies count and ordering on read.
python-libarchive-c very long path Original / libarchive / usage-python-libarchive-c-batch12-very-long-path Passed
Stores an entry whose pathname exceeds 200 characters in a pax archive and verifies the path roundtrips through python-libarchive-c.
python-libarchive-c zip explicit format read Original / libarchive / usage-python-libarchive-c-batch12-zip-read-format Passed
python-libarchive-c archive_entry_clear reuse on writer Original / libarchive / usage-python-libarchive-c-batch13-archive-entry-clear-reuse Passed
Reuses a single archive_entry pointer across two writes by calling archive_entry_clear via ctypes between them, then verifies the resulting tar contains both entries with their respective independent paths and sizes.
python-libarchive-c read .deb as ar archive Original / libarchive / usage-python-libarchive-c-batch13-deb-as-ar-archive Passed
Builds a minimal ar (.deb-style) archive containing the standard debian-binary, control.tar, and data.tar member names via python-libarchive-c then reads it back, asserting libarchive auto-detects the ar format and exposes all three member names.
python-libarchive-c ArchiveEntry set_perm octal verified Original / libarchive / usage-python-libarchive-c-batch13-entry-set-perm-octal Passed
Writes a tar archive whose entry permissions are set explicitly via libarchive.ffi.entry_set_perm with a non-default octal mode and verifies the same low-9 mode bits surface back through entry.mode on read.
python-libarchive-c entry size+uid+gid+mtime read after write Original / libarchive / usage-python-libarchive-c-batch13-entry-uid-gid-mtime-read Passed
Writes a ustar archive whose entry uid/gid/mtime are set explicitly through libarchive's C ABI via ctypes, then verifies size, uid, gid, and mtime roundtrip on read through python-libarchive-c.
python-libarchive-c iter get_blocks across multiple entries Original / libarchive / usage-python-libarchive-c-batch13-iter-blocks-multi-entries Passed
Writes a tar archive with three large entries and consumes each entry's payload by iterating get_blocks() one chunk at a time, asserting block-count > 0 and accumulated bytes equal the original payload size for every member.
python-libarchive-c format auto-detection across formats Original / libarchive / usage-python-libarchive-c-batch13-mixed-format-detection Passed
Writes the same payload set into four distinct archive containers (gnutar, ustar, pax, cpio) and verifies libarchive's auto-detection on read returns identical pathname+payload mappings for every container.
python-libarchive-c pax directory entry size is zero Original / libarchive / usage-python-libarchive-c-batch13-pax-directory-size-zero Passed
Writes a pax archive containing two explicit directory entries plus a regular file and verifies entry.size for each directory is exactly 0 while the file's size matches its payload.
python-libarchive-c tar.gz from BytesIO via memory_reader Original / libarchive / usage-python-libarchive-c-batch13-targz-bytesio-memory-reader Passed
Writes a gzip-filtered tar to disk, loads its bytes through io.BytesIO and feeds the buffer's value into libarchive.memory_reader, asserting both entries roundtrip with payload.
python-libarchive-c ustar explicit directory entry Original / libarchive / usage-python-libarchive-c-batch13-ustar-explicit-directory Passed
Writes a ustar archive containing an explicit directory entry (filetype=0o040000) plus a child file via python-libarchive-c and asserts the listed members include both the directory and the child while the directory entry exposes size 0.
python-libarchive-c extract preserves explicit perm bits Original / libarchive / usage-python-libarchive-c-batch13-write-then-extract-modes Passed
Builds a ustar archive whose entries are stamped with explicit non-default mode bits via libarchive.ffi, extracts it through libarchive.extract_file with EXTRACT_PERM, and asserts the on-disk modes match the values that were written into the entry headers.
python-libarchive-c 7zip read with multiple files Original / libarchive / usage-python-libarchive-c-batch14-7zip-multi-files-read Passed
Writes a 7z archive containing five distinct member files (varying payload sizes and content) through python-libarchive-c, then reads the archive back and verifies every name, size, and payload survives. Distinct from the existing two-entry 7zip test because each entry is read with size assertions and the read order is checked against the deterministic insertion order.
python-libarchive-c ar bsd archive with explicit member filenames Original / libarchive / usage-python-libarchive-c-batch14-ar-multi-member-explicit-names Passed
Builds a BSD ar archive with five explicitly named members of varying sizes via add_file_from_memory and reads each one back, verifying the archive magic, the number of members, the exact member names (after stripping libarchive's BSD-format trailing slash), and the payload bytes. The existing ar svr4 test only covers two members and svr4 layout; this case targets the bsd layout and a richer member set.
python-libarchive-c iterate archive with entry.size > 1MB Original / libarchive / usage-python-libarchive-c-batch14-entry-large-size-over-1mb Passed
Writes a ustar archive containing one entry whose payload is 2 MiB plus a small entry, then iterates and asserts entry.size matches the on-the-wire payload length for the >1 MiB entry exactly. The payload itself is consumed via get_blocks() inside the loop and its length is also verified independently of the header-declared size.
python-libarchive-c entry isreg/isdir/isfifo/issym flags Original / libarchive / usage-python-libarchive-c-batch14-entry-type-flags-mixed Passed
Builds a pax archive containing one regular file, one directory, one fifo, and one symbolic link (filetype bits stamped via archive_entry_set_filetype, with set_symlink supplied through ctypes for the link target). Reads every entry back and asserts entry.isreg, entry.isdir, entry.isfifo, and entry.issym each report True only on the matching entry. Also asserts entry.islnk (which the binding implements as a hardlink check) reports False on the symlink so the two link concepts are not conflated.
python-libarchive-c entry uname/gname strings preserved Original / libarchive / usage-python-libarchive-c-batch14-entry-uname-gname-roundtrip Passed
Sets archive_entry_set_uname / archive_entry_set_gname via ctypes against libarchive.so.13 (libarchive_c 2.9 does not wrap them), writes a ustar archive, then reads the entries back and uses archive_entry_uname / archive_entry_gname through ctypes to verify the symbolic owner names round trip, alongside numeric uid/gid which the python binding does expose.
python-libarchive-c iterate pathname and mtime in single loop Original / libarchive / usage-python-libarchive-c-batch14-iterate-pathname-mtime-single-loop Passed
Writes a tar archive whose entries each carry an explicit mtime stamped via archive_entry.set_mtime, then walks the archive in a single loop reading both entry.pathname and entry.mtime alongside the payload. Asserts the (name, mtime) pair returned by the reader matches the values written, exercising the wrapped accessors in tandem rather than via separate iteration passes.
python-libarchive-c tar with nested directory depth 5 Original / libarchive / usage-python-libarchive-c-batch14-nested-directory-depth-5 Passed
Constructs a tar archive carrying a single regular file at a deterministic nested path five components deep (a/b/c/d/e/leaf.txt) plus distractor entries at intermediate depths, then reads it back and asserts every nested path and payload survives. Exercises path handling for deeper trees than the existing nested-directory testcases (which top out at depth 3).
python-libarchive-c pax extended attributes round trip Original / libarchive / usage-python-libarchive-c-batch14-pax-extended-attributes Passed
Writes a pax archive whose entries carry user-namespace extended attributes set via archive_entry_xattr_add_entry (libarchive_c 2.9 does not wrap xattr APIs, so they are pulled from libarchive.so.13 with ctypes). Reads the archive back and walks the xattrs through archive_entry_xattr_reset / archive_entry_xattr_next, asserting both the names and values survive the pax round trip.
python-libarchive-c read_disk feed into ustar archive via ctypes Original / libarchive / usage-python-libarchive-c-batch14-read-disk-into-ustar Passed
Stages a small directory tree on disk, opens an archive_read_disk handle through ctypes against libarchive.so.13 (libarchive_c 2.9 does not wrap the read_disk API), walks each filesystem path with archive_read_disk_open / archive_read_next_header2 / archive_read_disk_descend, and feeds every visited entry into a python-libarchive-c file_writer in the ustar variant. The resulting archive is read back and verified to contain every staged path with its original payload bytes.
python-libarchive-c tar.gz explicit gzip compression-level 6 Original / libarchive / usage-python-libarchive-c-batch14-targz-explicit-level-6 Passed
Writes a tar.gz with the gzip filter and an explicit compression-level=6 set via the file_writer options keyword (which feeds archive_write_set_options before the writer is opened, since the binding raises if options are set after open). Reads the archive back to verify the entries and payload survive the configured-level round trip and that the gzip magic header is present.
python-libarchive-c file_writer cpio with on-disk source files Original / libarchive / usage-python-libarchive-c-batch15-cpio-from-disk Passed
Stages a small directory of regular files on disk, then opens a python-libarchive-c file_writer in the cpio (newc) format and feeds each on-disk file in via writer.add_files. Reads the resulting cpio archive back through file_reader and verifies that every staged file is present with its original payload bytes. Exercises the file_writer.add_files convenience API alongside cpio so it complements the existing in-memory cpio cases.
python-libarchive-c entry atime roundtrip via ctypes Original / libarchive / usage-python-libarchive-c-batch15-entry-atime-roundtrip Passed
Writes a pax archive whose entries carry an explicit atime stamped through libarchive.so.13 archive_entry_set_atime (libarchive_c 2.9 does not expose an atime setter on ArchiveEntry). Reads each entry back and asserts entry.atime equals the value originally written. pax is used because ustar lacks the extended-header records needed to preserve atime through the round trip.
python-libarchive-c entry isdev/isblk/ischr return False on regular files Original / libarchive / usage-python-libarchive-c-batch15-entry-isdev-isblk-ischr-false Passed
Writes a gnutar archive containing only regular file entries via python-libarchive-c, then reads each entry back and asserts entry.isdev, entry.isblk, and entry.ischr all evaluate False on every entry. entry.isreg is asserted True on the same entries to confirm the filetype check is wired up correctly. Pins the negative-side semantics of the device-type predicates that the existing positive-side tests don't cover.
python-libarchive-c iso9660 write+read roundtrip Original / libarchive / usage-python-libarchive-c-batch15-iso9660-roundtrip Passed
Writes an iso9660 archive containing two regular files via python-libarchive-c file_writer, then reads it back and verifies entry pathnames and payloads roundtrip. iso9660 uppercases pathnames and may emit additional Joliet/Rockridge directory shadows, so the assertion compares against a normalised (uppercased, basename-only) view of the entries.
python-libarchive-c iterate without consuming entry data Original / libarchive / usage-python-libarchive-c-batch15-iterate-skip-data Passed
Writes a multi-entry gnutar archive, then reads it back and walks every entry without ever calling entry.get_blocks(). Verifies that pathnames and sizes are still exposed correctly and that iteration completes cleanly when the consumer skips over each entry's data. Exercises libarchive's auto-skip path between headers, which is the default behaviour when the caller never reads from a header.
python-libarchive-c pax numeric uid+gid via ctypes Original / libarchive / usage-python-libarchive-c-batch15-pax-numeric-uid-gid-ctypes Passed
Writes a pax archive whose entries carry numeric uid and gid stamped through libarchive.so.13 archive_entry_set_uid / archive_entry_set_gid (libarchive_c 2.9 does not expose uid/gid setters on ArchiveEntry). Reads each entry back and asserts entry.uid and entry.gid equal the numeric values written. pax preserves arbitrarily large numeric ids in extended-header records, so the test uses values that exceed the ustar octal field width.
python-libarchive-c raw bzip2 stream Original / libarchive / usage-python-libarchive-c-batch15-raw-bz2-stream Passed
Writes a plain bzip2-compressed file with the system bzip2 tool, then reads it through python-libarchive-c using format_name="raw" so libarchive yields the synthetic single "data" entry. Drains the entry via entry.get_blocks() inside the iteration loop (raw format requires the block stream be consumed before advancing) and verifies the decompressed payload bytes match the original.
python-libarchive-c tar 5000 entries iteration Original / libarchive / usage-python-libarchive-c-batch15-tar-5000-entries-iteration Passed
Writes 5000 small entries into a gnutar archive via add_file_from_memory, then reads the archive back and verifies the iterator yields exactly 5000 entries in insertion order with their declared sizes intact. Stresses the libarchive read iterator across a much larger entry count than the existing 1000-entry case so iteration cost and bookkeeping are exercised.
python-libarchive-c tar.bz2 write+read with filter detection Original / libarchive / usage-python-libarchive-c-batch15-tar-bz2-filter-detection Passed
Writes a gnutar archive through the bzip2 filter via python-libarchive-c, then reads it back without specifying the filter so libarchive's bidder must auto-detect bzip2 from the magic bytes. Verifies the file header is BZh, the entry payload roundtrips, and the on-disk file is materially smaller than a plain tar of the same payload (so the filter actually compressed).
python-libarchive-c tar single entry under 100 bytes Original / libarchive / usage-python-libarchive-c-batch15-tar-tiny-single-entry Passed
Writes a gnutar archive containing exactly one entry whose payload is 47 bytes (well under 100), then reads it back and verifies the iterator yields exactly one entry with the declared pathname, size, and payload. Sanity-checks that a sub-block-size payload still rounds out to a tar block boundary on disk so the writer is padding correctly.
python-libarchive-c 7z readback with explicit format_name hint Original / libarchive / usage-python-libarchive-c-batch16-7z-readback-format-hint Passed
Writes a 7z archive via python-libarchive-c file_writer, then re-reads it through memory_reader using an explicit format_name="7zip" hint (rather than auto-detection), confirming the named-format reader path returns the same entries and payloads.
python-libarchive-c manual archive_entry_new + archive_entry_free via ctypes Original / libarchive / usage-python-libarchive-c-batch16-archive-entry-free-via-ctypes Passed
Allocates an archive_entry by calling archive_entry_new directly through libarchive.so.13 (bypassing libarchive_c's new_archive_entry context manager), populates it, writes one entry, then explicitly cleans it up by calling archive_entry_free via ctypes. Verifies the resulting tar parses correctly afterwards. Exercises the manual lifecycle path that a C consumer would use.
python-libarchive-c cpio TRAILER!!! sentinel present Original / libarchive / usage-python-libarchive-c-batch16-cpio-trailer-marker Passed
Writes a cpio archive (libarchive_c default cpio format which is the odc/070707 magic) and asserts the raw archive bytes contain the canonical "TRAILER!!!" sentinel that closes a cpio stream. Re-reads the archive to confirm the entries themselves still parse correctly and the sentinel is treated as an end-of-archive marker rather than a synthetic entry.
python-libarchive-c ArchiveEntry.strmode rendering Original / libarchive / usage-python-libarchive-c-batch16-entry-strmode-string Passed
Writes a ustar archive whose entries carry a range of explicit permission bits set via libarchive.ffi.entry_set_perm, then reads the archive back and asserts ArchiveEntry.strmode (which wraps archive_entry_strmode) renders the expected ten-character mode string for each entry.
python-libarchive-c get_blocks explicit block_size hint Original / libarchive / usage-python-libarchive-c-batch16-iter-blocks-large-block-size Passed
Streams a large entry's payload via ArchiveEntry.get_blocks(block_size=131072) (passing an explicit block-size hint instead of the default page_size), verifies every yielded block is at most the requested size, and confirms the concatenated bytes match the original payload. Exercises the block_size keyword argument on the iterator.
python-libarchive-c multi-format readers via explicit format_name Original / libarchive / usage-python-libarchive-c-batch16-multi-format-explicit-readers Passed
Writes three archives in distinct container formats (gnutar, zip, cpio) and reads each one back through file_reader with an explicit format_name hint matching its on-disk format, exercising the named-format reader code path for each. Asserts every archive's entries and payloads round trip correctly under the explicit format_name path.
python-libarchive-c pax pathname above 1024 chars Original / libarchive / usage-python-libarchive-c-batch16-pax-pathname-1024 Passed
Stores an entry whose pathname is well above 1024 characters in a pax archive; ustar header path/prefix fields cap at 100/155 bytes so libarchive must emit a pax extended header carrying the long path. Reads it back and verifies the full pathname survives the round trip and the payload is intact.
python-libarchive-c tar.lz4 file magic identification Original / libarchive / usage-python-libarchive-c-batch16-tar-lz4-file-magic Passed
Writes a gnutar archive through the lz4 filter via python-libarchive-c, asserts the lz4 frame magic on disk, runs the file(1) command and confirms it identifies the payload as LZ4 compressed data, then reads the archive back and verifies the entries.
python-libarchive-c tar mtime=0 round trip Original / libarchive / usage-python-libarchive-c-batch16-tar-mtime-zero-roundtrip Passed
Writes a ustar archive whose entries explicitly carry mtime=0 (epoch) via libarchive.ffi.entry_set_mtime, reads the archive back, and asserts every entry's mtime is exactly 0 on read. Exercises the corner case where the timestamp field is the zero sentinel but must still round trip rather than being treated as "unset".
python-libarchive-c zip writer with compression=store option Original / libarchive / usage-python-libarchive-c-batch16-zip-options-store Passed
Writes a zip archive with the file_writer options keyword set to "zip:compression=store" so libarchive emits each entry as a stored (no-compression) zip member. Verifies the PK signature on disk and that the entry payloads survive the round trip; the "store" path keeps the compressed-size and uncompressed-size of each member identical, which we can confirm via libarchive's reported entry.size.
python-libarchive-c truncated zip raises ArchiveError Original / libarchive / usage-python-libarchive-c-batch17-corrupt-zip-rejected Passed
Writes a valid zip archive, truncates it to roughly half its length and zeros out a chunk of the deflate payload, then feeds the corrupt bytes through libarchive.memory_reader. Asserts that iteration raises libarchive.exception.ArchiveError rather than yielding silent garbage, exercising the error-propagation path for a recoverable-format-but-corrupt-stream input.
python-libarchive-c extract preserves entry permissions Original / libarchive / usage-python-libarchive-c-batch17-extract-preserve-perm Passed
Builds a tar archive containing a regular file whose stored mode is 0640 (group-readable but not world-readable) and a script-like file with mode 0750. Calls libarchive.extract_file with the EXTRACT_PERM flag set, then stats the on-disk extracted files and asserts each has the exact stored permission bits, confirming the extract pipeline is honoring the explicit perm-restore flag.
python-libarchive-c custom_writer captures bytes in memory Original / libarchive / usage-python-libarchive-c-batch17-memory-writer-bytes Passed
Builds a gnutar archive entirely in memory by using libarchive.custom_writer with a Python callback that appends each output chunk to a bytearray, then re-parses the resulting bytes through libarchive.memory_reader. Confirms that the in-memory writer code path (no on-disk file) produces a stream that round trips through the memory_reader and recovers every entry pathname plus its payload exactly.
python-libarchive-c pax UTF-8 pathname round trip Original / libarchive / usage-python-libarchive-c-batch17-pax-utf8-pathname Passed
Stores entries whose pathnames contain multi-byte UTF-8 characters (Greek, CJK, emoji-style code points) inside a pax archive, since pax extended headers are the standardized way to carry non-ASCII names. Reads the archive back and verifies every Unicode pathname round trips byte-for-byte through libarchive's pax extended-header decoder along with its payload.
python-libarchive-c raw xz stream Original / libarchive / usage-python-libarchive-c-batch17-raw-xz-stream Passed
Reads a plain xz-compressed file via libarchive.file_reader with format_name="raw" so libarchive treats the input as a single synthetic data entry decoded only through its xz filter chain. Verifies the decoded byte stream equals the original uncompressed payload, exercising the raw-format read path for the xz filter (distinct from the gzip and bzip2 raw paths covered by earlier batches).
python-libarchive-c gnutar long symlink target Original / libarchive / usage-python-libarchive-c-batch17-tar-long-linkname Passed
Writes a gnutar archive whose symlink entry carries a target path far longer than the 100-byte ustar linkname field, forcing libarchive to emit a GNU LongLink K-type header to carry the full target. Reads the archive back and asserts the symlink's linkname round trips byte-for-byte, which can only happen if the LongLink extension is being honored on both encode and decode.
python-libarchive-c gnutar with all-zero payload region Original / libarchive / usage-python-libarchive-c-batch17-tar-null-payload-pattern Passed
Stores a regular file whose payload is a multi-kilobyte run of NUL bytes inside a gnutar archive. tar pads regular file content with NULs to the next 512-byte block, so an all-zero payload looks indistinguishable from inter-record padding. Verifies that libarchive's reader still surfaces exactly the original number of bytes (entry.size and concatenated get_blocks() length both equal the payload length).
python-libarchive-c tar.zst with zstd compression-level=19 Original / libarchive / usage-python-libarchive-c-batch17-tar-zstd-explicit-level19 Passed
Builds a tar.zst archive by passing options="zstd:compression-level=19" to libarchive.file_writer with the zstd filter, then verifies the resulting bytes start with the zstd frame magic 0x28B52FFD and round trip through libarchive.file_reader. Compares the on-disk size against an equivalent zstd:compression-level=1 archive and asserts the level-19 output is no larger, exercising the explicit zstd-level option negotiation through libarchive's filter option parser.
python-libarchive-c zip with end-of-central-directory comment Original / libarchive / usage-python-libarchive-c-batch17-zip-archive-comment Passed
Writes a small zip archive via libarchive.file_writer, then patches the trailing end-of-central-directory record to include a non-empty archive-level comment string, and feeds the modified bytes back through libarchive.memory_reader. Verifies that libarchive locates the EOCD past the trailing comment and still recovers every member intact, exercising the EOCD scan-back logic.
python-libarchive-c zip writer at deflate level 9 Original / libarchive / usage-python-libarchive-c-batch17-zip-deflate-level9 Passed
Writes a zip archive with options="zip:compression-level=9" and a highly repetitive payload, then writes the same payload through options="zip:compression=store" and compares on-disk sizes. The deflate-level-9 archive must be strictly smaller than the stored one and both must round trip through libarchive.file_reader, exercising the explicit-level deflate code path against a controllable baseline.
python-libarchive-c ar BSD format roundtrip Original / libarchive / usage-python-libarchive-c-batch18-ar-bsd-write-roundtrip Passed
Writes a 4.4BSD-style Unix archive via libarchive.file_writer with format_name="ar_bsd" (the BSD ar variant, distinct from the existing ar_svr4 case), asserts the file begins with the canonical "!<arch>\n" magic, and reads each member back through libarchive.file_reader confirming the per-member payloads round trip byte-for-byte. ar_bsd uses the #1/<len> long-name extension when a member name overflows the 16-byte ar header field, so a deliberately long member name is included to exercise that path.
python-libarchive-c empty tar (zero members) round trip Original / libarchive / usage-python-libarchive-c-batch18-empty-tar-no-entries Passed
Opens a libarchive.file_writer for gnutar and closes it without adding any entries, producing the canonical zero-member tar (two 512-byte all-zero EOF records). Asserts the on-disk file is exactly 1024 bytes and contains only NUL bytes, then opens it through libarchive.file_reader and confirms the entry iterator yields zero entries with no exception. Exercises the zero-entry corner case distinct from existing tests that include an empty-payload member.
python-libarchive-c extract refuses parent-traversal with SECURE_NODOTDOT Original / libarchive / usage-python-libarchive-c-batch18-extract-secure-nodotdot Passed
Builds a tar archive containing a benign entry plus a malicious "../escape.txt" entry, then calls libarchive.extract_file with EXTRACT_SECURE_NODOTDOT|EXTRACT_PERM. Asserts the safe entry materialises inside the destination, the traversal entry is rejected with libarchive.exception.ArchiveError, and that no escape.txt file is created in the destination's parent directory. Exercises libarchive's path-sanitisation flag distinct from EXTRACT_SECURE_NOABSOLUTEPATHS.
python-libarchive-c fd_writer + fd_reader roundtrip Original / libarchive / usage-python-libarchive-c-batch18-fd-writer-roundtrip Passed
Opens a raw OS file descriptor with os.open and hands it to libarchive.fd_writer to build a gnutar archive, exercising the file-descriptor entry point distinct from the path-based file_writer. Reopens the same path through os.open and reads the entries back via libarchive.fd_reader, asserting that every (pathname, payload) pair round trips through the fd-based read/write pair.
python-libarchive-c mtree with gzip filter Original / libarchive / usage-python-libarchive-c-batch18-mtree-gzip-filter Passed
Writes an mtree manifest with the gzip filter chain enabled (libarchive.file_writer(..., "mtree", filter_name="gzip")), so the resulting file is a gzip-compressed mtree spec. Asserts the on-disk bytes start with the gzip 0x1f 0x8b magic, then reads the manifest back through libarchive.file_reader and verifies every entry name written is yielded after stripping the leading "./" mtree convention prefix.
python-libarchive-c pax_restricted format roundtrip Original / libarchive / usage-python-libarchive-c-batch18-pax-restricted-format Passed
Writes an archive with format_name="pax_restricted" - libarchive's pax variant that emits ustar-compatible headers when the entry's metadata fits the ustar field widths and only falls back to a pax extended header for entries that require it. Verifies the file uses 512-byte tar block alignment, that a short-name entry stays inside ustar (no `PaxHeader/` global record needed), and that an entry with a 200-byte pathname forces the writer to emit a pax extended header. Reads everything back and confirms the payloads round trip.
python-libarchive-c pax symlink linkpath round trip Original / libarchive / usage-python-libarchive-c-batch18-pax-symlink-linkpath Passed
Writes a pax archive containing a symlink entry whose target is set via archive_entry_set_symlink (reached through ctypes since python-libarchive-c does not wrap it directly). Reads the archive back and asserts the entry's issym is True, both ArchiveEntry.linkname and ArchiveEntry.linkpath expose the same target string, and entry.linkpath equals the bytes that were stamped onto the entry. Exercises the symlink-target accessor distinct from the hardlink-target path covered by earlier batches.
python-libarchive-c shar format write Original / libarchive / usage-python-libarchive-c-batch18-shar-write-roundtrip Passed
Writes a shar (shell archive) using libarchive.file_writer with format_name="shar". Asserts the produced file begins with the canonical `#!/bin/sh` shebang plus the libarchive shar comment banner, and contains an `echo x <name>` line and a `sed 's/^X//' > <name>` here-document opener for each member written. shar is a write-only format in libarchive, so the read-side check is on the shell-script structure itself rather than libarchive.file_reader.
python-libarchive-c tar.bz2 with bzip2 compression-level=9 Original / libarchive / usage-python-libarchive-c-batch18-tar-bzip2-level9 Passed
Builds a tar.bz2 archive by passing options="bzip2:compression-level=9" to libarchive.file_writer with the bzip2 filter, asserts the resulting bytes start with the bzip2 "BZh9" header (the "9" is the level digit baked into the bzip2 stream header), and rebuilds an equivalent archive at compression-level=1 to confirm the level-9 output is no larger on highly repetitive payload. Reads the level-9 archive back via libarchive.file_reader and verifies the entries round trip byte-for-byte.
python-libarchive-c v7tar format write Original / libarchive / usage-python-libarchive-c-batch18-v7tar-format-write Passed
Writes a Version-7 Unix tar archive (libarchive format_name="v7tar"), the pre-ustar tar variant whose 512-byte header lacks the "ustar" magic and supports only the original short-name fields. Asserts the produced bytes are 512-byte block aligned, the first 6 bytes of the file (where ustar would carry "ustar\0") contain no ustar magic, and that read-back through libarchive.file_reader returns each member's payload byte-for-byte.
python-libarchive-c pax mtime sub-second roundtrip Original / libarchive / usage-python-libarchive-c-batch19-pax-iso8601-mtime-precision Passed
Writes a pax archive with an entry whose mtime has explicit nanosecond precision and verifies the readback retains second-resolution mtime equal to what was set.
python-libarchive-c tar 256 entries preserve insertion order Original / libarchive / usage-python-libarchive-c-batch19-tar-256-entries-pathname-order Passed
Writes a tar archive with 256 entries, then reads it back and verifies the iteration order matches insertion order exactly.
python-libarchive-c tar add_files accepts multiple positional paths Original / libarchive / usage-python-libarchive-c-batch19-tar-add-files-multiple-positional Passed
Calls libarchive.file_writer.add_files with three positional file paths and verifies all three entries appear in the archive.
python-libarchive-c tar entry get_blocks(block_size=512) reads payload Original / libarchive / usage-python-libarchive-c-batch19-tar-bytesio-iter-blocks-block-size-512 Passed
Writes a tar archive with a 4096-byte payload and reads it back via entry.get_blocks(block_size=512), verifying the concatenated bytes equal the original.
python-libarchive-c iterates an empty tar archive yielding zero entries Original / libarchive / usage-python-libarchive-c-batch19-tar-empty-archive-iter Passed
Writes a tar archive with zero entries via libarchive.file_writer and verifies file_reader iteration yields exactly zero entries.
python-libarchive-c tar entry mode 0644 roundtrip Original / libarchive / usage-python-libarchive-c-batch19-tar-mode-0644-roundtrip Passed
Creates a tar archive from a 0o644 file on disk and verifies the entry's mode low 9 bits read back as 0o644.
python-libarchive-c tar reads file uid/gid from disk into entry Original / libarchive / usage-python-libarchive-c-batch19-tar-uname-empty-default Passed
Creates a file on disk, archives it with libarchive.file_writer, and verifies the read-back entry uid/gid match the current process uid/gid.
python-libarchive-c zip with 64 small entries roundtrip Original / libarchive / usage-python-libarchive-c-batch19-zip-many-small-entries-bytes-positive Passed
Writes a zip with 64 single-byte entries, verifies the read-back archive has 64 entries each with size 1 and the correct payload byte.
python-libarchive-c zip store vs deflate yield identical payload bytes Original / libarchive / usage-python-libarchive-c-batch19-zip-store-and-deflate-equal-payload Passed
Writes the same payload as a zip with compression=store and again with deflate, then verifies file_reader returns byte-identical entry payloads from both archives.
python-libarchive-c zip iteration on archive with file path containing utf-8 Original / libarchive / usage-python-libarchive-c-batch19-zip-utf8-pathname-roundtrip Passed
Writes a zip archive containing a single entry whose pathname has a non-ASCII UTF-8 character, then verifies file_reader iteration yields the exact same pathname.
python-libarchive-c cpio archive with twelve entries iterates twelve times Original / libarchive / usage-python-libarchive-c-batch20-cpio-twelve-entries-iter-count Passed
Writes 12 in-memory entries with deterministic pathnames into a single cpio archive via writer.add_file_from_memory and confirms file_reader iteration yields exactly 12 entries with their pathnames matching insertion order. Exercises a small-batch iteration count distinct from the existing single-entry and large-count cpio cases.
python-libarchive-c mtree manifest without filter is plain text and roundtrips names Original / libarchive / usage-python-libarchive-c-batch20-mtree-no-filter-roundtrip Passed
Writes an mtree manifest using libarchive.file_writer("...", "mtree") with no filter chain so the on-disk output is uncompressed text (must start with the "#mtree" sentinel). Reads the manifest back through libarchive.file_reader and verifies every entry name written is yielded after stripping the leading "./" mtree-convention prefix. Distinct from the existing mtree-gzip case which exercises the compressed variant.
python-libarchive-c pax preserves mtime within int32 range round trip Original / libarchive / usage-python-libarchive-c-batch20-pax-mtime-2030-roundtrip Passed
Writes a pax archive whose entry mtime is set to 2030-01-01 UTC (1893456000 seconds, within int32) via libarchive.ffi.entry_set_mtime, then asserts the read-back entry.mtime matches exactly so the pax extended-header path is exercised end to end.
python-libarchive-c pax entry permission 0700 roundtrip Original / libarchive / usage-python-libarchive-c-batch20-pax-perm-0700-roundtrip Passed
Writes a pax archive whose entry permission is set explicitly to 0o700 via libarchive.ffi.entry_set_perm and asserts the same low-9 mode bits surface back through entry.mode on read. Distinct format+mode combination from existing ustar/0o640 and tar/0o644 perm cases.
python-libarchive-c pax ctime via ctypes round trip Original / libarchive / usage-python-libarchive-c-batch20-pax-set-ctime-roundtrip Passed
Sets archive_entry_set_ctime on a pax entry through ctypes against libarchive.so.13 (libarchive_c 2.9 does not wrap it), writes the archive, then uses archive_entry_ctime via ctypes on read to verify the stored creation/inode-change time round trips at second precision. Pax extended headers are the standard carrier for ctime so the format choice matters.
python-libarchive-c pax UTF-8 uname round trip via ctypes Original / libarchive / usage-python-libarchive-c-batch20-pax-utf8-uname-ctypes Passed
Sets archive_entry_set_uname on a pax entry to a non-ASCII UTF-8 byte sequence (Greek letters) through ctypes against libarchive.so.13, since libarchive_c 2.9 does not wrap that setter. Pax extended headers are the standard carrier for non-ASCII owner names. Reads the entry back and asserts archive_entry_uname returns the same bytes via ctypes.
python-libarchive-c pax zero-byte entry via add_file_from_memory Original / libarchive / usage-python-libarchive-c-batch20-pax-zero-byte-add-from-memory Passed
Adds a single zero-length payload entry to a pax archive via writer.add_file_from_memory(name, 0, b"") and verifies the read-back entry reports size 0 with no get_blocks() output. Pax-format coverage for the zero-length-from-memory edge case.
python-libarchive-c tar entries with leading "./" pathname survive roundtrip Original / libarchive / usage-python-libarchive-c-batch20-tar-pathname-dot-prefix-roundtrip Passed
Writes three ustar entries whose pathnames start with the leading "./" convention emitted by GNU tar, then iterates the archive and asserts every read-back pathname matches the input verbatim (including the dot-slash prefix) with payload bytes intact.
python-libarchive-c zip writer add_files reads three on-disk files Original / libarchive / usage-python-libarchive-c-batch20-zip-add-files-from-disk Passed
Stages three small files in a tmpdir, then writes them into a zip archive via file_writer.add_files (positional paths), and verifies the resulting archive holds all three names with their original payload bytes when iterated. Complements existing zip cases which write entries via add_file_from_memory only.
python-libarchive-c zip deflate compresses zeros payload to under 1KiB Original / libarchive / usage-python-libarchive-c-batch20-zip-deflate-zeros-shrinks Passed
Writes a 32 KiB all-zero payload into a zip archive with the default deflate compression and asserts the resulting on-disk archive is smaller than 1024 bytes, demonstrating that the deflate filter actually engaged on a maximally compressible input. Verifies the byte payload still round trips byte-for-byte through file_reader.
python-libarchive-c pax FIFO entry roundtrips with isfifo True Original / libarchive / usage-python-libarchive-c-batch21-pax-fifo-filetype Passed
Writes a pax archive containing a single FIFO entry created with entry_set_filetype(S_IFIFO=0o010000) and zero size, then reads it back via file_reader and asserts entry.isfifo is True while isreg/isdir/issym are False, exercising the FIFO filetype branch not covered by existing regular-file/directory/symlink tests.
python-libarchive-c pax gname survives via archive_entry_set_gname Original / libarchive / usage-python-libarchive-c-batch21-pax-gname-ctypes-roundtrip Passed
Writes a pax entry whose group name is set to "staff" via archive_entry_set_gname reached through ctypes (python-libarchive-c does not expose a setter), then reads back the gname through archive_entry_gname and asserts byte equality. Distinct from the existing UTF-8 uname ctypes case in batch20 because it tests the gname accessor.
python-libarchive-c pax hardlink target survives via archive_entry_set_hardlink Original / libarchive / usage-python-libarchive-c-batch21-pax-hardlink-target-ctypes Passed
Writes a pax archive containing one regular file and one hardlink entry whose target is set via archive_entry_set_hardlink reached through ctypes, then asserts the read-back hardlink entry reports islnk True with linkname equal to the original pathname. Distinct from the symlink ctypes case in batch18 since it tests the hardlink accessor.
python-libarchive-c pax mtime survives at exact int32 max boundary Original / libarchive / usage-python-libarchive-c-batch21-pax-mtime-int32-max-roundtrip Passed
Sets entry mtime to 2147483647 (the maximum signed 32-bit value, the last second before the year-2038 rollover) via entry_set_mtime, writes a pax archive, and asserts the read-back mtime equals 2147483647 exactly. Distinct from the batch20 2030-mtime case because it pins the precise int32 boundary without crossing it.
python-libarchive-c pax preserves entry mtime nanosecond component Original / libarchive / usage-python-libarchive-c-batch21-pax-nanosecond-mtime-roundtrip Passed
Calls entry_set_mtime with seconds=1700000000 and nsec=123456789, writes a pax archive, and asserts the read-back archive_entry_mtime_nsec returns exactly 123456789 alongside the seconds value, exercising the pax extended-header subsecond mtime field beyond the integer-second cases in earlier batches.
python-libarchive-c fd_reader iterates a tar opened by file descriptor Original / libarchive / usage-python-libarchive-c-batch21-tar-fd-reader-roundtrip Passed
Writes a single ustar entry with file_writer, then opens the resulting file with os.open and iterates with libarchive.fd_reader, asserting one entry surfaces with the expected pathname, size, and payload. Exercises the fd_reader entrypoint distinct from the file_reader and memory_reader paths used by earlier batches.
python-libarchive-c file_writer wraps tar payload in xz container Original / libarchive / usage-python-libarchive-c-batch21-tar-xz-file-writer Passed
Writes a single ustar entry through file_writer using filter_name="xz" and confirms the resulting file begins with the xz magic bytes (FD 37 7A 58 5A 00) and reads back the original payload via file_reader, exercising the xz-write filter independently from the bzip2-detection case in batch15.
python-libarchive-c file_writer wraps tar payload in zstd container Original / libarchive / usage-python-libarchive-c-batch21-tar-zstd-file-writer Passed
Writes a single ustar entry through file_writer using filter_name="zstd" and confirms the output begins with the zstd magic bytes (28 B5 2F FD) and reads back the exact payload via file_reader, exercising the zstd-write filter as opposed to the existing zstd memory-reader and size-check cases.
python-libarchive-c zip writer with options=zip:compression=store leaves payload uncompressed Original / libarchive / usage-python-libarchive-c-batch21-zip-compression-store-option Passed
Writes a 100-byte single-character payload through file_writer using options="zip:compression=store" and asserts the resulting zip header reports the entry's compressed size equals the uncompressed size (CRC payload + central directory present), confirming the store mode passes payload bytes through unchanged.
python-libarchive-c zip with twenty entries iterates twenty times in insertion order Original / libarchive / usage-python-libarchive-c-batch21-zip-twenty-entries-iter-count Passed
Writes 20 in-memory zip entries with deterministic pathnames via add_file_from_memory, then asserts file_reader iteration yields exactly 20 (pathname, payload) tuples in insertion order. Distinct from existing 12-entry cpio and 1000-entry tar count cases since it pins zip iteration on a small batch.
python-libarchive-c bzip2 filter Original / libarchive / usage-python-libarchive-c-bzip2-filter Passed
python-libarchive-c copy mode Original / libarchive / usage-python-libarchive-c-copy-mode Passed
python libarchive cpio binary payload Original / libarchive / usage-python-libarchive-c-cpio-binary-payload Passed
python-libarchive-c cpio bzip2 filter Original / libarchive / usage-python-libarchive-c-cpio-bzip2-filter Passed
python-libarchive-c cpio empty file Original / libarchive / usage-python-libarchive-c-cpio-empty-file Passed
python-libarchive-c cpio gzip filter Original / libarchive / usage-python-libarchive-c-cpio-gzip-filter Passed
Writes a gzip-filtered cpio archive through python-libarchive-c and verifies the readback payload.
python-libarchive-c many CPIO files Original / libarchive / usage-python-libarchive-c-cpio-many-files Passed
Writes multiple CPIO members through python-libarchive-c and verifies all files round-trip correctly.
python-libarchive-c cpio nested file Original / libarchive / usage-python-libarchive-c-cpio-nested-file Passed
Writes a nested file path into a cpio archive through python-libarchive-c and verifies the stored payload on readback.
python-libarchive-c newc format Original / libarchive / usage-python-libarchive-c-cpio-newc Passed
python-libarchive-c cpio xz filter Original / libarchive / usage-python-libarchive-c-cpio-xz-filter Passed
python-libarchive-c cpio zstd filter Original / libarchive / usage-python-libarchive-c-cpio-zstd-filter Passed
python-libarchive-c directory entry Original / libarchive / usage-python-libarchive-c-directory-entry Passed
python-libarchive-c empty file Original / libarchive / usage-python-libarchive-c-empty-file Passed
python libarchive stable file order Original / libarchive / usage-python-libarchive-c-file-order-stable Passed
python-libarchive-c file roundtrip Original / libarchive / usage-python-libarchive-c-file-roundtrip Passed
python-libarchive-c gzip filter Original / libarchive / usage-python-libarchive-c-gzip-filter Passed
python-libarchive-c large entry Original / libarchive / usage-python-libarchive-c-large-entry Passed
python-libarchive-c long path Original / libarchive / usage-python-libarchive-c-long-path Passed
python-libarchive-c lz4 filter Original / libarchive / usage-python-libarchive-c-lz4-filter Passed
python-libarchive-c lzip filter Original / libarchive / usage-python-libarchive-c-lzip-filter Passed
python-libarchive-c lzma filter Original / libarchive / usage-python-libarchive-c-lzma-filter Passed
python-libarchive-c lzop filter Original / libarchive / usage-python-libarchive-c-lzop-filter Passed
python-libarchive-c many files Original / libarchive / usage-python-libarchive-c-many-files Passed
python libarchive cpio memory reader Original / libarchive / usage-python-libarchive-c-memory-reader-cpio Passed
python libarchive pax memory reader Original / libarchive / usage-python-libarchive-c-memory-reader-pax Passed
python-libarchive-c memory reader tar Original / libarchive / usage-python-libarchive-c-memory-reader-tar Passed
Reads a tar archive from in-memory bytes with python-libarchive-c and verifies every entry is decoded.
python-libarchive-c memory reader zip directory Original / libarchive / usage-python-libarchive-c-memory-reader-zip-directory Passed
Reads a zip archive with a directory entry through the python-libarchive-c memory reader and verifies member order.
python-libarchive-c memory reader ZIP Original / libarchive / usage-python-libarchive-c-memory-reader-zip Passed
Reads a ZIP archive from in-memory bytes with python-libarchive-c and verifies every entry is decoded.
python-libarchive-c metadata count Original / libarchive / usage-python-libarchive-c-metadata-count Passed
Reads archive metadata through python-libarchive-c and verifies the expected entry count and byte sizes.
python-libarchive-c metadata read Original / libarchive / usage-python-libarchive-c-metadata-read Passed
python-libarchive-c nested paths Original / libarchive / usage-python-libarchive-c-nested-paths Passed
python-libarchive-c pax directory entry Original / libarchive / usage-python-libarchive-c-pax-directory-entry Passed
Writes a pax archive with an explicit directory entry through python-libarchive-c and verifies the listed members.
python libarchive pax empty file Original / libarchive / usage-python-libarchive-c-pax-empty-file Passed
python-libarchive-c pax format Original / libarchive / usage-python-libarchive-c-pax-format Passed
python-libarchive-c pax gzip filter Original / libarchive / usage-python-libarchive-c-pax-gzip-filter Passed
Writes a gzip-filtered pax archive through python-libarchive-c and validates the readback payload.
python-libarchive-c pax long path Original / libarchive / usage-python-libarchive-c-pax-long-path Passed
Writes a long nested path through python-libarchive-c in pax format and verifies the stored pathname survives readback.
python-libarchive-c pax space directory Original / libarchive / usage-python-libarchive-c-pax-space-directory Passed
Writes a pax archive containing a directory path with spaces through python-libarchive-c and verifies both directory and file members.
python-libarchive-c pax xz filter Original / libarchive / usage-python-libarchive-c-pax-xz-filter Passed
python-libarchive-c pax zstd filter Original / libarchive / usage-python-libarchive-c-pax-zstd-filter Passed
Writes a zstd-filtered pax archive through python-libarchive-c and verifies the readback payload.
python-libarchive-c 7zip writer produces a 7z magic and reads back entries Original / libarchive / usage-python-libarchive-c-r12-7zip-write-readback Passed
Writes a small archive with format="7zip" via file_writer and asserts the on-disk magic is the documented 0x37 0x7A 0xBC 0xAF 0x27 0x1C signature, then reads the archive back via file_reader and verifies the inserted entries are present with their payloads.
python-libarchive-c file_writer produces a gnutar-format archive readable by file_reader Original / libarchive / usage-python-libarchive-c-r12-gnutar-format-write Passed
Writes a multi-entry archive with format="gnutar" and confirms file_reader iterates the entries with their inserted pathnames and payloads. Exercises the gnutar write format distinct from existing ustar/pax/v7tar coverage.
python-libarchive-c memory_reader on bytes object iterates a zip archive Original / libarchive / usage-python-libarchive-c-r12-memory-reader-zip-bytes-roundtrip Passed
Builds a zip archive with file_writer, slurps the bytes off disk, and feeds them to libarchive.memory_reader to confirm the entries surface with their original names and payloads via in-memory iteration.
python-libarchive-c pax mtime epoch zero roundtrip Original / libarchive / usage-python-libarchive-c-r12-pax-mtime-1970-roundtrip Passed
Writes a pax archive with entry_set_mtime(0, 0) and asserts the read-back entry.mtime is exactly 0, exercising the epoch-boundary mtime value distinct from the existing 2030 and int32-max mtime cases.
python-libarchive-c pax symlink entry exposes issym and linkname Original / libarchive / usage-python-libarchive-c-r12-pax-symlink-roundtrip-attrs Passed
Writes a pax archive containing a single symlink entry via the entry_set_symlink ctypes accessor and verifies the read-back entry reports issym True with linkname pointing at the expected target while islnk and isreg are False.
python-libarchive-c pax uname accepts a 128-character ASCII name Original / libarchive / usage-python-libarchive-c-r12-pax-uname-128chars Passed
Writes a pax archive whose entry uname is a 128-character ASCII string set via entry_set_uname (ctypes), and asserts the read-back uname is exactly that string. Distinct from existing default-empty and short-uname cases.
python-libarchive-c tar archive with 50 entries iterates pathnames in insertion order Original / libarchive / usage-python-libarchive-c-r12-tar-50-entries-pathnames Passed
Writes 50 in-memory entries with deterministic zero-padded names into a single ustar archive and confirms file_reader iteration yields exactly 50 pathnames in insertion order. Distinct from the 12-entry cpio, 20-entry zip, 256-entry tar, and 1000-entry tar count cases as it pins iteration on a 50-entry batch.
python-libarchive-c file_reader respects an explicit block_size kwarg Original / libarchive / usage-python-libarchive-c-r12-tar-gzip-block-size-arg Passed
Writes a small ustar+gzip archive, then opens it with file_reader(block_size=4096) and confirms iteration still yields the inserted entries with their payloads. Exercises the optional block_size kwarg distinct from the default-block reader cases.
python-libarchive-c tar+zstd roundtrips a 2MB payload through file_writer Original / libarchive / usage-python-libarchive-c-r12-tar-zstd-roundtrip-large Passed
Writes a 2 MiB single-entry ustar+zstd archive and verifies file_reader iteration returns a single entry whose payload matches byte-for-byte, exercising the larger-than-typical-block payload path through the zstd write filter.
python-libarchive-c zip with explicit deflate compression-level option roundtrips Original / libarchive / usage-python-libarchive-c-r12-zip-bz2-filter-roundtrip Passed
Writes a zip archive with options="zip:compression=deflate,compression-level=9" and verifies the entries read back byte-for-byte, exercising option-string parsing for the zip writer. (Noble's libarchive zip writer rejects "compression=bzip2"; the deflate level-9 path is the documented per-entry option surface.)
python-libarchive-c 7zip writer accepts three entries and iterates exactly three times Original / libarchive / usage-python-libarchive-c-r13-7zip-three-entries-iter-count Passed
Writes three small entries into a single 7z archive via file_writer format="7zip" and asserts that file_reader iterates exactly three entries with payloads matching the original mapping.
python-libarchive-c empty ustar archive iterates as zero entries Original / libarchive / usage-python-libarchive-c-r13-empty-tar-zero-entries Passed
Writes a ustar archive with no entries via file_writer (open and close immediately), then opens it through file_reader and verifies the iteration produces zero entries and the file is non-empty (tar end-of-archive blocks present).
python-libarchive-c ArchiveEntry exposes the documented attribute surface Original / libarchive / usage-python-libarchive-c-r13-entry-attributes-survey Passed
Probes the ArchiveEntry class via dir() and asserts the documented attribute names we rely on across the suite (pathname, size, mode, mtime, isfile, isdir, issym, islnk, linkname) are all present, and that they are accessible on a real entry read from a tiny ustar archive. (noble's python3-libarchive-c r5.2-1build1 does not expose ArchiveEntry.perm; mode covers the same on-disk bits.)
python-libarchive-c file_reader honours an explicit block_size keyword Original / libarchive / usage-python-libarchive-c-r13-iter-block-size-arg Passed
Writes a multi-entry ustar archive then opens it via file_reader(block_size=4096) and asserts the iteration still returns the full set of entries with intact payloads, exercising a non-default block_size argument on the read side.
python-libarchive-c ustar+gzip roundtrips eight independent entries Original / libarchive / usage-python-libarchive-c-r13-multi-entry-tar-gzip-roundtrip Passed
Writes a tar.gz with eight entries of varying sizes through file_writer using format ustar and filter gzip, then reads back through file_reader and asserts that all eight pathnames and payloads round-trip and that the in-archive entry order matches the insertion order.
python-libarchive-c pax symlink entry built via ctypes filetype constant Original / libarchive / usage-python-libarchive-c-r13-pax-symlink-via-ctypes Passed
Writes a pax archive containing a symlink entry by invoking entry_set_filetype with the integer SYMBOLIC_LINK constant 0o120000 (libarchive.ffi does not export a SYMBOLIC_LINK alias), then reads it back and asserts entry.issym is True with linkname pointing at the expected target.
python-libarchive-c pax restricted (paxr) format writes and reads back Original / libarchive / usage-python-libarchive-c-r13-paxr-format-roundtrip Passed
Writes a pax-restricted archive via file_writer format="pax_restricted" with two entries and confirms file_reader returns both pathnames and payloads in insertion order, exercising the paxr writer alongside the existing batch18 pax-restricted case.
python-libarchive-c ustar+zstd preserves mode and mtime Original / libarchive / usage-python-libarchive-c-r13-tar-zstd-mode-mtime-roundtrip Passed
Writes a ustar+zstd archive whose entry has perm 0o604 and mtime 1700000000 set via ctypes, then asserts file_reader returns those values exactly through the zstd filter chain.
python-libarchive-c zip+deflate roundtrips a >1MB payload Original / libarchive / usage-python-libarchive-c-r13-zip-deflate-large-roundtrip Passed
Writes a single-entry zip archive with the deflate filter and a 1.5 MiB payload, then reads it back via file_reader and confirms the on-disk PK\x03\x04 magic, that entry.size matches the source byte length, and that the streamed payload is byte-equal under sha256.
python-libarchive-c zip+deflate preserves entry permission bits via ctypes Original / libarchive / usage-python-libarchive-c-r13-zip-deflate-mode-preserved Passed
Writes a zip+deflate archive whose entry has perm 0o750 set through ctypes archive_entry_set_perm and confirms that file_reader returns entry.perm == 0o750 on read-back, exercising mode preservation in the deflate path.
python-libarchive-c iterates ArchiveEntry attributes via getattr by name Original / libarchive / usage-python-libarchive-c-r14-entry-attrs-by-name Passed
Writes a single-entry tar with a deterministic mtime, opens it via file_reader, and asserts that getattr(entry, name) returns sensible values for the documented attribute set (pathname/size/mode/mtime/isfile/isdir/issym/islnk/filetype/linkname), ensuring the binding still surfaces every attribute name expected on noble.
python-libarchive-c fd_reader iterates a tar archive opened via os.open Original / libarchive / usage-python-libarchive-c-r14-fd-reader-os-open-tar Passed
Writes a tar archive on disk, opens it through os.open(O_RDONLY), and passes the integer file descriptor to libarchive.fd_reader, asserting iteration produces every inserted entry with payload intact.
python-libarchive-c writes a hardlink entry via ctypes archive_entry_set_hardlink Original / libarchive / usage-python-libarchive-c-r14-hardlink-via-ctypes-roundtrip Passed
Uses ctypes to call archive_entry_set_hardlink against libarchive.so.13, builds a pax archive with a regular file plus a hardlink entry pointing to it, reads it back and asserts entry.islnk is True with linkname matching the original and the regular entry exists with the expected payload.
python-libarchive-c roundtrips a 3MB single-entry tar.bz2 archive Original / libarchive / usage-python-libarchive-c-r14-large-3mb-tar-bz2-roundtrip Passed
Builds a deterministic 3 MiB payload, writes it as a single ustar+bzip2 archive via file_writer, and asserts the read-back entry has the expected size and sha256, exercising the bzip2 write filter on a payload above 2 MiB.
python-libarchive-c custom_writer streams a tar archive into a BytesIO buffer Original / libarchive / usage-python-libarchive-c-r14-memory-writer-bytesio-tar Passed
Uses libarchive.custom_writer to feed each emitted block into a BytesIO write callback, builds an in-memory ustar archive without touching the filesystem, then re-reads the resulting bytes via libarchive.memory_reader and asserts every entry round-trips.
python-libarchive-c preserves an explicit mtime through ustar, pax, and gnutar formats Original / libarchive / usage-python-libarchive-c-r14-mtime-preserved-across-formats Passed
Writes the same single entry with entry_set_mtime(1700000000, 0) into ustar, pax, and gnutar archives by reaching into libarchive.ffi, then reads each back and asserts entry.mtime is exactly 1700000000 in all three, verifying mtime preservation is consistent across tar dialects.
python-libarchive-c sets atime, mtime, and birthtime on a pax entry via ffi Original / libarchive / usage-python-libarchive-c-r14-pax-set-atime-mtime-birthtime Passed
Builds a pax archive with entry_set_atime, entry_set_mtime, and entry_set_birthtime each set to distinct epoch values via libarchive.ffi, reads the archive back and asserts the entry surfaces the same atime, mtime, and birthtime values, exercising all three time setters in one entry.
python-libarchive-c stream_reader iterates a tar.gz from a Python file object Original / libarchive / usage-python-libarchive-c-r14-streaming-reader-iter-tar-gz Passed
Writes a multi-entry tar.gz with file_writer, opens it as a binary file object, and feeds it to libarchive.stream_reader to iterate the entries, asserting that pathnames and payloads match insertion order through the streaming-reader interface.
python-libarchive-c file_writer zip with explicit None filter roundtrips entries Original / libarchive / usage-python-libarchive-c-r14-zip-no-filter-roundtrip Passed
Builds a zip archive via libarchive.file_writer(path, "zip", None) - explicitly passing filter_name=None since deflate is built into the zip writer and there is no separate write_add_filter_deflate on noble - then reads it back and asserts every entry's pathname and payload round-trip in insertion order.
python-libarchive-c packages a zip archive inside a tar.gz outer archive Original / libarchive / usage-python-libarchive-c-r14-zip-then-tar-of-zip Passed
Builds an inner zip archive via file_writer, then wraps it as a single entry in an outer ustar+gzip archive, reads the outer archive back, extracts the inner zip bytes from the entry payload, and verifies they roundtrip-decode through libarchive.memory_reader to the original three entries.
python-libarchive-c libarchive.extract_memory writes archive contents to disk Original / libarchive / usage-python-libarchive-c-r15-extract-memory-tarball Passed
Builds a small ustar archive in memory via memory_writer (libarchive.custom_writer with a bytes-sink callback), then changes into a fresh directory and calls libarchive.extract_memory(buf) — the binding's helper that decodes an archive image directly from a bytes blob to the current working directory. Asserts every original payload now lives at the expected on-disk path with matching contents, exercising the extract_memory entrypoint distinct from extract_file used by other batches.
python-libarchive-c fd_writer cross-path: write via fd, read back via file_reader Original / libarchive / usage-python-libarchive-c-r15-fd-writer-then-file-reader Passed
Opens a raw file descriptor with os.open and hands it to libarchive.fd_writer to build a gnutar archive (no path-based writer), then reads the same on-disk file back through libarchive.file_reader (path-based reader). Asserts every (pathname, payload) pair survives the asymmetric fd-write/path-read round trip — distinct from the batch18 fd_writer + fd_reader symmetric case.
python-libarchive-c entry atime nanosecond field round trips through pax Original / libarchive / usage-python-libarchive-c-r15-pax-atime-nsec-roundtrip Passed
Sets entry atime to (1650000000 seconds, 987654321 nanoseconds) via libarchive.so.13 archive_entry_set_atime through ctypes, writes a pax archive (the standard format that preserves sub-second timestamps via extended-header records), then reads back the entry and asserts the seconds component recovered through entry.atime equals 1650000000 and the nanoseconds component recovered through archive_entry_atime_nsec equals 987654321 — pinning sub-second atime precision distinct from the batch21 mtime-only nanosecond case.
python-libarchive-c ArchiveEntry.strmode renders 'l' leading char on a symlink entry Original / libarchive / usage-python-libarchive-c-r15-pax-strmode-symlink-prefix Passed
Writes a pax archive containing a symlink entry (filetype S_IFLNK, target stamped via archive_entry_set_symlink through ctypes) and a regular file entry, reads them back, and asserts ArchiveEntry.strmode begins with 'l' for the symlink and '-' for the regular file. Exercises the strmode renderer against a non-regular filetype (distinct from the batch16 strmode case which only covers regular files).
python-libarchive-c fd_reader iterates a tar.bz2 opened by file descriptor Original / libarchive / usage-python-libarchive-c-r15-tar-bzip2-fd-reader Passed
Writes a tar.bz2 via file_writer with the bzip2 filter, opens the resulting file with os.open and iterates with libarchive.fd_reader. Asserts every entry surfaces with the expected pathname, size, and payload — exercising the fd_reader path against a bzip2-compressed tar (distinct from the batch21 plain-tar fd-reader case).
python-libarchive-c iterates exactly 100 entries from a generated tar Original / libarchive / usage-python-libarchive-c-r15-tar-iter-count-100-entries Passed
Writes a ustar archive containing 100 entries with deterministic names (entry-000.txt .. entry-099.txt) via file_writer.add_file_from_memory, then iterates the archive with file_reader and asserts the iteration yields exactly 100 entries in insertion order with payload bytes matching the index-encoded body. Distinct from earlier 50/256/1000/5000-entry counts in batches 12/15/19/r12.
python-libarchive-c custom_writer captures a tar.xz stream into a bytes buffer Original / libarchive / usage-python-libarchive-c-r15-tar-xz-memory-writer-bytes Passed
Builds a tar.xz archive entirely in memory by handing libarchive.custom_writer a bytes-appending callback with format_name="ustar" and filter_name="xz". Verifies the captured blob carries the .xz magic bytes (fd 37 7a 58 5a 00) and decodes losslessly through libarchive.memory_reader, recovering every entry's pathname and payload — distinct from the batch17 plain-gnutar memory-writer case by adding the xz filter on top.
python-libarchive-c file_reader auto-detects format on tar+gzip and zip independently Original / libarchive / usage-python-libarchive-c-r15-tar-zip-roundtrip-format-detection Passed
Builds two archives over the same payload set: a tar.gz via file_writer("gnutar","gzip") and a zip via file_writer(format_name="zip", filter_name=None) (the zip format takes no separate filter on libarchive_c 2.9). Reads each back through file_reader without supplying a format hint and asserts the auto-detection path returns identical (pathname, payload) maps. Confirms the binding's no-format-hint reader handles both layouts in one test, distinct from existing single-format readback cases.
python-libarchive-c stream_reader iterates a tar.zst from a binary file object Original / libarchive / usage-python-libarchive-c-r15-tar-zstd-stream-reader Passed
Writes a multi-entry tar.zst via file_writer with the zstd filter, opens it as a binary file object and feeds it to libarchive.stream_reader (distinct from the r14 stream_reader-tar-gz case). Asserts pathnames and payloads round trip in insertion order through the streaming-reader interface against a zstd-compressed input rather than gzip.
python-libarchive-c zip readback parity between store and deflate compression Original / libarchive / usage-python-libarchive-c-r15-zip-store-vs-deflate-readback Passed
Builds two zip archives over the same payload set: one with options="zip:compression=store" and one with the default deflate compression, both via file_writer (format_name="zip", filter_name=None). Reads both back through file_reader and asserts every (pathname, payload) round trips to the same bytes despite the different on-disk compression methods, exercising the libarchive zip-options string for the store path on noble.
python-libarchive-c cpio newc preserves entry insertion order across read_memory Original / libarchive / usage-python-libarchive-c-r16-cpio-newc-insertion-order-preserved Passed
Builds a cpio newc archive in memory via custom_writer with five entries added in a known order, decodes it back via memory_reader, and asserts the iteration order of pathnames matches the original insertion order exactly, exercising cpio's sequential entry layout.
python-libarchive-c file_writer(mtree) emits mtree text consumable by file_reader Original / libarchive / usage-python-libarchive-c-r16-mtree-format-roundtrip Passed
Builds an mtree manifest via libarchive.file_writer(format_name='mtree', filter_name=None) listing three entries, asserts the on-disk output begins with the literal "#mtree" sigil, then reads it back via libarchive.file_reader and confirms every pathname appears in the iteration set — exercising the mtree writer/reader pair end-to-end.
python-libarchive-c pax memory archive iterates 200 entries in insertion order Original / libarchive / usage-python-libarchive-c-r16-pax-many-small-entries Passed
Builds a pax archive in memory via custom_writer containing 200 entries named entry-000.txt through entry-199.txt with distinct payloads, decodes it via memory_reader, and asserts the iteration order equals the original insertion order and that every payload matches exactly, exercising pax with many short entries.
python-libarchive-c file_writer(ustar, filter='lzip') round-trips through file_reader Original / libarchive / usage-python-libarchive-c-r16-tar-lzip-filter-roundtrip Passed
Builds a tar.lz archive via libarchive.file_writer(format_name='ustar', filter_name='lzip') with two entries, asserts the on-disk magic is "LZIP", and reads them back via libarchive.file_reader confirming every pathname/payload pair matches — exercising the ustar+lzip filter chain.
python-libarchive-c ustar entry preserves mtime to the second across round-trip Original / libarchive / usage-python-libarchive-c-r16-tar-mtime-roundtrip Passed
Creates a regular file, sets its mtime to a known epoch value 1700000000 via os.utime, packs it into a ustar archive via libarchive.file_writer.add_files, reads back via libarchive.file_reader, and asserts the entry .mtime equals the stored epoch second, exercising ustar's whole-second mtime fidelity.
python-libarchive-c ustar entry .size equals the original payload length Original / libarchive / usage-python-libarchive-c-r16-tar-size-attribute-matches-payload Passed
Builds a ustar archive in memory containing three entries of distinct known sizes (16, 256, 1024 bytes) via custom_writer, reads them back via memory_reader, and asserts every entry's .size attribute equals the byte length of the body returned by entry.get_blocks(), exercising the size-attribute exposure on the python binding.
python-libarchive-c ustar with a symlink entry exposes issym/isfile on readback Original / libarchive / usage-python-libarchive-c-r16-tar-symlink-entry-roundtrip Passed
Builds a ustar archive on disk from a regular file plus a real on-disk symlink to it via libarchive.file_writer.add_files, reads the archive back via libarchive.file_reader, and asserts the regular entry reports .issym is False/.isfile is True while the link entry reports .issym is True and .linkname points to the target basename — exercising the filetype propagation path on ustar.
python-libarchive-c ustar entry preserves uid/gid across in-memory round-trip Original / libarchive / usage-python-libarchive-c-r16-tar-uid-gid-roundtrip Passed
Builds a ustar archive on disk from a real file whose owner/group are the current process uid/gid via libarchive.file_writer with add_files, then reads it back via libarchive.file_reader and asserts every entry's .uid and .gid match the current os.getuid()/os.getgid(), exercising the ownership-metadata propagation path.
python-libarchive-c file_writer(ustar, filter='xz') round-trips through file_reader Original / libarchive / usage-python-libarchive-c-r16-tar-xz-filter-chain-roundtrip Passed
Builds a tar.xz archive via libarchive.file_writer(format_name='ustar', filter_name='xz') containing three entries with known payloads, reads them back via libarchive.file_reader, and asserts every (pathname, payload) pair matches the input — exercising the ustar+xz filter chain end-to-end.
python-libarchive-c zip readback yields the same SHA256 as the original payload Original / libarchive / usage-python-libarchive-c-r16-zip-entry-checksum-readback Passed
Builds a zip archive with a single entry whose payload is deterministic (256 bytes of 0..255), reads it back via libarchive.file_reader, computes SHA256 of the decompressed bytes via hashlib, and asserts the digest equals the SHA256 of the original payload — exercising the bytes-level fidelity of the zip writer/reader pair.
python-libarchive-c cpio (odc) preserves binary payload across memory round-trip Original / libarchive / usage-python-libarchive-c-r17-cpio-odc-binary-roundtrip Passed
Builds a cpio archive in memory using format "cpio" (odc by default) via custom_writer containing one entry with a 256-byte binary payload covering all byte values, decodes it back via memory_reader, and asserts the recovered payload matches the original byte-for-byte.
python-libarchive-c ArchiveEntry.isfile is True for regular ustar entries Original / libarchive / usage-python-libarchive-c-r17-entry-isfile-true-for-regular Passed
Builds an in-memory ustar archive via custom_writer with two regular entries, reads back via memory_reader, and asserts entry.isfile is True and entry.isdir/entry.issym/entry.islnk are all False for every entry, exercising the file-type predicate surface on regular files.
python-libarchive-c memory writer entry.size equals the explicit size argument on readback Original / libarchive / usage-python-libarchive-c-r17-entry-size-explicit-matches-payload Passed
Builds an in-memory ustar archive via custom_writer where add_file_from_memory is called with explicit size for each of three entries, reads back via memory_reader, and asserts entry.size matches the original payload length and the integer passed in the size argument for every entry.
python-libarchive-c file_reader iterates a tar.gz produced by file_writer Original / libarchive / usage-python-libarchive-c-r17-file-reader-on-tar-gz Passed
Writes a small ustar+gzip archive to disk via libarchive.file_writer with filter_name="gzip", then opens the archive path via libarchive.file_reader and asserts the iteration produces exactly the entries written in insertion order, exercising the gzip filter on file-backed I/O.
python-libarchive-c gnutar format iterates exactly three entries Original / libarchive / usage-python-libarchive-c-r17-gnutar-three-entry-iter-count Passed
Builds an in-memory gnutar archive containing three entries via custom_writer, reads it via memory_reader, and asserts the iteration produces exactly three ArchiveEntry objects with the expected pathnames, exercising the gnutar format on a fixed multi-entry payload.
python-libarchive-c pax entry pathname preserves a unicode (non-ASCII) string round-trip Original / libarchive / usage-python-libarchive-c-r17-pathname-unicode-roundtrip Passed
Builds an in-memory pax archive via custom_writer with a single entry whose pathname contains the non-ASCII string "rondure-éè.txt", reads it back via memory_reader, and asserts entry.pathname returns the original unicode string unchanged, exercising the unicode pathname propagation through libarchive.
python-libarchive-c pax payload SHA-256 survives memory_writer/memory_reader round-trip Original / libarchive / usage-python-libarchive-c-r17-pax-payload-hash-roundtrip Passed
Builds a pax archive in memory via custom_writer with a single 4 KiB entry whose payload is pseudo-random bytes, decodes via memory_reader, and asserts the SHA-256 of the original payload equals the SHA-256 of the entry blocks read back, exercising binary fidelity across the pax codec.
python-libarchive-c ustar with bzip2 filter round-trips on disk Original / libarchive / usage-python-libarchive-c-r17-tar-bz2-filter-chain-roundtrip Passed
Builds a ustar archive via libarchive.file_writer with filter_name="bzip2", writes three entries to it, and reads the file back via libarchive.file_reader asserting every pathname and payload matches insertion order, exercising the bzip2 filter chain on a file-backed writer.
python-libarchive-c ustar with a regular and a symlink mixed iterates both entry kinds Original / libarchive / usage-python-libarchive-c-r17-tar-symlink-and-regular-mix-iter Passed
Builds a ustar archive on disk by feeding libarchive.file_writer.add_files a real regular file plus a real symlink in the same call, reads it back via libarchive.file_reader, and asserts the regular entry reports .isfile True with .issym False while the symlink entry reports .issym True and .linkname pointing to the regular basename.
python-libarchive-c ustar with xz filter round-trips 10 entries on disk Original / libarchive / usage-python-libarchive-c-r17-ustar-xz-ten-entries-roundtrip Passed
Builds a ustar archive via libarchive.file_writer with filter_name="xz" containing ten entries named e00.txt..e09.txt, reads it back via libarchive.file_reader, and asserts the iteration produces exactly ten entries in insertion order with matching payloads, exercising xz compression at a moderate entry count.
python-libarchive-c cpio_newc roundtrip preserves payload bytes exactly Original / libarchive / usage-python-libarchive-c-r18-cpio-newc-roundtrip-payload-equal Passed
Builds an in-memory cpio archive in newc format using custom_writer with two named entries containing distinct payloads, reads back via memory_reader, and asserts each recovered payload equals the source byte-for-byte, exercising the newc cpio format on a multi-entry archive.
python-libarchive-c pax entry preserves an explicit uname string set via ctypes Original / libarchive / usage-python-libarchive-c-r18-pax-uname-roundtrip-explicit Passed
Builds a pax_restricted archive on disk where each entry's uname is set to a deterministic label using archive_entry_set_uname through ctypes against libarchive.so.13, reads back via file_reader and ctypes archive_entry_uname, and asserts every recovered uname matches the writer's label, exercising the pax extended-attribute persistence path.
python-libarchive-c ustar empty-payload entry reports size zero on readback Original / libarchive / usage-python-libarchive-c-r18-tar-empty-payload-zero-size Passed
Builds a ustar archive in memory containing a single named entry added with an empty bytes payload via add_file_from_memory, reads back via memory_reader, and asserts entry.size equals zero and the iterated payload is the empty bytes object, exercising the zero-length-entry path through the writer and reader.
python-libarchive-c gnutar with gzip filter exposes three entries on iteration Original / libarchive / usage-python-libarchive-c-r18-tar-gz-three-entry-iter-count Passed
Builds a gnutar archive on disk via libarchive.file_writer with filter_name="gzip" containing three named entries, then reads it back with libarchive.file_reader and asserts iteration yields exactly three entries whose pathnames match the writer's order, exercising the gnutar gzip filter on a file-backed reader.
python-libarchive-c ustar entry mode 0o755 round-trips through file reader Original / libarchive / usage-python-libarchive-c-r18-tar-mode-0755-roundtrip Passed
Builds a ustar archive on disk where one entry is added from a staged file chmod'd to 0o755, reads back via libarchive.file_reader, and asserts the recovered entry.mode masked with 0o777 equals 0o755, exercising the executable-permission round-trip distinct from the 0o644 mode case.
python-libarchive-c ustar preserves a dot-prefixed relative pathname on readback Original / libarchive / usage-python-libarchive-c-r18-tar-pathname-with-dot-prefix Passed
Builds an in-memory ustar archive containing a single entry whose pathname starts with the literal "./" relative prefix and asserts the recovered entry.pathname equals the original dot-prefixed string exactly, exercising the relative-path emission through the ustar writer and reader.
python-libarchive-c ustar with xz filter preserves four-entry pathname order Original / libarchive / usage-python-libarchive-c-r18-tar-xz-four-entry-pathname-order Passed
Builds a ustar archive on disk via libarchive.file_writer with filter_name="xz" containing four entries inserted in a non-alphabetical order, reads back via libarchive.file_reader, and asserts the iteration pathname sequence equals the original insertion order, exercising the xz filter on a four-entry on-disk archive.
python-libarchive-c ustar with zstd filter at compression-level=3 roundtrips a payload Original / libarchive / usage-python-libarchive-c-r18-tar-zstd-level-3-roundtrip Passed
Builds a ustar archive in memory via custom_writer with filter_name="zstd" and options "compression-level=3" containing one named payload, reads back via memory_reader, and asserts the recovered payload equals the source byte-for-byte, exercising the zstd filter with a non-default compression level on a memory writer.
python-libarchive-c zip readback returns identical payload regardless of options used at write Original / libarchive / usage-python-libarchive-c-r18-zip-stored-and-deflated-payload-equal Passed
Builds two zip archives in memory using libarchive.memory_writer with options "compression=store" and "compression=deflate" containing the same single payload, reads both back via libarchive.memory_reader, and asserts the recovered byte sequences are byte-identical, exercising the lossless invariant across two compression methods.
python-libarchive-c zip two-entry archive preserves insertion order on iteration Original / libarchive / usage-python-libarchive-c-r18-zip-two-entries-pathname-order-preserved Passed
Builds an in-memory zip archive via custom_writer with two named entries inserted in a deliberate non-alphabetical order, reads back via memory_reader, and asserts the iteration pathname sequence equals the original write order, exercising the zip writer order-preservation guarantee on a two-entry archive.
python-libarchive-c 7zip empty-payload entry reports size zero on readback Original / libarchive / usage-python-libarchive-c-r19-7zip-empty-payload-zero-size Passed
Builds a 7zip archive in memory containing a single entry added via add_file_from_memory with a zero-length payload, reads back via memory_reader, and asserts entry.size equals zero and the iterated payload is the empty bytes object, exercising the zero-length-entry path through the 7zip writer and reader distinct from ustar-empty tests.
python-libarchive-c cpio_newc three-entry archive iterates exactly three pathnames Original / libarchive / usage-python-libarchive-c-r19-cpio-newc-three-entries-iter-count Passed
Builds an in-memory cpio archive in newc format via custom_writer with three named entries a.txt b.txt c.txt and distinct payloads, reads back via memory_reader, and asserts both the iterated entry count is exactly three and the pathnames match the insertion order, exercising the newc cpio iteration count invariant.
python-libarchive-c pax two-entry archive recovers each payload independently and concatenates correctly Original / libarchive / usage-python-libarchive-c-r19-pax-two-entries-payload-concat Passed
Builds an in-memory pax archive via custom_writer with two named entries containing distinct payloads, reads back via memory_reader, and asserts that the concatenation of the two recovered payloads (in iteration order) equals the concatenation of the source payloads in the same order, exercising the pax format multi-entry payload preservation invariant.
python-libarchive-c ustar with bzip2 filter at compression-level=1 roundtrips a payload Original / libarchive / usage-python-libarchive-c-r19-tar-bzip2-level-1-roundtrip Passed
Builds an in-memory ustar archive via custom_writer with filter_name="bzip2" and options "compression-level=1" containing one named payload, reads back via memory_reader, and asserts the recovered payload equals the source byte-for-byte, exercising the bzip2 filter at the lowest block-size level distinct from the level-9 case.
python-libarchive-c ustar+gzip preserves insertion order for five named entries Original / libarchive / usage-python-libarchive-c-r19-tar-gz-five-entry-pathname-order Passed
Builds an in-memory ustar archive with gzip filter containing five entries named e0.txt through e4.txt added in that order with distinct payloads, reads back via memory_reader, and asserts the recovered pathnames list equals the insertion order, exercising the gzip filter on a small but non-trivial multi-entry archive.
python-libarchive-c ustar entry mode 0o700 round-trips through file reader Original / libarchive / usage-python-libarchive-c-r19-tar-mode-0700-roundtrip Passed
Builds a ustar archive on disk where one entry is staged from a file chmod'd to 0o700, reads back via libarchive.file_reader, and asserts the recovered entry.mode masked with 0o777 equals 0o700, exercising the owner-only-permission round-trip distinct from the 0o644 and 0o755 mode cases.
python-libarchive-c ustar+xz preserves an 8192-byte payload byte-for-byte Original / libarchive / usage-python-libarchive-c-r19-tar-xz-large-payload-8192-roundtrip Passed
Builds an in-memory ustar archive with xz filter containing a single entry whose payload is exactly 8192 bytes of a deterministic repeating ASCII pattern, reads back via memory_reader, and asserts the recovered payload equals the source byte-for-byte, exercising the xz filter on a multi-block payload size distinct from prior single-block xz tests.
python-libarchive-c ustar with zstd filter at compression-level=1 roundtrips a payload Original / libarchive / usage-python-libarchive-c-r19-tar-zstd-level-1-roundtrip Passed
Builds a ustar archive in memory via custom_writer with filter_name="zstd" and options "compression-level=1" containing one named payload, reads back via memory_reader, and asserts the recovered payload equals the source byte-for-byte, exercising the zstd filter at the fastest compression level distinct from the level-3 and level-19 cases.
python-libarchive-c zip deflate at compression-level=1 roundtrips a payload byte-for-byte Original / libarchive / usage-python-libarchive-c-r19-zip-deflate-level-1-roundtrip Passed
Builds a zip archive in memory via custom_writer with options "compression=deflate,compression-level=1" containing one named entry with a structured payload, reads back via memory_reader, and asserts the recovered payload equals the source byte-for-byte, exercising the deflate filter at the fastest level distinct from the level-9 case.
python-libarchive-c zip two-entry archive preserves each entry payload independently Original / libarchive / usage-python-libarchive-c-r19-zip-two-entries-distinct-payloads-roundtrip Passed
Builds an in-memory zip archive via custom_writer with two named entries alpha.bin and beta.bin containing distinct binary payloads, reads back via memory_reader, and asserts each recovered payload equals its source byte-for-byte and the pathname order matches insertion, exercising the multi-entry zip writer-reader pair on a deterministic two-entry fixture.
python-libarchive-c cpio "newc" four-entry archive yields exactly four iter entries Original / libarchive / usage-python-libarchive-c-r20-cpio-newc-four-entries-iter-count Passed
Builds an in-memory cpio archive (format "newc") via custom_writer with four named entries with small payloads and asserts that iterating via memory_reader yields exactly 4 entries, exercising the cpio iteration-count invariant for a four-entry archive distinct from the existing three-entry (r19) and twelve-entry (batch20) cases.
python-libarchive-c pax entry with permission 0644 roundtrips the permission bits Original / libarchive / usage-python-libarchive-c-r20-pax-mode-0644-roundtrip Passed
Builds a pax archive in memory via custom_writer with one entry whose permission is set to 0o644 through the add_file_from_memory keyword, reads back via memory_reader, and asserts the recovered entry mode masked to the low-nine permission bits equals 0o644, exercising the pax permission roundtrip distinct from the existing batch20 pax 0700 case and other format mode tests.
python-libarchive-c pax entry with uid=1234 set via ctypes roundtrips the uid attribute Original / libarchive / usage-python-libarchive-c-r20-pax-uid-1234-roundtrip Passed
Builds a pax archive in memory using new_archive_entry and ctypes-bound archive_entry_set_uid to stamp uid 1234 on one entry, reads back via memory_reader, and asserts the recovered entry.uid equals 1234, exercising the pax numeric uid roundtrip with a small in-range value distinct from the batch15 millions-scale uid+gid test.
python-libarchive-c ustar with bzip2 filter at compression-level=9 roundtrips a payload Original / libarchive / usage-python-libarchive-c-r20-tar-bzip2-level-9-roundtrip Passed
Builds a ustar archive in memory via custom_writer with filter_name="bzip2" and options "compression-level=9" containing one named payload, reads back via memory_reader, and asserts the recovered payload equals the source byte-for-byte, exercising the bzip2 filter at the maximum compression level distinct from the existing batch18 bzip2 level-9 case (which writes to a file path rather than memory).
python-libarchive-c ustar with gzip filter at compression-level=9 roundtrips a payload Original / libarchive / usage-python-libarchive-c-r20-tar-gzip-level-9-roundtrip Passed
Builds a ustar archive in memory via custom_writer with filter_name="gzip" and options "compression-level=9" containing one named payload, reads back via memory_reader, and asserts the recovered payload equals the source byte-for-byte, exercising the gzip filter at the highest compression level distinct from prior unspecified-level gzip and other-level tests.
python-libarchive-c ustar entry with mtime=year-2000 roundtrips the modification time Original / libarchive / usage-python-libarchive-c-r20-tar-mtime-2000-roundtrip Passed
Builds an in-memory ustar archive via custom_writer with one entry whose mtime is set to 946684800 (2000-01-01 00:00:00 UTC) via the add_file_from_memory mtime keyword, reads back via memory_reader, and asserts the recovered entry.mtime equals 946684800, exercising the ustar mtime roundtrip with a fixed Y2K boundary value distinct from prior 1970-epoch, 2030, or int32-max cases.
python-libarchive-c ustar three-entry archive yields three distinct pathnames in iteration order Original / libarchive / usage-python-libarchive-c-r20-tar-three-entries-distinct-pathnames Passed
Builds an in-memory ustar archive via custom_writer with three named entries "a.txt", "b.txt", "c.txt" with single-character payloads, reads back via memory_reader, and asserts the recovered pathname list equals the source list in insertion order with len == 3 and no duplicates, exercising the ustar multi-entry pathname-order invariant on a three-entry archive distinct from prior two-entry and many-entry cases.
python-libarchive-c ustar with xz filter at compression-level=9 roundtrips a payload Original / libarchive / usage-python-libarchive-c-r20-tar-xz-level-9-roundtrip Passed
Builds a ustar archive in memory via custom_writer with filter_name="xz" and options "compression-level=9" containing one named payload, reads back via memory_reader, and asserts the recovered payload equals the source byte-for-byte, exercising the xz filter at the maximum compression level distinct from prior unspecified-level xz tests.
python-libarchive-c zip deflate at compression-level=5 roundtrips a payload byte-for-byte Original / libarchive / usage-python-libarchive-c-r20-zip-deflate-level-5-roundtrip Passed
Builds a zip archive in memory via custom_writer with options "compression=deflate,compression-level=5" containing one named entry with a structured payload, reads back via memory_reader, and asserts the recovered payload equals the source byte-for-byte, exercising the zip deflate filter at the default middle compression level distinct from the level-1 and level-9 cases.
python-libarchive-c zip default deflate roundtrips a 64 KiB payload byte-for-byte Original / libarchive / usage-python-libarchive-c-r20-zip-large-payload-equals-source Passed
Builds a zip archive in memory via custom_writer with default options containing one entry holding a 64 KiB payload composed of a repeating block plus a unique trailer, reads back via memory_reader, and asserts the recovered payload size equals 65536 and the bytes equal the source, exercising the zip default writer with a payload large enough to span multiple deflate blocks distinct from the existing zip-large-payload test which uses a different size and tactic.
python-libarchive-c 7zip two-entry archive yields exactly two iter entries Original / libarchive / usage-python-libarchive-c-r21-7zip-two-entries-iter-count Passed
Builds an in-memory 7zip archive via custom_writer with two named entries with small distinct payloads and asserts memory_reader iteration yields exactly 2 entries with the original pathnames in insertion order, exercising the 7zip iter-count invariant at two entries distinct from the existing one (r19 empty-payload) and three (r13) entry 7zip cases.
python-libarchive-c cpio "odc" three-entry archive yields exactly three iter entries Original / libarchive / usage-python-libarchive-c-r21-cpio-odc-three-entries-iter-count Passed
Builds an in-memory cpio archive using the "odc" portable ASCII format via custom_writer with three named entries and asserts memory_reader iteration yields exactly 3 entries with the same pathnames in the original order, exercising the cpio-odc iteration distinct from the existing cpio_newc iter-count tests at three/four/twelve entries.
python-libarchive-c pax entry with permission 0755 roundtrips the permission bits Original / libarchive / usage-python-libarchive-c-r21-pax-perm-0755-roundtrip Passed
Builds a pax archive in memory via custom_writer with one entry whose permission is set to 0o755 through the add_file_from_memory keyword, reads back via memory_reader, and asserts the recovered entry mode masked to the low-nine permission bits equals 0o755, exercising the pax permission roundtrip at 0755 distinct from the existing 0644 (r20) and 0700 (batch20) cases.
python-libarchive-c pax entry with uid=0 (root) survives roundtrip via ctypes setter Original / libarchive / usage-python-libarchive-c-r21-pax-uid-zero-roundtrip Passed
Writes a pax entry whose uid is set to 0 (root) via archive_entry_set_uid reached through ctypes (python-libarchive-c does not expose a uid kwarg setter), then reads back the entry.uid attribute and asserts the value is 0, exercising the pax uid=0 ctypes-driven roundtrip distinct from the existing r20 pax-uid-1234-roundtrip case which used a non-zero uid.
python-libarchive-c tar.bz2 with explicit bzip2 level 5 roundtrips two entries Original / libarchive / usage-python-libarchive-c-r21-tar-bzip2-level-5-roundtrip Passed
Builds a tar.bz2 archive in memory via custom_writer with filter "bzip2" and options "bzip2:compression-level=5", writes two text entries totaling several hundred bytes, reads back via memory_reader, and asserts both pathnames and payloads are recovered intact, exercising the bzip2 compression-level=5 filter option distinct from prior explicit level 1 (r19) and level 9 (r20) cases.
python-libarchive-c pax entry with gname "wheel" survives roundtrip via ctypes setter Original / libarchive / usage-python-libarchive-c-r21-tar-gname-explicit-roundtrip Passed
Writes a pax entry whose group name is set to "wheel" via archive_entry_set_gname reached through ctypes (python-libarchive-c does not expose a gname kwarg setter), then reads back the entry.gname through archive_entry_gname and asserts byte equality, exercising the pax gname-roundtrip with a different group-name value distinct from the existing batch21 pax-gname-ctypes-roundtrip test that used "staff".
python-libarchive-c tar.gz with explicit gzip level 3 roundtrips a single entry Original / libarchive / usage-python-libarchive-c-r21-tar-gzip-level-3-roundtrip Passed
Builds a tar.gz archive in memory via custom_writer with filter "gzip" and options "gzip:compression-level=3", writes a single 2 KiB payload entry, reads back via memory_reader, and asserts the pathname and payload are recovered intact, exercising the gzip compression-level=3 filter option distinct from prior level 6 (batch14) and level 9 (r20) cases.
python-libarchive-c ustar entry with mtime=2025-01-01 roundtrips the modification time Original / libarchive / usage-python-libarchive-c-r21-tar-mtime-2025-roundtrip Passed
Builds an in-memory ustar archive via custom_writer with one entry whose mtime is set to 1735689600 (2025-01-01 00:00:00 UTC) via add_file_from_memory mtime keyword, reads back via memory_reader, and asserts the recovered entry.mtime equals 1735689600, exercising the ustar mtime roundtrip at a 2025 boundary distinct from prior 1970, 2000, 2030 and int32-max cases.
python-libarchive-c zip with explicit deflate compression-level 3 roundtrips a single entry Original / libarchive / usage-python-libarchive-c-r21-zip-deflate-level-3-roundtrip Passed
Builds a zip archive in memory via custom_writer with options "zip:compression-level=3", writes a single highly-compressible payload, reads back via memory_reader, and asserts the pathname and payload are recovered intact, exercising the zip deflate compression-level 3 distinct from prior level 1 (r19), level 5 (r20), and level 9 (batch17) cases.
python-libarchive-c zip six-entry archive yields exactly six iter entries Original / libarchive / usage-python-libarchive-c-r21-zip-six-entries-iter-count Passed
Builds an in-memory zip archive via custom_writer with six named entries with small distinct payloads and asserts memory_reader iteration yields exactly 6 entries with the original pathnames in insertion order, exercising the zip iter-count invariant at six entries distinct from prior two/twenty (r21 batches) entry zip iter-count tests.
python-libarchive-c repeat read Original / libarchive / usage-python-libarchive-c-repeat-read Passed
python-libarchive-c size metadata Original / libarchive / usage-python-libarchive-c-size-metadata Passed
python-libarchive-c spaced name Original / libarchive / usage-python-libarchive-c-spaced-name Passed
python-libarchive-c stream read Original / libarchive / usage-python-libarchive-c-stream-read Passed
python-libarchive-c tar NUL bytes Original / libarchive / usage-python-libarchive-c-tar-binary-nul Passed
Stores NUL-delimited binary content in a tar archive with python-libarchive-c and verifies the exact bytes are preserved.
python-libarchive-c tar binary payload Original / libarchive / usage-python-libarchive-c-tar-binary-payload Passed
Writes binary bytes through a tar archive in python-libarchive-c and verifies the exact payload round-trips.
python-libarchive-c tar deep tree many levels Original / libarchive / usage-python-libarchive-c-tar-deep-tree-many-levels Passed
Roundtrips a deeply nested directory hierarchy through python-libarchive-c and verifies the path order.
python-libarchive-c tar dotfile Original / libarchive / usage-python-libarchive-c-tar-dotfile Passed
python-libarchive-c tar empty file Original / libarchive / usage-python-libarchive-c-tar-empty-file Passed
Writes and reads an empty tar file entry through python-libarchive-c and verifies zero-byte archive member metadata.
python-libarchive-c tar extract Original / libarchive / usage-python-libarchive-c-tar-extract Passed
python-libarchive-c tar gzip memory reader Original / libarchive / usage-python-libarchive-c-tar-gzip-memory-reader Passed
Reads a gzip-compressed tar archive from memory through python-libarchive-c and verifies the member order.
python-libarchive-c tar hidden directory file Original / libarchive / usage-python-libarchive-c-tar-hidden-directory-file Passed
python-libarchive-c tar list Original / libarchive / usage-python-libarchive-c-tar-list Passed
python-libarchive-c tar long name Original / libarchive / usage-python-libarchive-c-tar-long-name Passed
Writes a long tar pathname through python-libarchive-c and verifies the full path survives archive round trip.
python-libarchive-c tar lz4 memory reader Original / libarchive / usage-python-libarchive-c-tar-lz4-memory-reader Passed
Reads an lz4-filtered gnutar archive from memory through python-libarchive-c and verifies entry payloads.
python-libarchive-c tar many empty files Original / libarchive / usage-python-libarchive-c-tar-many-empty-files Passed
python-libarchive-c tar repeated read Original / libarchive / usage-python-libarchive-c-tar-repeated-read Passed
Reads the same tar archive twice through python-libarchive-c and verifies both passes return the same member order.
python-libarchive-c tar space path Original / libarchive / usage-python-libarchive-c-tar-space-path Passed
Writes and reads a tar archive path containing spaces through python-libarchive-c and verifies the stored pathname and payload.
python-libarchive-c tar subdir order Original / libarchive / usage-python-libarchive-c-tar-subdir-order Passed
python-libarchive-c tar to zip copy Original / libarchive / usage-python-libarchive-c-tar-to-zip Passed
python-libarchive-c tar xz memory reader Original / libarchive / usage-python-libarchive-c-tar-xz-memory-reader Passed
Reads an xz-compressed gnutar archive from memory through python-libarchive-c and verifies the member order.
python-libarchive-c ustar format Original / libarchive / usage-python-libarchive-c-ustar-format Passed
python-libarchive-c xz filter Original / libarchive / usage-python-libarchive-c-xz-filter Passed
python-libarchive-c ZIP binary payload Original / libarchive / usage-python-libarchive-c-zip-binary-payload Passed
Writes raw binary bytes into a ZIP archive with python-libarchive-c and verifies the exact payload round-trips.
python-libarchive-c zip directory entry Original / libarchive / usage-python-libarchive-c-zip-directory-entry Passed
Writes a zip archive with an explicit directory entry through python-libarchive-c and verifies the listed members.
python-libarchive-c zip dotfile Original / libarchive / usage-python-libarchive-c-zip-dotfile Passed
python-libarchive-c zip empty file Original / libarchive / usage-python-libarchive-c-zip-empty-file-entry Passed
Writes and reads an empty zip entry through python-libarchive-c and verifies the zero-byte member metadata.
python-libarchive-c empty ZIP file Original / libarchive / usage-python-libarchive-c-zip-empty-file Passed
Writes an empty ZIP member through python-libarchive-c and verifies the entry size remains zero when read back.
python libarchive zip long path Original / libarchive / usage-python-libarchive-c-zip-long-path Passed
python libarchive zip many empty files Original / libarchive / usage-python-libarchive-c-zip-many-empty-files Passed
python-libarchive-c zip many files count Original / libarchive / usage-python-libarchive-c-zip-many-files-count Passed
Writes a zip archive containing several files through python-libarchive-c and verifies the expected member count.
python-libarchive-c many ZIP files Original / libarchive / usage-python-libarchive-c-zip-many-files Passed
python-libarchive-c zip memory reader names Original / libarchive / usage-python-libarchive-c-zip-memory-reader-names Passed
Reads a zip archive from memory through python-libarchive-c and verifies the expected member names.
python-libarchive-c zip nested directory Original / libarchive / usage-python-libarchive-c-zip-nested-directory Passed
python libarchive zip NUL bytes Original / libarchive / usage-python-libarchive-c-zip-nul-bytes Passed
python-libarchive-c ZIP repeat read Original / libarchive / usage-python-libarchive-c-zip-repeat-read Passed
Reads the same ZIP archive twice through python-libarchive-c and verifies repeated reads stay consistent.
python-libarchive-c zip roundtrip Original / libarchive / usage-python-libarchive-c-zip-roundtrip Passed
python libarchive zip spaced name Original / libarchive / usage-python-libarchive-c-zip-spaced-name Passed
python-libarchive-c zip to tar copy Original / libarchive / usage-python-libarchive-c-zip-to-tar Passed
python-libarchive-c zstd filter Original / libarchive / usage-python-libarchive-c-zstd-filter Passed
CVE-2006-5680 libarchive regression Original / libarchive / cve-2006-5680 Passed
Asserts that the tar reader detects a skip request that runs past physical EOF and surfaces a truncated-input diagnostic, instead of repeatedly issuing zero-byte reads in an attempt to skip beyond the end of the archive.
CVE-2007-3644 libarchive regression Original / libarchive / cve-2007-3644 Passed
Asserts that the PAX extended-header parser fails fast on a malformed extension record (length-prefixed but no terminator) instead of looping over the malformed record forever.
CVE-2015-2304 libarchive regression Original / libarchive / cve-2015-2304 Passed
Asserts that bsdtar -x strips the leading slash from a cpio entry whose declared name is an absolute path so the entry is materialized under the extraction root and never escapes to the filesystem-root location named in the archive.
CVE-2015-8923 libarchive regression Original / libarchive / cve-2015-8923 Passed
Asserts that process_extra normalizes signed-versus-unsigned ZIP extra-field offsets and surfaces a documented "Truncated ZIP" diagnostic when the extra-field length runs past the available buffer instead of crashing.
CVE-2015-8931 libarchive regression Original / libarchive / cve-2015-8931 Passed
Asserts that the mtree reader handles timestamp values that exceed time_t limits without triggering undefined behavior, normalizing extreme positive and negative time= attributes during extraction.
CVE-2015-8933 libarchive regression Original / libarchive / cve-2015-8933 Passed
Asserts that archive_read_format_tar_skip uses checked arithmetic and surfaces a truncated-input diagnostic on a tar entry whose declared size (octal 077777777777) exceeds the actual stream by 8 GiB rather than wrapping or crashing.
CVE-2016-4809 libarchive regression Original / libarchive / cve-2016-4809 Passed
Asserts that the CPIO reader caps symlink-target size and rejects an entry whose declared symlink length spans most of the 32-bit address space, surfacing a documented "malformed cpio archive" diagnostic.
CVE-2016-5418 libarchive regression Original / libarchive / cve-2016-5418 Passed
Asserts that bsdtar -x discards the data payload of a hardlink entry whose declared size is non-zero, instead of writing the attacker-supplied bytes through the link to an existing target outside the new archive contents.
CVE-2016-7166 libarchive regression Original / libarchive / cve-2016-7166 Passed
Asserts that libarchive caps recursive decompression-filter nesting and rejects an input wrapped in 250 layers of gzip with a "too many filters for decoding" diagnostic instead of consuming unbounded memory.
CVE-2016-8688 libarchive regression Original / libarchive / cve-2016-8688 Passed
Asserts that the mtree bidder bounds line size when extending its read-ahead buffer, surfacing a documented "line too long" diagnostic on a 200 KB single-line input instead of crashing in detect_form/bid_entry.
CVE-2018-1000880 libarchive regression Original / libarchive / cve-2018-1000880 Passed
Asserts that a tiny WARC record claiming a multi-gigabyte body fails fast with a documented truncation diagnostic instead of running for an unbounded duration consuming CPU and disk.
CVE-2024-37407 libarchive regression Original / libarchive / cve-2024-37407 Passed
Asserts that the ZIP central-directory parser handles a zero-length entry name without out-of-bounds access into the mac-ext code path, surfacing a documented diagnostic instead of crashing.
CVE-2024-57970 libarchive regression Original / libarchive / cve-2024-57970 Passed
Asserts that header_gnu_longlink rejects a TAR entry whose GNU longlink payload is truncated mid-name, instead of overrunning the read-ahead buffer.
CVE-2025-5916 libarchive regression Original / libarchive / cve-2025-5916 Passed
Asserts that the WARC reader rejects a record whose Content-Length is close to INT64_MAX without overflow or unbounded read attempts.
Archive metadata listing behavior Port / libarchive / archive-metadata-listing Passed
archive read API smoke Port / libarchive / archive-read-api-smoke Passed
bsdcpio copy archive round trip Port / libarchive / bsdcpio-copy-roundtrip Passed
bsdtar tar and zip round trip Port / libarchive / bsdtar-tar-zip-roundtrip Passed
Path traversal rejection Port / libarchive / path-traversal-rejection Passed
python libarchive add entries pax to zip Port / libarchive / usage-python-libarchive-c-add-entries-pax-to-zip Passed
python-libarchive-c cpio binary roundtrip Port / libarchive / usage-python-libarchive-c-batch10-cpio-binary-roundtrip Passed
Writes a repeated binary payload into a cpio archive via python-libarchive-c and verifies the bytes match after read-back.
python-libarchive-c pax binary payload Port / libarchive / usage-python-libarchive-c-batch10-pax-binary-payload Passed
Writes a 64-byte binary payload into a pax archive via python-libarchive-c and verifies all bytes survive the round trip.
python-libarchive-c tar gzip filter roundtrip Port / libarchive / usage-python-libarchive-c-batch10-tar-gzip-roundtrip Passed
Writes a tar archive through the gzip filter via python-libarchive-c and verifies the entry payload survives a read-back.
python-libarchive-c tar seven empty files Port / libarchive / usage-python-libarchive-c-batch10-tar-many-empties Passed
Writes seven zero-byte files into a tar via python-libarchive-c and verifies all entries are read back with empty payloads.
python-libarchive-c tar mixed empty and non-empty Port / libarchive / usage-python-libarchive-c-batch10-tar-size-zero-mixed Passed
Writes a tar containing two empty and two four-byte entries via python-libarchive-c and verifies the metadata sizes match each entry.
python-libarchive-c tar zstd memory reader Port / libarchive / usage-python-libarchive-c-batch10-tar-zstd-memory-reader Passed
Writes a zstd-filtered tar via python-libarchive-c and verifies memory_reader returns both entries with their payloads.
python-libarchive-c bzip2 filter listing Port / libarchive / usage-python-libarchive-c-batch10-zip-bzip2-filter-fallback Passed
Writes a tar through the bzip2 filter via python-libarchive-c and verifies the entry name appears in the listing.
python-libarchive-c zip deep nested path Port / libarchive / usage-python-libarchive-c-batch10-zip-deep-path Passed
Writes a six-segment nested pathname into a zip via python-libarchive-c and verifies the full path survives the round trip.
python-libarchive-c zip large payload Port / libarchive / usage-python-libarchive-c-batch10-zip-large-payload Passed
Writes a multi-kilobyte repeating payload into a zip via python-libarchive-c and verifies the read-back bytes match exactly.
python-libarchive-c zip preserves write order Port / libarchive / usage-python-libarchive-c-batch10-zip-name-order-preserved Passed
Writes three zip entries in non-alphabetical order via python-libarchive-c and verifies the reader returns them in the same insertion order.
libarchive bzip2 memory reader Port / libarchive / usage-python-libarchive-c-batch11-bzip2-memory-reader Passed
libarchive cpio name order Port / libarchive / usage-python-libarchive-c-batch11-cpio-name-order Passed
libarchive gzip two entries Port / libarchive / usage-python-libarchive-c-batch11-gzip-two-entries Passed
libarchive memory empty tar Port / libarchive / usage-python-libarchive-c-batch11-memory-empty-tar Passed
libarchive pax size map Port / libarchive / usage-python-libarchive-c-batch11-pax-size-map Passed
libarchive tar large blocks Port / libarchive / usage-python-libarchive-c-batch11-tar-large-blocks Passed
libarchive tar leading directory Port / libarchive / usage-python-libarchive-c-batch11-tar-leading-dir Passed
libarchive zip CRLF payload Port / libarchive / usage-python-libarchive-c-batch11-zip-crlf-payload Passed
libarchive zip JSON payload Port / libarchive / usage-python-libarchive-c-batch11-zip-json-payload Passed
libarchive zstd size check Port / libarchive / usage-python-libarchive-c-batch11-zstd-size-check Passed
python-libarchive-c 7zip read Port / libarchive / usage-python-libarchive-c-batch12-7zip-read Passed
python-libarchive-c ar svr4 roundtrip Port / libarchive / usage-python-libarchive-c-batch12-ar-svr4-roundtrip Passed
Writes an ar svr4 (System V) archive through python-libarchive-c and reads back the member payloads.
python-libarchive-c extract_file to cwd Port / libarchive / usage-python-libarchive-c-batch12-extract-file-to-cwd Passed
Builds a tar archive then unpacks it via libarchive.extract_file into a chdir'd directory and validates payloads on disk.
python-libarchive-c hardlink from disk Port / libarchive / usage-python-libarchive-c-batch12-hardlink-from-disk Passed
Writes a tar archive containing a regular file plus a hardlink entry pointing back to it via libarchive's C ABI, then reads it back through python-libarchive-c and verifies islnk is True with linkname pointing at the original.
python-libarchive-c mtree roundtrip Port / libarchive / usage-python-libarchive-c-batch12-mtree-roundtrip Passed
Writes an mtree-format archive via python-libarchive-c and verifies entry names roundtrip on read.
python-libarchive-c raw gzip stream Port / libarchive / usage-python-libarchive-c-batch12-raw-gzip-stream Passed
Reads a plain gzip-compressed file using format_name="raw" through python-libarchive-c and verifies the payload bytes match.
python-libarchive-c symlink from disk Port / libarchive / usage-python-libarchive-c-batch12-symlink-from-disk Passed
Adds a real on-disk symlink via add_files and verifies entry.issym and linkname are preserved on read.
python-libarchive-c tar 1000 entries Port / libarchive / usage-python-libarchive-c-batch12-tar-1000-entries Passed
Writes 1000 small entries into a tar archive via python-libarchive-c and verifies count and ordering on read.
python-libarchive-c very long path Port / libarchive / usage-python-libarchive-c-batch12-very-long-path Passed
Stores an entry whose pathname exceeds 200 characters in a pax archive and verifies the path roundtrips through python-libarchive-c.
python-libarchive-c zip explicit format read Port / libarchive / usage-python-libarchive-c-batch12-zip-read-format Passed
python-libarchive-c archive_entry_clear reuse on writer Port / libarchive / usage-python-libarchive-c-batch13-archive-entry-clear-reuse Passed
Reuses a single archive_entry pointer across two writes by calling archive_entry_clear via ctypes between them, then verifies the resulting tar contains both entries with their respective independent paths and sizes.
python-libarchive-c read .deb as ar archive Port / libarchive / usage-python-libarchive-c-batch13-deb-as-ar-archive Passed
Builds a minimal ar (.deb-style) archive containing the standard debian-binary, control.tar, and data.tar member names via python-libarchive-c then reads it back, asserting libarchive auto-detects the ar format and exposes all three member names.
python-libarchive-c ArchiveEntry set_perm octal verified Port / libarchive / usage-python-libarchive-c-batch13-entry-set-perm-octal Passed
Writes a tar archive whose entry permissions are set explicitly via libarchive.ffi.entry_set_perm with a non-default octal mode and verifies the same low-9 mode bits surface back through entry.mode on read.
python-libarchive-c entry size+uid+gid+mtime read after write Port / libarchive / usage-python-libarchive-c-batch13-entry-uid-gid-mtime-read Passed
Writes a ustar archive whose entry uid/gid/mtime are set explicitly through libarchive's C ABI via ctypes, then verifies size, uid, gid, and mtime roundtrip on read through python-libarchive-c.
python-libarchive-c iter get_blocks across multiple entries Port / libarchive / usage-python-libarchive-c-batch13-iter-blocks-multi-entries Passed
Writes a tar archive with three large entries and consumes each entry's payload by iterating get_blocks() one chunk at a time, asserting block-count > 0 and accumulated bytes equal the original payload size for every member.
python-libarchive-c format auto-detection across formats Port / libarchive / usage-python-libarchive-c-batch13-mixed-format-detection Passed
Writes the same payload set into four distinct archive containers (gnutar, ustar, pax, cpio) and verifies libarchive's auto-detection on read returns identical pathname+payload mappings for every container.
python-libarchive-c pax directory entry size is zero Port / libarchive / usage-python-libarchive-c-batch13-pax-directory-size-zero Passed
Writes a pax archive containing two explicit directory entries plus a regular file and verifies entry.size for each directory is exactly 0 while the file's size matches its payload.
python-libarchive-c tar.gz from BytesIO via memory_reader Port / libarchive / usage-python-libarchive-c-batch13-targz-bytesio-memory-reader Passed
Writes a gzip-filtered tar to disk, loads its bytes through io.BytesIO and feeds the buffer's value into libarchive.memory_reader, asserting both entries roundtrip with payload.
python-libarchive-c ustar explicit directory entry Port / libarchive / usage-python-libarchive-c-batch13-ustar-explicit-directory Passed
Writes a ustar archive containing an explicit directory entry (filetype=0o040000) plus a child file via python-libarchive-c and asserts the listed members include both the directory and the child while the directory entry exposes size 0.
python-libarchive-c extract preserves explicit perm bits Port / libarchive / usage-python-libarchive-c-batch13-write-then-extract-modes Passed
Builds a ustar archive whose entries are stamped with explicit non-default mode bits via libarchive.ffi, extracts it through libarchive.extract_file with EXTRACT_PERM, and asserts the on-disk modes match the values that were written into the entry headers.
python-libarchive-c 7zip read with multiple files Port / libarchive / usage-python-libarchive-c-batch14-7zip-multi-files-read Passed
Writes a 7z archive containing five distinct member files (varying payload sizes and content) through python-libarchive-c, then reads the archive back and verifies every name, size, and payload survives. Distinct from the existing two-entry 7zip test because each entry is read with size assertions and the read order is checked against the deterministic insertion order.
python-libarchive-c ar bsd archive with explicit member filenames Port / libarchive / usage-python-libarchive-c-batch14-ar-multi-member-explicit-names Passed
Builds a BSD ar archive with five explicitly named members of varying sizes via add_file_from_memory and reads each one back, verifying the archive magic, the number of members, the exact member names (after stripping libarchive's BSD-format trailing slash), and the payload bytes. The existing ar svr4 test only covers two members and svr4 layout; this case targets the bsd layout and a richer member set.
python-libarchive-c iterate archive with entry.size > 1MB Port / libarchive / usage-python-libarchive-c-batch14-entry-large-size-over-1mb Passed
Writes a ustar archive containing one entry whose payload is 2 MiB plus a small entry, then iterates and asserts entry.size matches the on-the-wire payload length for the >1 MiB entry exactly. The payload itself is consumed via get_blocks() inside the loop and its length is also verified independently of the header-declared size.
python-libarchive-c entry isreg/isdir/isfifo/issym flags Port / libarchive / usage-python-libarchive-c-batch14-entry-type-flags-mixed Passed
Builds a pax archive containing one regular file, one directory, one fifo, and one symbolic link (filetype bits stamped via archive_entry_set_filetype, with set_symlink supplied through ctypes for the link target). Reads every entry back and asserts entry.isreg, entry.isdir, entry.isfifo, and entry.issym each report True only on the matching entry. Also asserts entry.islnk (which the binding implements as a hardlink check) reports False on the symlink so the two link concepts are not conflated.
python-libarchive-c entry uname/gname strings preserved Port / libarchive / usage-python-libarchive-c-batch14-entry-uname-gname-roundtrip Passed
Sets archive_entry_set_uname / archive_entry_set_gname via ctypes against libarchive.so.13 (libarchive_c 2.9 does not wrap them), writes a ustar archive, then reads the entries back and uses archive_entry_uname / archive_entry_gname through ctypes to verify the symbolic owner names round trip, alongside numeric uid/gid which the python binding does expose.
python-libarchive-c iterate pathname and mtime in single loop Port / libarchive / usage-python-libarchive-c-batch14-iterate-pathname-mtime-single-loop Passed
Writes a tar archive whose entries each carry an explicit mtime stamped via archive_entry.set_mtime, then walks the archive in a single loop reading both entry.pathname and entry.mtime alongside the payload. Asserts the (name, mtime) pair returned by the reader matches the values written, exercising the wrapped accessors in tandem rather than via separate iteration passes.
python-libarchive-c tar with nested directory depth 5 Port / libarchive / usage-python-libarchive-c-batch14-nested-directory-depth-5 Passed
Constructs a tar archive carrying a single regular file at a deterministic nested path five components deep (a/b/c/d/e/leaf.txt) plus distractor entries at intermediate depths, then reads it back and asserts every nested path and payload survives. Exercises path handling for deeper trees than the existing nested-directory testcases (which top out at depth 3).
python-libarchive-c pax extended attributes round trip Port / libarchive / usage-python-libarchive-c-batch14-pax-extended-attributes Passed
Writes a pax archive whose entries carry user-namespace extended attributes set via archive_entry_xattr_add_entry (libarchive_c 2.9 does not wrap xattr APIs, so they are pulled from libarchive.so.13 with ctypes). Reads the archive back and walks the xattrs through archive_entry_xattr_reset / archive_entry_xattr_next, asserting both the names and values survive the pax round trip.
python-libarchive-c read_disk feed into ustar archive via ctypes Port / libarchive / usage-python-libarchive-c-batch14-read-disk-into-ustar Passed
Stages a small directory tree on disk, opens an archive_read_disk handle through ctypes against libarchive.so.13 (libarchive_c 2.9 does not wrap the read_disk API), walks each filesystem path with archive_read_disk_open / archive_read_next_header2 / archive_read_disk_descend, and feeds every visited entry into a python-libarchive-c file_writer in the ustar variant. The resulting archive is read back and verified to contain every staged path with its original payload bytes.
python-libarchive-c tar.gz explicit gzip compression-level 6 Port / libarchive / usage-python-libarchive-c-batch14-targz-explicit-level-6 Passed
Writes a tar.gz with the gzip filter and an explicit compression-level=6 set via the file_writer options keyword (which feeds archive_write_set_options before the writer is opened, since the binding raises if options are set after open). Reads the archive back to verify the entries and payload survive the configured-level round trip and that the gzip magic header is present.
python-libarchive-c file_writer cpio with on-disk source files Port / libarchive / usage-python-libarchive-c-batch15-cpio-from-disk Passed
Stages a small directory of regular files on disk, then opens a python-libarchive-c file_writer in the cpio (newc) format and feeds each on-disk file in via writer.add_files. Reads the resulting cpio archive back through file_reader and verifies that every staged file is present with its original payload bytes. Exercises the file_writer.add_files convenience API alongside cpio so it complements the existing in-memory cpio cases.
python-libarchive-c entry atime roundtrip via ctypes Port / libarchive / usage-python-libarchive-c-batch15-entry-atime-roundtrip Passed
Writes a pax archive whose entries carry an explicit atime stamped through libarchive.so.13 archive_entry_set_atime (libarchive_c 2.9 does not expose an atime setter on ArchiveEntry). Reads each entry back and asserts entry.atime equals the value originally written. pax is used because ustar lacks the extended-header records needed to preserve atime through the round trip.
python-libarchive-c entry isdev/isblk/ischr return False on regular files Port / libarchive / usage-python-libarchive-c-batch15-entry-isdev-isblk-ischr-false Passed
Writes a gnutar archive containing only regular file entries via python-libarchive-c, then reads each entry back and asserts entry.isdev, entry.isblk, and entry.ischr all evaluate False on every entry. entry.isreg is asserted True on the same entries to confirm the filetype check is wired up correctly. Pins the negative-side semantics of the device-type predicates that the existing positive-side tests don't cover.
python-libarchive-c iso9660 write+read roundtrip Port / libarchive / usage-python-libarchive-c-batch15-iso9660-roundtrip Passed
Writes an iso9660 archive containing two regular files via python-libarchive-c file_writer, then reads it back and verifies entry pathnames and payloads roundtrip. iso9660 uppercases pathnames and may emit additional Joliet/Rockridge directory shadows, so the assertion compares against a normalised (uppercased, basename-only) view of the entries.
python-libarchive-c iterate without consuming entry data Port / libarchive / usage-python-libarchive-c-batch15-iterate-skip-data Passed
Writes a multi-entry gnutar archive, then reads it back and walks every entry without ever calling entry.get_blocks(). Verifies that pathnames and sizes are still exposed correctly and that iteration completes cleanly when the consumer skips over each entry's data. Exercises libarchive's auto-skip path between headers, which is the default behaviour when the caller never reads from a header.
python-libarchive-c pax numeric uid+gid via ctypes Port / libarchive / usage-python-libarchive-c-batch15-pax-numeric-uid-gid-ctypes Passed
Writes a pax archive whose entries carry numeric uid and gid stamped through libarchive.so.13 archive_entry_set_uid / archive_entry_set_gid (libarchive_c 2.9 does not expose uid/gid setters on ArchiveEntry). Reads each entry back and asserts entry.uid and entry.gid equal the numeric values written. pax preserves arbitrarily large numeric ids in extended-header records, so the test uses values that exceed the ustar octal field width.
python-libarchive-c raw bzip2 stream Port / libarchive / usage-python-libarchive-c-batch15-raw-bz2-stream Passed
Writes a plain bzip2-compressed file with the system bzip2 tool, then reads it through python-libarchive-c using format_name="raw" so libarchive yields the synthetic single "data" entry. Drains the entry via entry.get_blocks() inside the iteration loop (raw format requires the block stream be consumed before advancing) and verifies the decompressed payload bytes match the original.
python-libarchive-c tar 5000 entries iteration Port / libarchive / usage-python-libarchive-c-batch15-tar-5000-entries-iteration Passed
Writes 5000 small entries into a gnutar archive via add_file_from_memory, then reads the archive back and verifies the iterator yields exactly 5000 entries in insertion order with their declared sizes intact. Stresses the libarchive read iterator across a much larger entry count than the existing 1000-entry case so iteration cost and bookkeeping are exercised.
python-libarchive-c tar.bz2 write+read with filter detection Port / libarchive / usage-python-libarchive-c-batch15-tar-bz2-filter-detection Passed
Writes a gnutar archive through the bzip2 filter via python-libarchive-c, then reads it back without specifying the filter so libarchive's bidder must auto-detect bzip2 from the magic bytes. Verifies the file header is BZh, the entry payload roundtrips, and the on-disk file is materially smaller than a plain tar of the same payload (so the filter actually compressed).
python-libarchive-c tar single entry under 100 bytes Port / libarchive / usage-python-libarchive-c-batch15-tar-tiny-single-entry Passed
Writes a gnutar archive containing exactly one entry whose payload is 47 bytes (well under 100), then reads it back and verifies the iterator yields exactly one entry with the declared pathname, size, and payload. Sanity-checks that a sub-block-size payload still rounds out to a tar block boundary on disk so the writer is padding correctly.
python-libarchive-c 7z readback with explicit format_name hint Port / libarchive / usage-python-libarchive-c-batch16-7z-readback-format-hint Passed
Writes a 7z archive via python-libarchive-c file_writer, then re-reads it through memory_reader using an explicit format_name="7zip" hint (rather than auto-detection), confirming the named-format reader path returns the same entries and payloads.
python-libarchive-c manual archive_entry_new + archive_entry_free via ctypes Port / libarchive / usage-python-libarchive-c-batch16-archive-entry-free-via-ctypes Passed
Allocates an archive_entry by calling archive_entry_new directly through libarchive.so.13 (bypassing libarchive_c's new_archive_entry context manager), populates it, writes one entry, then explicitly cleans it up by calling archive_entry_free via ctypes. Verifies the resulting tar parses correctly afterwards. Exercises the manual lifecycle path that a C consumer would use.
python-libarchive-c cpio TRAILER!!! sentinel present Port / libarchive / usage-python-libarchive-c-batch16-cpio-trailer-marker Passed
Writes a cpio archive (libarchive_c default cpio format which is the odc/070707 magic) and asserts the raw archive bytes contain the canonical "TRAILER!!!" sentinel that closes a cpio stream. Re-reads the archive to confirm the entries themselves still parse correctly and the sentinel is treated as an end-of-archive marker rather than a synthetic entry.
python-libarchive-c ArchiveEntry.strmode rendering Port / libarchive / usage-python-libarchive-c-batch16-entry-strmode-string Passed
Writes a ustar archive whose entries carry a range of explicit permission bits set via libarchive.ffi.entry_set_perm, then reads the archive back and asserts ArchiveEntry.strmode (which wraps archive_entry_strmode) renders the expected ten-character mode string for each entry.
python-libarchive-c get_blocks explicit block_size hint Port / libarchive / usage-python-libarchive-c-batch16-iter-blocks-large-block-size Passed
Streams a large entry's payload via ArchiveEntry.get_blocks(block_size=131072) (passing an explicit block-size hint instead of the default page_size), verifies every yielded block is at most the requested size, and confirms the concatenated bytes match the original payload. Exercises the block_size keyword argument on the iterator.
python-libarchive-c multi-format readers via explicit format_name Port / libarchive / usage-python-libarchive-c-batch16-multi-format-explicit-readers Passed
Writes three archives in distinct container formats (gnutar, zip, cpio) and reads each one back through file_reader with an explicit format_name hint matching its on-disk format, exercising the named-format reader code path for each. Asserts every archive's entries and payloads round trip correctly under the explicit format_name path.
python-libarchive-c pax pathname above 1024 chars Port / libarchive / usage-python-libarchive-c-batch16-pax-pathname-1024 Passed
Stores an entry whose pathname is well above 1024 characters in a pax archive; ustar header path/prefix fields cap at 100/155 bytes so libarchive must emit a pax extended header carrying the long path. Reads it back and verifies the full pathname survives the round trip and the payload is intact.
python-libarchive-c tar.lz4 file magic identification Port / libarchive / usage-python-libarchive-c-batch16-tar-lz4-file-magic Passed
Writes a gnutar archive through the lz4 filter via python-libarchive-c, asserts the lz4 frame magic on disk, runs the file(1) command and confirms it identifies the payload as LZ4 compressed data, then reads the archive back and verifies the entries.
python-libarchive-c tar mtime=0 round trip Port / libarchive / usage-python-libarchive-c-batch16-tar-mtime-zero-roundtrip Passed
Writes a ustar archive whose entries explicitly carry mtime=0 (epoch) via libarchive.ffi.entry_set_mtime, reads the archive back, and asserts every entry's mtime is exactly 0 on read. Exercises the corner case where the timestamp field is the zero sentinel but must still round trip rather than being treated as "unset".
python-libarchive-c zip writer with compression=store option Port / libarchive / usage-python-libarchive-c-batch16-zip-options-store Passed
Writes a zip archive with the file_writer options keyword set to "zip:compression=store" so libarchive emits each entry as a stored (no-compression) zip member. Verifies the PK signature on disk and that the entry payloads survive the round trip; the "store" path keeps the compressed-size and uncompressed-size of each member identical, which we can confirm via libarchive's reported entry.size.
python-libarchive-c truncated zip raises ArchiveError Port / libarchive / usage-python-libarchive-c-batch17-corrupt-zip-rejected Passed
Writes a valid zip archive, truncates it to roughly half its length and zeros out a chunk of the deflate payload, then feeds the corrupt bytes through libarchive.memory_reader. Asserts that iteration raises libarchive.exception.ArchiveError rather than yielding silent garbage, exercising the error-propagation path for a recoverable-format-but-corrupt-stream input.
python-libarchive-c extract preserves entry permissions Port / libarchive / usage-python-libarchive-c-batch17-extract-preserve-perm Passed
Builds a tar archive containing a regular file whose stored mode is 0640 (group-readable but not world-readable) and a script-like file with mode 0750. Calls libarchive.extract_file with the EXTRACT_PERM flag set, then stats the on-disk extracted files and asserts each has the exact stored permission bits, confirming the extract pipeline is honoring the explicit perm-restore flag.
python-libarchive-c custom_writer captures bytes in memory Port / libarchive / usage-python-libarchive-c-batch17-memory-writer-bytes Passed
Builds a gnutar archive entirely in memory by using libarchive.custom_writer with a Python callback that appends each output chunk to a bytearray, then re-parses the resulting bytes through libarchive.memory_reader. Confirms that the in-memory writer code path (no on-disk file) produces a stream that round trips through the memory_reader and recovers every entry pathname plus its payload exactly.
python-libarchive-c pax UTF-8 pathname round trip Port / libarchive / usage-python-libarchive-c-batch17-pax-utf8-pathname Passed
Stores entries whose pathnames contain multi-byte UTF-8 characters (Greek, CJK, emoji-style code points) inside a pax archive, since pax extended headers are the standardized way to carry non-ASCII names. Reads the archive back and verifies every Unicode pathname round trips byte-for-byte through libarchive's pax extended-header decoder along with its payload.
python-libarchive-c raw xz stream Port / libarchive / usage-python-libarchive-c-batch17-raw-xz-stream Passed
Reads a plain xz-compressed file via libarchive.file_reader with format_name="raw" so libarchive treats the input as a single synthetic data entry decoded only through its xz filter chain. Verifies the decoded byte stream equals the original uncompressed payload, exercising the raw-format read path for the xz filter (distinct from the gzip and bzip2 raw paths covered by earlier batches).
python-libarchive-c gnutar long symlink target Port / libarchive / usage-python-libarchive-c-batch17-tar-long-linkname Passed
Writes a gnutar archive whose symlink entry carries a target path far longer than the 100-byte ustar linkname field, forcing libarchive to emit a GNU LongLink K-type header to carry the full target. Reads the archive back and asserts the symlink's linkname round trips byte-for-byte, which can only happen if the LongLink extension is being honored on both encode and decode.
python-libarchive-c gnutar with all-zero payload region Port / libarchive / usage-python-libarchive-c-batch17-tar-null-payload-pattern Passed
Stores a regular file whose payload is a multi-kilobyte run of NUL bytes inside a gnutar archive. tar pads regular file content with NULs to the next 512-byte block, so an all-zero payload looks indistinguishable from inter-record padding. Verifies that libarchive's reader still surfaces exactly the original number of bytes (entry.size and concatenated get_blocks() length both equal the payload length).
python-libarchive-c tar.zst with zstd compression-level=19 Port / libarchive / usage-python-libarchive-c-batch17-tar-zstd-explicit-level19 Passed
Builds a tar.zst archive by passing options="zstd:compression-level=19" to libarchive.file_writer with the zstd filter, then verifies the resulting bytes start with the zstd frame magic 0x28B52FFD and round trip through libarchive.file_reader. Compares the on-disk size against an equivalent zstd:compression-level=1 archive and asserts the level-19 output is no larger, exercising the explicit zstd-level option negotiation through libarchive's filter option parser.
python-libarchive-c zip with end-of-central-directory comment Port / libarchive / usage-python-libarchive-c-batch17-zip-archive-comment Passed
Writes a small zip archive via libarchive.file_writer, then patches the trailing end-of-central-directory record to include a non-empty archive-level comment string, and feeds the modified bytes back through libarchive.memory_reader. Verifies that libarchive locates the EOCD past the trailing comment and still recovers every member intact, exercising the EOCD scan-back logic.
python-libarchive-c zip writer at deflate level 9 Port / libarchive / usage-python-libarchive-c-batch17-zip-deflate-level9 Passed
Writes a zip archive with options="zip:compression-level=9" and a highly repetitive payload, then writes the same payload through options="zip:compression=store" and compares on-disk sizes. The deflate-level-9 archive must be strictly smaller than the stored one and both must round trip through libarchive.file_reader, exercising the explicit-level deflate code path against a controllable baseline.
python-libarchive-c ar BSD format roundtrip Port / libarchive / usage-python-libarchive-c-batch18-ar-bsd-write-roundtrip Passed
Writes a 4.4BSD-style Unix archive via libarchive.file_writer with format_name="ar_bsd" (the BSD ar variant, distinct from the existing ar_svr4 case), asserts the file begins with the canonical "!<arch>\n" magic, and reads each member back through libarchive.file_reader confirming the per-member payloads round trip byte-for-byte. ar_bsd uses the #1/<len> long-name extension when a member name overflows the 16-byte ar header field, so a deliberately long member name is included to exercise that path.
python-libarchive-c empty tar (zero members) round trip Port / libarchive / usage-python-libarchive-c-batch18-empty-tar-no-entries Passed
Opens a libarchive.file_writer for gnutar and closes it without adding any entries, producing the canonical zero-member tar (two 512-byte all-zero EOF records). Asserts the on-disk file is exactly 1024 bytes and contains only NUL bytes, then opens it through libarchive.file_reader and confirms the entry iterator yields zero entries with no exception. Exercises the zero-entry corner case distinct from existing tests that include an empty-payload member.
python-libarchive-c extract refuses parent-traversal with SECURE_NODOTDOT Port / libarchive / usage-python-libarchive-c-batch18-extract-secure-nodotdot Passed
Builds a tar archive containing a benign entry plus a malicious "../escape.txt" entry, then calls libarchive.extract_file with EXTRACT_SECURE_NODOTDOT|EXTRACT_PERM. Asserts the safe entry materialises inside the destination, the traversal entry is rejected with libarchive.exception.ArchiveError, and that no escape.txt file is created in the destination's parent directory. Exercises libarchive's path-sanitisation flag distinct from EXTRACT_SECURE_NOABSOLUTEPATHS.
python-libarchive-c fd_writer + fd_reader roundtrip Port / libarchive / usage-python-libarchive-c-batch18-fd-writer-roundtrip Passed
Opens a raw OS file descriptor with os.open and hands it to libarchive.fd_writer to build a gnutar archive, exercising the file-descriptor entry point distinct from the path-based file_writer. Reopens the same path through os.open and reads the entries back via libarchive.fd_reader, asserting that every (pathname, payload) pair round trips through the fd-based read/write pair.
python-libarchive-c mtree with gzip filter Port / libarchive / usage-python-libarchive-c-batch18-mtree-gzip-filter Passed
Writes an mtree manifest with the gzip filter chain enabled (libarchive.file_writer(..., "mtree", filter_name="gzip")), so the resulting file is a gzip-compressed mtree spec. Asserts the on-disk bytes start with the gzip 0x1f 0x8b magic, then reads the manifest back through libarchive.file_reader and verifies every entry name written is yielded after stripping the leading "./" mtree convention prefix.
python-libarchive-c pax_restricted format roundtrip Port / libarchive / usage-python-libarchive-c-batch18-pax-restricted-format Passed
Writes an archive with format_name="pax_restricted" - libarchive's pax variant that emits ustar-compatible headers when the entry's metadata fits the ustar field widths and only falls back to a pax extended header for entries that require it. Verifies the file uses 512-byte tar block alignment, that a short-name entry stays inside ustar (no `PaxHeader/` global record needed), and that an entry with a 200-byte pathname forces the writer to emit a pax extended header. Reads everything back and confirms the payloads round trip.
python-libarchive-c pax symlink linkpath round trip Port / libarchive / usage-python-libarchive-c-batch18-pax-symlink-linkpath Passed
Writes a pax archive containing a symlink entry whose target is set via archive_entry_set_symlink (reached through ctypes since python-libarchive-c does not wrap it directly). Reads the archive back and asserts the entry's issym is True, both ArchiveEntry.linkname and ArchiveEntry.linkpath expose the same target string, and entry.linkpath equals the bytes that were stamped onto the entry. Exercises the symlink-target accessor distinct from the hardlink-target path covered by earlier batches.
python-libarchive-c shar format write Port / libarchive / usage-python-libarchive-c-batch18-shar-write-roundtrip Passed
Writes a shar (shell archive) using libarchive.file_writer with format_name="shar". Asserts the produced file begins with the canonical `#!/bin/sh` shebang plus the libarchive shar comment banner, and contains an `echo x <name>` line and a `sed 's/^X//' > <name>` here-document opener for each member written. shar is a write-only format in libarchive, so the read-side check is on the shell-script structure itself rather than libarchive.file_reader.
python-libarchive-c tar.bz2 with bzip2 compression-level=9 Port / libarchive / usage-python-libarchive-c-batch18-tar-bzip2-level9 Passed
Builds a tar.bz2 archive by passing options="bzip2:compression-level=9" to libarchive.file_writer with the bzip2 filter, asserts the resulting bytes start with the bzip2 "BZh9" header (the "9" is the level digit baked into the bzip2 stream header), and rebuilds an equivalent archive at compression-level=1 to confirm the level-9 output is no larger on highly repetitive payload. Reads the level-9 archive back via libarchive.file_reader and verifies the entries round trip byte-for-byte.
python-libarchive-c v7tar format write Port / libarchive / usage-python-libarchive-c-batch18-v7tar-format-write Passed
Writes a Version-7 Unix tar archive (libarchive format_name="v7tar"), the pre-ustar tar variant whose 512-byte header lacks the "ustar" magic and supports only the original short-name fields. Asserts the produced bytes are 512-byte block aligned, the first 6 bytes of the file (where ustar would carry "ustar\0") contain no ustar magic, and that read-back through libarchive.file_reader returns each member's payload byte-for-byte.
python-libarchive-c pax mtime sub-second roundtrip Port / libarchive / usage-python-libarchive-c-batch19-pax-iso8601-mtime-precision Passed
Writes a pax archive with an entry whose mtime has explicit nanosecond precision and verifies the readback retains second-resolution mtime equal to what was set.
python-libarchive-c tar 256 entries preserve insertion order Port / libarchive / usage-python-libarchive-c-batch19-tar-256-entries-pathname-order Passed
Writes a tar archive with 256 entries, then reads it back and verifies the iteration order matches insertion order exactly.
python-libarchive-c tar add_files accepts multiple positional paths Port / libarchive / usage-python-libarchive-c-batch19-tar-add-files-multiple-positional Passed
Calls libarchive.file_writer.add_files with three positional file paths and verifies all three entries appear in the archive.
python-libarchive-c tar entry get_blocks(block_size=512) reads payload Port / libarchive / usage-python-libarchive-c-batch19-tar-bytesio-iter-blocks-block-size-512 Passed
Writes a tar archive with a 4096-byte payload and reads it back via entry.get_blocks(block_size=512), verifying the concatenated bytes equal the original.
python-libarchive-c iterates an empty tar archive yielding zero entries Port / libarchive / usage-python-libarchive-c-batch19-tar-empty-archive-iter Passed
Writes a tar archive with zero entries via libarchive.file_writer and verifies file_reader iteration yields exactly zero entries.
python-libarchive-c tar entry mode 0644 roundtrip Port / libarchive / usage-python-libarchive-c-batch19-tar-mode-0644-roundtrip Passed
Creates a tar archive from a 0o644 file on disk and verifies the entry's mode low 9 bits read back as 0o644.
python-libarchive-c tar reads file uid/gid from disk into entry Port / libarchive / usage-python-libarchive-c-batch19-tar-uname-empty-default Passed
Creates a file on disk, archives it with libarchive.file_writer, and verifies the read-back entry uid/gid match the current process uid/gid.
python-libarchive-c zip with 64 small entries roundtrip Port / libarchive / usage-python-libarchive-c-batch19-zip-many-small-entries-bytes-positive Passed
Writes a zip with 64 single-byte entries, verifies the read-back archive has 64 entries each with size 1 and the correct payload byte.
python-libarchive-c zip store vs deflate yield identical payload bytes Port / libarchive / usage-python-libarchive-c-batch19-zip-store-and-deflate-equal-payload Passed
Writes the same payload as a zip with compression=store and again with deflate, then verifies file_reader returns byte-identical entry payloads from both archives.
python-libarchive-c zip iteration on archive with file path containing utf-8 Port / libarchive / usage-python-libarchive-c-batch19-zip-utf8-pathname-roundtrip Passed
Writes a zip archive containing a single entry whose pathname has a non-ASCII UTF-8 character, then verifies file_reader iteration yields the exact same pathname.
python-libarchive-c cpio archive with twelve entries iterates twelve times Port / libarchive / usage-python-libarchive-c-batch20-cpio-twelve-entries-iter-count Passed
Writes 12 in-memory entries with deterministic pathnames into a single cpio archive via writer.add_file_from_memory and confirms file_reader iteration yields exactly 12 entries with their pathnames matching insertion order. Exercises a small-batch iteration count distinct from the existing single-entry and large-count cpio cases.
python-libarchive-c mtree manifest without filter is plain text and roundtrips names Port / libarchive / usage-python-libarchive-c-batch20-mtree-no-filter-roundtrip Passed
Writes an mtree manifest using libarchive.file_writer("...", "mtree") with no filter chain so the on-disk output is uncompressed text (must start with the "#mtree" sentinel). Reads the manifest back through libarchive.file_reader and verifies every entry name written is yielded after stripping the leading "./" mtree-convention prefix. Distinct from the existing mtree-gzip case which exercises the compressed variant.
python-libarchive-c pax preserves mtime within int32 range round trip Port / libarchive / usage-python-libarchive-c-batch20-pax-mtime-2030-roundtrip Passed
Writes a pax archive whose entry mtime is set to 2030-01-01 UTC (1893456000 seconds, within int32) via libarchive.ffi.entry_set_mtime, then asserts the read-back entry.mtime matches exactly so the pax extended-header path is exercised end to end.
python-libarchive-c pax entry permission 0700 roundtrip Port / libarchive / usage-python-libarchive-c-batch20-pax-perm-0700-roundtrip Passed
Writes a pax archive whose entry permission is set explicitly to 0o700 via libarchive.ffi.entry_set_perm and asserts the same low-9 mode bits surface back through entry.mode on read. Distinct format+mode combination from existing ustar/0o640 and tar/0o644 perm cases.
python-libarchive-c pax ctime via ctypes round trip Port / libarchive / usage-python-libarchive-c-batch20-pax-set-ctime-roundtrip Passed
Sets archive_entry_set_ctime on a pax entry through ctypes against libarchive.so.13 (libarchive_c 2.9 does not wrap it), writes the archive, then uses archive_entry_ctime via ctypes on read to verify the stored creation/inode-change time round trips at second precision. Pax extended headers are the standard carrier for ctime so the format choice matters.
python-libarchive-c pax UTF-8 uname round trip via ctypes Port / libarchive / usage-python-libarchive-c-batch20-pax-utf8-uname-ctypes Passed
Sets archive_entry_set_uname on a pax entry to a non-ASCII UTF-8 byte sequence (Greek letters) through ctypes against libarchive.so.13, since libarchive_c 2.9 does not wrap that setter. Pax extended headers are the standard carrier for non-ASCII owner names. Reads the entry back and asserts archive_entry_uname returns the same bytes via ctypes.
python-libarchive-c pax zero-byte entry via add_file_from_memory Port / libarchive / usage-python-libarchive-c-batch20-pax-zero-byte-add-from-memory Passed
Adds a single zero-length payload entry to a pax archive via writer.add_file_from_memory(name, 0, b"") and verifies the read-back entry reports size 0 with no get_blocks() output. Pax-format coverage for the zero-length-from-memory edge case.
python-libarchive-c tar entries with leading "./" pathname survive roundtrip Port / libarchive / usage-python-libarchive-c-batch20-tar-pathname-dot-prefix-roundtrip Passed
Writes three ustar entries whose pathnames start with the leading "./" convention emitted by GNU tar, then iterates the archive and asserts every read-back pathname matches the input verbatim (including the dot-slash prefix) with payload bytes intact.
python-libarchive-c zip writer add_files reads three on-disk files Port / libarchive / usage-python-libarchive-c-batch20-zip-add-files-from-disk Passed
Stages three small files in a tmpdir, then writes them into a zip archive via file_writer.add_files (positional paths), and verifies the resulting archive holds all three names with their original payload bytes when iterated. Complements existing zip cases which write entries via add_file_from_memory only.
python-libarchive-c zip deflate compresses zeros payload to under 1KiB Port / libarchive / usage-python-libarchive-c-batch20-zip-deflate-zeros-shrinks Passed
Writes a 32 KiB all-zero payload into a zip archive with the default deflate compression and asserts the resulting on-disk archive is smaller than 1024 bytes, demonstrating that the deflate filter actually engaged on a maximally compressible input. Verifies the byte payload still round trips byte-for-byte through file_reader.
python-libarchive-c pax FIFO entry roundtrips with isfifo True Port / libarchive / usage-python-libarchive-c-batch21-pax-fifo-filetype Passed
Writes a pax archive containing a single FIFO entry created with entry_set_filetype(S_IFIFO=0o010000) and zero size, then reads it back via file_reader and asserts entry.isfifo is True while isreg/isdir/issym are False, exercising the FIFO filetype branch not covered by existing regular-file/directory/symlink tests.
python-libarchive-c pax gname survives via archive_entry_set_gname Port / libarchive / usage-python-libarchive-c-batch21-pax-gname-ctypes-roundtrip Passed
Writes a pax entry whose group name is set to "staff" via archive_entry_set_gname reached through ctypes (python-libarchive-c does not expose a setter), then reads back the gname through archive_entry_gname and asserts byte equality. Distinct from the existing UTF-8 uname ctypes case in batch20 because it tests the gname accessor.
python-libarchive-c pax hardlink target survives via archive_entry_set_hardlink Port / libarchive / usage-python-libarchive-c-batch21-pax-hardlink-target-ctypes Passed
Writes a pax archive containing one regular file and one hardlink entry whose target is set via archive_entry_set_hardlink reached through ctypes, then asserts the read-back hardlink entry reports islnk True with linkname equal to the original pathname. Distinct from the symlink ctypes case in batch18 since it tests the hardlink accessor.
python-libarchive-c pax mtime survives at exact int32 max boundary Port / libarchive / usage-python-libarchive-c-batch21-pax-mtime-int32-max-roundtrip Passed
Sets entry mtime to 2147483647 (the maximum signed 32-bit value, the last second before the year-2038 rollover) via entry_set_mtime, writes a pax archive, and asserts the read-back mtime equals 2147483647 exactly. Distinct from the batch20 2030-mtime case because it pins the precise int32 boundary without crossing it.
python-libarchive-c pax preserves entry mtime nanosecond component Port / libarchive / usage-python-libarchive-c-batch21-pax-nanosecond-mtime-roundtrip Passed
Calls entry_set_mtime with seconds=1700000000 and nsec=123456789, writes a pax archive, and asserts the read-back archive_entry_mtime_nsec returns exactly 123456789 alongside the seconds value, exercising the pax extended-header subsecond mtime field beyond the integer-second cases in earlier batches.
python-libarchive-c fd_reader iterates a tar opened by file descriptor Port / libarchive / usage-python-libarchive-c-batch21-tar-fd-reader-roundtrip Passed
Writes a single ustar entry with file_writer, then opens the resulting file with os.open and iterates with libarchive.fd_reader, asserting one entry surfaces with the expected pathname, size, and payload. Exercises the fd_reader entrypoint distinct from the file_reader and memory_reader paths used by earlier batches.
python-libarchive-c file_writer wraps tar payload in xz container Port / libarchive / usage-python-libarchive-c-batch21-tar-xz-file-writer Passed
Writes a single ustar entry through file_writer using filter_name="xz" and confirms the resulting file begins with the xz magic bytes (FD 37 7A 58 5A 00) and reads back the original payload via file_reader, exercising the xz-write filter independently from the bzip2-detection case in batch15.
python-libarchive-c file_writer wraps tar payload in zstd container Port / libarchive / usage-python-libarchive-c-batch21-tar-zstd-file-writer Passed
Writes a single ustar entry through file_writer using filter_name="zstd" and confirms the output begins with the zstd magic bytes (28 B5 2F FD) and reads back the exact payload via file_reader, exercising the zstd-write filter as opposed to the existing zstd memory-reader and size-check cases.
python-libarchive-c zip writer with options=zip:compression=store leaves payload uncompressed Port / libarchive / usage-python-libarchive-c-batch21-zip-compression-store-option Passed
Writes a 100-byte single-character payload through file_writer using options="zip:compression=store" and asserts the resulting zip header reports the entry's compressed size equals the uncompressed size (CRC payload + central directory present), confirming the store mode passes payload bytes through unchanged.
python-libarchive-c zip with twenty entries iterates twenty times in insertion order Port / libarchive / usage-python-libarchive-c-batch21-zip-twenty-entries-iter-count Passed
Writes 20 in-memory zip entries with deterministic pathnames via add_file_from_memory, then asserts file_reader iteration yields exactly 20 (pathname, payload) tuples in insertion order. Distinct from existing 12-entry cpio and 1000-entry tar count cases since it pins zip iteration on a small batch.
python-libarchive-c bzip2 filter Port / libarchive / usage-python-libarchive-c-bzip2-filter Passed
python-libarchive-c copy mode Port / libarchive / usage-python-libarchive-c-copy-mode Passed
python libarchive cpio binary payload Port / libarchive / usage-python-libarchive-c-cpio-binary-payload Passed
python-libarchive-c cpio bzip2 filter Port / libarchive / usage-python-libarchive-c-cpio-bzip2-filter Passed
python-libarchive-c cpio empty file Port / libarchive / usage-python-libarchive-c-cpio-empty-file Passed
python-libarchive-c cpio gzip filter Port / libarchive / usage-python-libarchive-c-cpio-gzip-filter Passed
Writes a gzip-filtered cpio archive through python-libarchive-c and verifies the readback payload.
python-libarchive-c many CPIO files Port / libarchive / usage-python-libarchive-c-cpio-many-files Passed
Writes multiple CPIO members through python-libarchive-c and verifies all files round-trip correctly.
python-libarchive-c cpio nested file Port / libarchive / usage-python-libarchive-c-cpio-nested-file Passed
Writes a nested file path into a cpio archive through python-libarchive-c and verifies the stored payload on readback.
python-libarchive-c newc format Port / libarchive / usage-python-libarchive-c-cpio-newc Passed
python-libarchive-c cpio xz filter Port / libarchive / usage-python-libarchive-c-cpio-xz-filter Passed
python-libarchive-c cpio zstd filter Port / libarchive / usage-python-libarchive-c-cpio-zstd-filter Passed
python-libarchive-c directory entry Port / libarchive / usage-python-libarchive-c-directory-entry Passed
python-libarchive-c empty file Port / libarchive / usage-python-libarchive-c-empty-file Passed
python libarchive stable file order Port / libarchive / usage-python-libarchive-c-file-order-stable Passed
python-libarchive-c file roundtrip Port / libarchive / usage-python-libarchive-c-file-roundtrip Passed
python-libarchive-c gzip filter Port / libarchive / usage-python-libarchive-c-gzip-filter Passed
python-libarchive-c large entry Port / libarchive / usage-python-libarchive-c-large-entry Passed
python-libarchive-c long path Port / libarchive / usage-python-libarchive-c-long-path Passed
python-libarchive-c lz4 filter Port / libarchive / usage-python-libarchive-c-lz4-filter Passed
python-libarchive-c lzip filter Port / libarchive / usage-python-libarchive-c-lzip-filter Passed
python-libarchive-c lzma filter Port / libarchive / usage-python-libarchive-c-lzma-filter Passed
python-libarchive-c lzop filter Port / libarchive / usage-python-libarchive-c-lzop-filter Passed
python-libarchive-c many files Port / libarchive / usage-python-libarchive-c-many-files Passed
python libarchive cpio memory reader Port / libarchive / usage-python-libarchive-c-memory-reader-cpio Passed
python libarchive pax memory reader Port / libarchive / usage-python-libarchive-c-memory-reader-pax Passed
python-libarchive-c memory reader tar Port / libarchive / usage-python-libarchive-c-memory-reader-tar Passed
Reads a tar archive from in-memory bytes with python-libarchive-c and verifies every entry is decoded.
python-libarchive-c memory reader zip directory Port / libarchive / usage-python-libarchive-c-memory-reader-zip-directory Passed
Reads a zip archive with a directory entry through the python-libarchive-c memory reader and verifies member order.
python-libarchive-c memory reader ZIP Port / libarchive / usage-python-libarchive-c-memory-reader-zip Passed
Reads a ZIP archive from in-memory bytes with python-libarchive-c and verifies every entry is decoded.
python-libarchive-c metadata count Port / libarchive / usage-python-libarchive-c-metadata-count Passed
Reads archive metadata through python-libarchive-c and verifies the expected entry count and byte sizes.
python-libarchive-c metadata read Port / libarchive / usage-python-libarchive-c-metadata-read Passed
python-libarchive-c nested paths Port / libarchive / usage-python-libarchive-c-nested-paths Passed
python-libarchive-c pax directory entry Port / libarchive / usage-python-libarchive-c-pax-directory-entry Passed
Writes a pax archive with an explicit directory entry through python-libarchive-c and verifies the listed members.
python libarchive pax empty file Port / libarchive / usage-python-libarchive-c-pax-empty-file Passed
python-libarchive-c pax format Port / libarchive / usage-python-libarchive-c-pax-format Passed
python-libarchive-c pax gzip filter Port / libarchive / usage-python-libarchive-c-pax-gzip-filter Passed
Writes a gzip-filtered pax archive through python-libarchive-c and validates the readback payload.
python-libarchive-c pax long path Port / libarchive / usage-python-libarchive-c-pax-long-path Passed
Writes a long nested path through python-libarchive-c in pax format and verifies the stored pathname survives readback.
python-libarchive-c pax space directory Port / libarchive / usage-python-libarchive-c-pax-space-directory Passed
Writes a pax archive containing a directory path with spaces through python-libarchive-c and verifies both directory and file members.
python-libarchive-c pax xz filter Port / libarchive / usage-python-libarchive-c-pax-xz-filter Passed
python-libarchive-c pax zstd filter Port / libarchive / usage-python-libarchive-c-pax-zstd-filter Passed
Writes a zstd-filtered pax archive through python-libarchive-c and verifies the readback payload.
python-libarchive-c 7zip writer produces a 7z magic and reads back entries Port / libarchive / usage-python-libarchive-c-r12-7zip-write-readback Passed
Writes a small archive with format="7zip" via file_writer and asserts the on-disk magic is the documented 0x37 0x7A 0xBC 0xAF 0x27 0x1C signature, then reads the archive back via file_reader and verifies the inserted entries are present with their payloads.
python-libarchive-c file_writer produces a gnutar-format archive readable by file_reader Port / libarchive / usage-python-libarchive-c-r12-gnutar-format-write Passed
Writes a multi-entry archive with format="gnutar" and confirms file_reader iterates the entries with their inserted pathnames and payloads. Exercises the gnutar write format distinct from existing ustar/pax/v7tar coverage.
python-libarchive-c memory_reader on bytes object iterates a zip archive Port / libarchive / usage-python-libarchive-c-r12-memory-reader-zip-bytes-roundtrip Passed
Builds a zip archive with file_writer, slurps the bytes off disk, and feeds them to libarchive.memory_reader to confirm the entries surface with their original names and payloads via in-memory iteration.
python-libarchive-c pax mtime epoch zero roundtrip Port / libarchive / usage-python-libarchive-c-r12-pax-mtime-1970-roundtrip Passed
Writes a pax archive with entry_set_mtime(0, 0) and asserts the read-back entry.mtime is exactly 0, exercising the epoch-boundary mtime value distinct from the existing 2030 and int32-max mtime cases.
python-libarchive-c pax symlink entry exposes issym and linkname Port / libarchive / usage-python-libarchive-c-r12-pax-symlink-roundtrip-attrs Passed
Writes a pax archive containing a single symlink entry via the entry_set_symlink ctypes accessor and verifies the read-back entry reports issym True with linkname pointing at the expected target while islnk and isreg are False.
python-libarchive-c pax uname accepts a 128-character ASCII name Port / libarchive / usage-python-libarchive-c-r12-pax-uname-128chars Passed
Writes a pax archive whose entry uname is a 128-character ASCII string set via entry_set_uname (ctypes), and asserts the read-back uname is exactly that string. Distinct from existing default-empty and short-uname cases.
python-libarchive-c tar archive with 50 entries iterates pathnames in insertion order Port / libarchive / usage-python-libarchive-c-r12-tar-50-entries-pathnames Passed
Writes 50 in-memory entries with deterministic zero-padded names into a single ustar archive and confirms file_reader iteration yields exactly 50 pathnames in insertion order. Distinct from the 12-entry cpio, 20-entry zip, 256-entry tar, and 1000-entry tar count cases as it pins iteration on a 50-entry batch.
python-libarchive-c file_reader respects an explicit block_size kwarg Port / libarchive / usage-python-libarchive-c-r12-tar-gzip-block-size-arg Passed
Writes a small ustar+gzip archive, then opens it with file_reader(block_size=4096) and confirms iteration still yields the inserted entries with their payloads. Exercises the optional block_size kwarg distinct from the default-block reader cases.
python-libarchive-c tar+zstd roundtrips a 2MB payload through file_writer Port / libarchive / usage-python-libarchive-c-r12-tar-zstd-roundtrip-large Passed
Writes a 2 MiB single-entry ustar+zstd archive and verifies file_reader iteration returns a single entry whose payload matches byte-for-byte, exercising the larger-than-typical-block payload path through the zstd write filter.
python-libarchive-c zip with explicit deflate compression-level option roundtrips Port / libarchive / usage-python-libarchive-c-r12-zip-bz2-filter-roundtrip Passed
Writes a zip archive with options="zip:compression=deflate,compression-level=9" and verifies the entries read back byte-for-byte, exercising option-string parsing for the zip writer. (Noble's libarchive zip writer rejects "compression=bzip2"; the deflate level-9 path is the documented per-entry option surface.)
python-libarchive-c 7zip writer accepts three entries and iterates exactly three times Port / libarchive / usage-python-libarchive-c-r13-7zip-three-entries-iter-count Passed
Writes three small entries into a single 7z archive via file_writer format="7zip" and asserts that file_reader iterates exactly three entries with payloads matching the original mapping.
python-libarchive-c empty ustar archive iterates as zero entries Port / libarchive / usage-python-libarchive-c-r13-empty-tar-zero-entries Passed
Writes a ustar archive with no entries via file_writer (open and close immediately), then opens it through file_reader and verifies the iteration produces zero entries and the file is non-empty (tar end-of-archive blocks present).
python-libarchive-c ArchiveEntry exposes the documented attribute surface Port / libarchive / usage-python-libarchive-c-r13-entry-attributes-survey Passed
Probes the ArchiveEntry class via dir() and asserts the documented attribute names we rely on across the suite (pathname, size, mode, mtime, isfile, isdir, issym, islnk, linkname) are all present, and that they are accessible on a real entry read from a tiny ustar archive. (noble's python3-libarchive-c r5.2-1build1 does not expose ArchiveEntry.perm; mode covers the same on-disk bits.)
python-libarchive-c file_reader honours an explicit block_size keyword Port / libarchive / usage-python-libarchive-c-r13-iter-block-size-arg Passed
Writes a multi-entry ustar archive then opens it via file_reader(block_size=4096) and asserts the iteration still returns the full set of entries with intact payloads, exercising a non-default block_size argument on the read side.
python-libarchive-c ustar+gzip roundtrips eight independent entries Port / libarchive / usage-python-libarchive-c-r13-multi-entry-tar-gzip-roundtrip Passed
Writes a tar.gz with eight entries of varying sizes through file_writer using format ustar and filter gzip, then reads back through file_reader and asserts that all eight pathnames and payloads round-trip and that the in-archive entry order matches the insertion order.
python-libarchive-c pax symlink entry built via ctypes filetype constant Port / libarchive / usage-python-libarchive-c-r13-pax-symlink-via-ctypes Passed
Writes a pax archive containing a symlink entry by invoking entry_set_filetype with the integer SYMBOLIC_LINK constant 0o120000 (libarchive.ffi does not export a SYMBOLIC_LINK alias), then reads it back and asserts entry.issym is True with linkname pointing at the expected target.
python-libarchive-c pax restricted (paxr) format writes and reads back Port / libarchive / usage-python-libarchive-c-r13-paxr-format-roundtrip Passed
Writes a pax-restricted archive via file_writer format="pax_restricted" with two entries and confirms file_reader returns both pathnames and payloads in insertion order, exercising the paxr writer alongside the existing batch18 pax-restricted case.
python-libarchive-c ustar+zstd preserves mode and mtime Port / libarchive / usage-python-libarchive-c-r13-tar-zstd-mode-mtime-roundtrip Passed
Writes a ustar+zstd archive whose entry has perm 0o604 and mtime 1700000000 set via ctypes, then asserts file_reader returns those values exactly through the zstd filter chain.
python-libarchive-c zip+deflate roundtrips a >1MB payload Port / libarchive / usage-python-libarchive-c-r13-zip-deflate-large-roundtrip Passed
Writes a single-entry zip archive with the deflate filter and a 1.5 MiB payload, then reads it back via file_reader and confirms the on-disk PK\x03\x04 magic, that entry.size matches the source byte length, and that the streamed payload is byte-equal under sha256.
python-libarchive-c zip+deflate preserves entry permission bits via ctypes Port / libarchive / usage-python-libarchive-c-r13-zip-deflate-mode-preserved Passed
Writes a zip+deflate archive whose entry has perm 0o750 set through ctypes archive_entry_set_perm and confirms that file_reader returns entry.perm == 0o750 on read-back, exercising mode preservation in the deflate path.
python-libarchive-c iterates ArchiveEntry attributes via getattr by name Port / libarchive / usage-python-libarchive-c-r14-entry-attrs-by-name Passed
Writes a single-entry tar with a deterministic mtime, opens it via file_reader, and asserts that getattr(entry, name) returns sensible values for the documented attribute set (pathname/size/mode/mtime/isfile/isdir/issym/islnk/filetype/linkname), ensuring the binding still surfaces every attribute name expected on noble.
python-libarchive-c fd_reader iterates a tar archive opened via os.open Port / libarchive / usage-python-libarchive-c-r14-fd-reader-os-open-tar Passed
Writes a tar archive on disk, opens it through os.open(O_RDONLY), and passes the integer file descriptor to libarchive.fd_reader, asserting iteration produces every inserted entry with payload intact.
python-libarchive-c writes a hardlink entry via ctypes archive_entry_set_hardlink Port / libarchive / usage-python-libarchive-c-r14-hardlink-via-ctypes-roundtrip Passed
Uses ctypes to call archive_entry_set_hardlink against libarchive.so.13, builds a pax archive with a regular file plus a hardlink entry pointing to it, reads it back and asserts entry.islnk is True with linkname matching the original and the regular entry exists with the expected payload.
python-libarchive-c roundtrips a 3MB single-entry tar.bz2 archive Port / libarchive / usage-python-libarchive-c-r14-large-3mb-tar-bz2-roundtrip Passed
Builds a deterministic 3 MiB payload, writes it as a single ustar+bzip2 archive via file_writer, and asserts the read-back entry has the expected size and sha256, exercising the bzip2 write filter on a payload above 2 MiB.
python-libarchive-c custom_writer streams a tar archive into a BytesIO buffer Port / libarchive / usage-python-libarchive-c-r14-memory-writer-bytesio-tar Passed
Uses libarchive.custom_writer to feed each emitted block into a BytesIO write callback, builds an in-memory ustar archive without touching the filesystem, then re-reads the resulting bytes via libarchive.memory_reader and asserts every entry round-trips.
python-libarchive-c preserves an explicit mtime through ustar, pax, and gnutar formats Port / libarchive / usage-python-libarchive-c-r14-mtime-preserved-across-formats Passed
Writes the same single entry with entry_set_mtime(1700000000, 0) into ustar, pax, and gnutar archives by reaching into libarchive.ffi, then reads each back and asserts entry.mtime is exactly 1700000000 in all three, verifying mtime preservation is consistent across tar dialects.
python-libarchive-c sets atime, mtime, and birthtime on a pax entry via ffi Port / libarchive / usage-python-libarchive-c-r14-pax-set-atime-mtime-birthtime Passed
Builds a pax archive with entry_set_atime, entry_set_mtime, and entry_set_birthtime each set to distinct epoch values via libarchive.ffi, reads the archive back and asserts the entry surfaces the same atime, mtime, and birthtime values, exercising all three time setters in one entry.
python-libarchive-c stream_reader iterates a tar.gz from a Python file object Port / libarchive / usage-python-libarchive-c-r14-streaming-reader-iter-tar-gz Passed
Writes a multi-entry tar.gz with file_writer, opens it as a binary file object, and feeds it to libarchive.stream_reader to iterate the entries, asserting that pathnames and payloads match insertion order through the streaming-reader interface.
python-libarchive-c file_writer zip with explicit None filter roundtrips entries Port / libarchive / usage-python-libarchive-c-r14-zip-no-filter-roundtrip Passed
Builds a zip archive via libarchive.file_writer(path, "zip", None) - explicitly passing filter_name=None since deflate is built into the zip writer and there is no separate write_add_filter_deflate on noble - then reads it back and asserts every entry's pathname and payload round-trip in insertion order.
python-libarchive-c packages a zip archive inside a tar.gz outer archive Port / libarchive / usage-python-libarchive-c-r14-zip-then-tar-of-zip Passed
Builds an inner zip archive via file_writer, then wraps it as a single entry in an outer ustar+gzip archive, reads the outer archive back, extracts the inner zip bytes from the entry payload, and verifies they roundtrip-decode through libarchive.memory_reader to the original three entries.
python-libarchive-c libarchive.extract_memory writes archive contents to disk Port / libarchive / usage-python-libarchive-c-r15-extract-memory-tarball Passed
Builds a small ustar archive in memory via memory_writer (libarchive.custom_writer with a bytes-sink callback), then changes into a fresh directory and calls libarchive.extract_memory(buf) — the binding's helper that decodes an archive image directly from a bytes blob to the current working directory. Asserts every original payload now lives at the expected on-disk path with matching contents, exercising the extract_memory entrypoint distinct from extract_file used by other batches.
python-libarchive-c fd_writer cross-path: write via fd, read back via file_reader Port / libarchive / usage-python-libarchive-c-r15-fd-writer-then-file-reader Passed
Opens a raw file descriptor with os.open and hands it to libarchive.fd_writer to build a gnutar archive (no path-based writer), then reads the same on-disk file back through libarchive.file_reader (path-based reader). Asserts every (pathname, payload) pair survives the asymmetric fd-write/path-read round trip — distinct from the batch18 fd_writer + fd_reader symmetric case.
python-libarchive-c entry atime nanosecond field round trips through pax Port / libarchive / usage-python-libarchive-c-r15-pax-atime-nsec-roundtrip Passed
Sets entry atime to (1650000000 seconds, 987654321 nanoseconds) via libarchive.so.13 archive_entry_set_atime through ctypes, writes a pax archive (the standard format that preserves sub-second timestamps via extended-header records), then reads back the entry and asserts the seconds component recovered through entry.atime equals 1650000000 and the nanoseconds component recovered through archive_entry_atime_nsec equals 987654321 — pinning sub-second atime precision distinct from the batch21 mtime-only nanosecond case.
python-libarchive-c ArchiveEntry.strmode renders 'l' leading char on a symlink entry Port / libarchive / usage-python-libarchive-c-r15-pax-strmode-symlink-prefix Passed
Writes a pax archive containing a symlink entry (filetype S_IFLNK, target stamped via archive_entry_set_symlink through ctypes) and a regular file entry, reads them back, and asserts ArchiveEntry.strmode begins with 'l' for the symlink and '-' for the regular file. Exercises the strmode renderer against a non-regular filetype (distinct from the batch16 strmode case which only covers regular files).
python-libarchive-c fd_reader iterates a tar.bz2 opened by file descriptor Port / libarchive / usage-python-libarchive-c-r15-tar-bzip2-fd-reader Passed
Writes a tar.bz2 via file_writer with the bzip2 filter, opens the resulting file with os.open and iterates with libarchive.fd_reader. Asserts every entry surfaces with the expected pathname, size, and payload — exercising the fd_reader path against a bzip2-compressed tar (distinct from the batch21 plain-tar fd-reader case).
python-libarchive-c iterates exactly 100 entries from a generated tar Port / libarchive / usage-python-libarchive-c-r15-tar-iter-count-100-entries Passed
Writes a ustar archive containing 100 entries with deterministic names (entry-000.txt .. entry-099.txt) via file_writer.add_file_from_memory, then iterates the archive with file_reader and asserts the iteration yields exactly 100 entries in insertion order with payload bytes matching the index-encoded body. Distinct from earlier 50/256/1000/5000-entry counts in batches 12/15/19/r12.
python-libarchive-c custom_writer captures a tar.xz stream into a bytes buffer Port / libarchive / usage-python-libarchive-c-r15-tar-xz-memory-writer-bytes Passed
Builds a tar.xz archive entirely in memory by handing libarchive.custom_writer a bytes-appending callback with format_name="ustar" and filter_name="xz". Verifies the captured blob carries the .xz magic bytes (fd 37 7a 58 5a 00) and decodes losslessly through libarchive.memory_reader, recovering every entry's pathname and payload — distinct from the batch17 plain-gnutar memory-writer case by adding the xz filter on top.
python-libarchive-c file_reader auto-detects format on tar+gzip and zip independently Port / libarchive / usage-python-libarchive-c-r15-tar-zip-roundtrip-format-detection Passed
Builds two archives over the same payload set: a tar.gz via file_writer("gnutar","gzip") and a zip via file_writer(format_name="zip", filter_name=None) (the zip format takes no separate filter on libarchive_c 2.9). Reads each back through file_reader without supplying a format hint and asserts the auto-detection path returns identical (pathname, payload) maps. Confirms the binding's no-format-hint reader handles both layouts in one test, distinct from existing single-format readback cases.
python-libarchive-c stream_reader iterates a tar.zst from a binary file object Port / libarchive / usage-python-libarchive-c-r15-tar-zstd-stream-reader Passed
Writes a multi-entry tar.zst via file_writer with the zstd filter, opens it as a binary file object and feeds it to libarchive.stream_reader (distinct from the r14 stream_reader-tar-gz case). Asserts pathnames and payloads round trip in insertion order through the streaming-reader interface against a zstd-compressed input rather than gzip.
python-libarchive-c zip readback parity between store and deflate compression Port / libarchive / usage-python-libarchive-c-r15-zip-store-vs-deflate-readback Passed
Builds two zip archives over the same payload set: one with options="zip:compression=store" and one with the default deflate compression, both via file_writer (format_name="zip", filter_name=None). Reads both back through file_reader and asserts every (pathname, payload) round trips to the same bytes despite the different on-disk compression methods, exercising the libarchive zip-options string for the store path on noble.
python-libarchive-c cpio newc preserves entry insertion order across read_memory Port / libarchive / usage-python-libarchive-c-r16-cpio-newc-insertion-order-preserved Passed
Builds a cpio newc archive in memory via custom_writer with five entries added in a known order, decodes it back via memory_reader, and asserts the iteration order of pathnames matches the original insertion order exactly, exercising cpio's sequential entry layout.
python-libarchive-c file_writer(mtree) emits mtree text consumable by file_reader Port / libarchive / usage-python-libarchive-c-r16-mtree-format-roundtrip Passed
Builds an mtree manifest via libarchive.file_writer(format_name='mtree', filter_name=None) listing three entries, asserts the on-disk output begins with the literal "#mtree" sigil, then reads it back via libarchive.file_reader and confirms every pathname appears in the iteration set — exercising the mtree writer/reader pair end-to-end.
python-libarchive-c pax memory archive iterates 200 entries in insertion order Port / libarchive / usage-python-libarchive-c-r16-pax-many-small-entries Passed
Builds a pax archive in memory via custom_writer containing 200 entries named entry-000.txt through entry-199.txt with distinct payloads, decodes it via memory_reader, and asserts the iteration order equals the original insertion order and that every payload matches exactly, exercising pax with many short entries.
python-libarchive-c file_writer(ustar, filter='lzip') round-trips through file_reader Port / libarchive / usage-python-libarchive-c-r16-tar-lzip-filter-roundtrip Passed
Builds a tar.lz archive via libarchive.file_writer(format_name='ustar', filter_name='lzip') with two entries, asserts the on-disk magic is "LZIP", and reads them back via libarchive.file_reader confirming every pathname/payload pair matches — exercising the ustar+lzip filter chain.
python-libarchive-c ustar entry preserves mtime to the second across round-trip Port / libarchive / usage-python-libarchive-c-r16-tar-mtime-roundtrip Passed
Creates a regular file, sets its mtime to a known epoch value 1700000000 via os.utime, packs it into a ustar archive via libarchive.file_writer.add_files, reads back via libarchive.file_reader, and asserts the entry .mtime equals the stored epoch second, exercising ustar's whole-second mtime fidelity.
python-libarchive-c ustar entry .size equals the original payload length Port / libarchive / usage-python-libarchive-c-r16-tar-size-attribute-matches-payload Passed
Builds a ustar archive in memory containing three entries of distinct known sizes (16, 256, 1024 bytes) via custom_writer, reads them back via memory_reader, and asserts every entry's .size attribute equals the byte length of the body returned by entry.get_blocks(), exercising the size-attribute exposure on the python binding.
python-libarchive-c ustar with a symlink entry exposes issym/isfile on readback Port / libarchive / usage-python-libarchive-c-r16-tar-symlink-entry-roundtrip Passed
Builds a ustar archive on disk from a regular file plus a real on-disk symlink to it via libarchive.file_writer.add_files, reads the archive back via libarchive.file_reader, and asserts the regular entry reports .issym is False/.isfile is True while the link entry reports .issym is True and .linkname points to the target basename — exercising the filetype propagation path on ustar.
python-libarchive-c ustar entry preserves uid/gid across in-memory round-trip Port / libarchive / usage-python-libarchive-c-r16-tar-uid-gid-roundtrip Passed
Builds a ustar archive on disk from a real file whose owner/group are the current process uid/gid via libarchive.file_writer with add_files, then reads it back via libarchive.file_reader and asserts every entry's .uid and .gid match the current os.getuid()/os.getgid(), exercising the ownership-metadata propagation path.
python-libarchive-c file_writer(ustar, filter='xz') round-trips through file_reader Port / libarchive / usage-python-libarchive-c-r16-tar-xz-filter-chain-roundtrip Passed
Builds a tar.xz archive via libarchive.file_writer(format_name='ustar', filter_name='xz') containing three entries with known payloads, reads them back via libarchive.file_reader, and asserts every (pathname, payload) pair matches the input — exercising the ustar+xz filter chain end-to-end.
python-libarchive-c zip readback yields the same SHA256 as the original payload Port / libarchive / usage-python-libarchive-c-r16-zip-entry-checksum-readback Passed
Builds a zip archive with a single entry whose payload is deterministic (256 bytes of 0..255), reads it back via libarchive.file_reader, computes SHA256 of the decompressed bytes via hashlib, and asserts the digest equals the SHA256 of the original payload — exercising the bytes-level fidelity of the zip writer/reader pair.
python-libarchive-c cpio (odc) preserves binary payload across memory round-trip Port / libarchive / usage-python-libarchive-c-r17-cpio-odc-binary-roundtrip Passed
Builds a cpio archive in memory using format "cpio" (odc by default) via custom_writer containing one entry with a 256-byte binary payload covering all byte values, decodes it back via memory_reader, and asserts the recovered payload matches the original byte-for-byte.
python-libarchive-c ArchiveEntry.isfile is True for regular ustar entries Port / libarchive / usage-python-libarchive-c-r17-entry-isfile-true-for-regular Passed
Builds an in-memory ustar archive via custom_writer with two regular entries, reads back via memory_reader, and asserts entry.isfile is True and entry.isdir/entry.issym/entry.islnk are all False for every entry, exercising the file-type predicate surface on regular files.
python-libarchive-c memory writer entry.size equals the explicit size argument on readback Port / libarchive / usage-python-libarchive-c-r17-entry-size-explicit-matches-payload Passed
Builds an in-memory ustar archive via custom_writer where add_file_from_memory is called with explicit size for each of three entries, reads back via memory_reader, and asserts entry.size matches the original payload length and the integer passed in the size argument for every entry.
python-libarchive-c file_reader iterates a tar.gz produced by file_writer Port / libarchive / usage-python-libarchive-c-r17-file-reader-on-tar-gz Passed
Writes a small ustar+gzip archive to disk via libarchive.file_writer with filter_name="gzip", then opens the archive path via libarchive.file_reader and asserts the iteration produces exactly the entries written in insertion order, exercising the gzip filter on file-backed I/O.
python-libarchive-c gnutar format iterates exactly three entries Port / libarchive / usage-python-libarchive-c-r17-gnutar-three-entry-iter-count Passed
Builds an in-memory gnutar archive containing three entries via custom_writer, reads it via memory_reader, and asserts the iteration produces exactly three ArchiveEntry objects with the expected pathnames, exercising the gnutar format on a fixed multi-entry payload.
python-libarchive-c pax entry pathname preserves a unicode (non-ASCII) string round-trip Port / libarchive / usage-python-libarchive-c-r17-pathname-unicode-roundtrip Passed
Builds an in-memory pax archive via custom_writer with a single entry whose pathname contains the non-ASCII string "rondure-éè.txt", reads it back via memory_reader, and asserts entry.pathname returns the original unicode string unchanged, exercising the unicode pathname propagation through libarchive.
python-libarchive-c pax payload SHA-256 survives memory_writer/memory_reader round-trip Port / libarchive / usage-python-libarchive-c-r17-pax-payload-hash-roundtrip Passed
Builds a pax archive in memory via custom_writer with a single 4 KiB entry whose payload is pseudo-random bytes, decodes via memory_reader, and asserts the SHA-256 of the original payload equals the SHA-256 of the entry blocks read back, exercising binary fidelity across the pax codec.
python-libarchive-c ustar with bzip2 filter round-trips on disk Port / libarchive / usage-python-libarchive-c-r17-tar-bz2-filter-chain-roundtrip Passed
Builds a ustar archive via libarchive.file_writer with filter_name="bzip2", writes three entries to it, and reads the file back via libarchive.file_reader asserting every pathname and payload matches insertion order, exercising the bzip2 filter chain on a file-backed writer.
python-libarchive-c ustar with a regular and a symlink mixed iterates both entry kinds Port / libarchive / usage-python-libarchive-c-r17-tar-symlink-and-regular-mix-iter Passed
Builds a ustar archive on disk by feeding libarchive.file_writer.add_files a real regular file plus a real symlink in the same call, reads it back via libarchive.file_reader, and asserts the regular entry reports .isfile True with .issym False while the symlink entry reports .issym True and .linkname pointing to the regular basename.
python-libarchive-c ustar with xz filter round-trips 10 entries on disk Port / libarchive / usage-python-libarchive-c-r17-ustar-xz-ten-entries-roundtrip Passed
Builds a ustar archive via libarchive.file_writer with filter_name="xz" containing ten entries named e00.txt..e09.txt, reads it back via libarchive.file_reader, and asserts the iteration produces exactly ten entries in insertion order with matching payloads, exercising xz compression at a moderate entry count.
python-libarchive-c cpio_newc roundtrip preserves payload bytes exactly Port / libarchive / usage-python-libarchive-c-r18-cpio-newc-roundtrip-payload-equal Passed
Builds an in-memory cpio archive in newc format using custom_writer with two named entries containing distinct payloads, reads back via memory_reader, and asserts each recovered payload equals the source byte-for-byte, exercising the newc cpio format on a multi-entry archive.
python-libarchive-c pax entry preserves an explicit uname string set via ctypes Port / libarchive / usage-python-libarchive-c-r18-pax-uname-roundtrip-explicit Passed
Builds a pax_restricted archive on disk where each entry's uname is set to a deterministic label using archive_entry_set_uname through ctypes against libarchive.so.13, reads back via file_reader and ctypes archive_entry_uname, and asserts every recovered uname matches the writer's label, exercising the pax extended-attribute persistence path.
python-libarchive-c ustar empty-payload entry reports size zero on readback Port / libarchive / usage-python-libarchive-c-r18-tar-empty-payload-zero-size Passed
Builds a ustar archive in memory containing a single named entry added with an empty bytes payload via add_file_from_memory, reads back via memory_reader, and asserts entry.size equals zero and the iterated payload is the empty bytes object, exercising the zero-length-entry path through the writer and reader.
python-libarchive-c gnutar with gzip filter exposes three entries on iteration Port / libarchive / usage-python-libarchive-c-r18-tar-gz-three-entry-iter-count Passed
Builds a gnutar archive on disk via libarchive.file_writer with filter_name="gzip" containing three named entries, then reads it back with libarchive.file_reader and asserts iteration yields exactly three entries whose pathnames match the writer's order, exercising the gnutar gzip filter on a file-backed reader.
python-libarchive-c ustar entry mode 0o755 round-trips through file reader Port / libarchive / usage-python-libarchive-c-r18-tar-mode-0755-roundtrip Passed
Builds a ustar archive on disk where one entry is added from a staged file chmod'd to 0o755, reads back via libarchive.file_reader, and asserts the recovered entry.mode masked with 0o777 equals 0o755, exercising the executable-permission round-trip distinct from the 0o644 mode case.
python-libarchive-c ustar preserves a dot-prefixed relative pathname on readback Port / libarchive / usage-python-libarchive-c-r18-tar-pathname-with-dot-prefix Passed
Builds an in-memory ustar archive containing a single entry whose pathname starts with the literal "./" relative prefix and asserts the recovered entry.pathname equals the original dot-prefixed string exactly, exercising the relative-path emission through the ustar writer and reader.
python-libarchive-c ustar with xz filter preserves four-entry pathname order Port / libarchive / usage-python-libarchive-c-r18-tar-xz-four-entry-pathname-order Passed
Builds a ustar archive on disk via libarchive.file_writer with filter_name="xz" containing four entries inserted in a non-alphabetical order, reads back via libarchive.file_reader, and asserts the iteration pathname sequence equals the original insertion order, exercising the xz filter on a four-entry on-disk archive.
python-libarchive-c ustar with zstd filter at compression-level=3 roundtrips a payload Port / libarchive / usage-python-libarchive-c-r18-tar-zstd-level-3-roundtrip Passed
Builds a ustar archive in memory via custom_writer with filter_name="zstd" and options "compression-level=3" containing one named payload, reads back via memory_reader, and asserts the recovered payload equals the source byte-for-byte, exercising the zstd filter with a non-default compression level on a memory writer.
python-libarchive-c zip readback returns identical payload regardless of options used at write Port / libarchive / usage-python-libarchive-c-r18-zip-stored-and-deflated-payload-equal Passed
Builds two zip archives in memory using libarchive.memory_writer with options "compression=store" and "compression=deflate" containing the same single payload, reads both back via libarchive.memory_reader, and asserts the recovered byte sequences are byte-identical, exercising the lossless invariant across two compression methods.
python-libarchive-c zip two-entry archive preserves insertion order on iteration Port / libarchive / usage-python-libarchive-c-r18-zip-two-entries-pathname-order-preserved Passed
Builds an in-memory zip archive via custom_writer with two named entries inserted in a deliberate non-alphabetical order, reads back via memory_reader, and asserts the iteration pathname sequence equals the original write order, exercising the zip writer order-preservation guarantee on a two-entry archive.
python-libarchive-c 7zip empty-payload entry reports size zero on readback Port / libarchive / usage-python-libarchive-c-r19-7zip-empty-payload-zero-size Passed
Builds a 7zip archive in memory containing a single entry added via add_file_from_memory with a zero-length payload, reads back via memory_reader, and asserts entry.size equals zero and the iterated payload is the empty bytes object, exercising the zero-length-entry path through the 7zip writer and reader distinct from ustar-empty tests.
python-libarchive-c cpio_newc three-entry archive iterates exactly three pathnames Port / libarchive / usage-python-libarchive-c-r19-cpio-newc-three-entries-iter-count Passed
Builds an in-memory cpio archive in newc format via custom_writer with three named entries a.txt b.txt c.txt and distinct payloads, reads back via memory_reader, and asserts both the iterated entry count is exactly three and the pathnames match the insertion order, exercising the newc cpio iteration count invariant.
python-libarchive-c pax two-entry archive recovers each payload independently and concatenates correctly Port / libarchive / usage-python-libarchive-c-r19-pax-two-entries-payload-concat Passed
Builds an in-memory pax archive via custom_writer with two named entries containing distinct payloads, reads back via memory_reader, and asserts that the concatenation of the two recovered payloads (in iteration order) equals the concatenation of the source payloads in the same order, exercising the pax format multi-entry payload preservation invariant.
python-libarchive-c ustar with bzip2 filter at compression-level=1 roundtrips a payload Port / libarchive / usage-python-libarchive-c-r19-tar-bzip2-level-1-roundtrip Passed
Builds an in-memory ustar archive via custom_writer with filter_name="bzip2" and options "compression-level=1" containing one named payload, reads back via memory_reader, and asserts the recovered payload equals the source byte-for-byte, exercising the bzip2 filter at the lowest block-size level distinct from the level-9 case.
python-libarchive-c ustar+gzip preserves insertion order for five named entries Port / libarchive / usage-python-libarchive-c-r19-tar-gz-five-entry-pathname-order Passed
Builds an in-memory ustar archive with gzip filter containing five entries named e0.txt through e4.txt added in that order with distinct payloads, reads back via memory_reader, and asserts the recovered pathnames list equals the insertion order, exercising the gzip filter on a small but non-trivial multi-entry archive.
python-libarchive-c ustar entry mode 0o700 round-trips through file reader Port / libarchive / usage-python-libarchive-c-r19-tar-mode-0700-roundtrip Passed
Builds a ustar archive on disk where one entry is staged from a file chmod'd to 0o700, reads back via libarchive.file_reader, and asserts the recovered entry.mode masked with 0o777 equals 0o700, exercising the owner-only-permission round-trip distinct from the 0o644 and 0o755 mode cases.
python-libarchive-c ustar+xz preserves an 8192-byte payload byte-for-byte Port / libarchive / usage-python-libarchive-c-r19-tar-xz-large-payload-8192-roundtrip Passed
Builds an in-memory ustar archive with xz filter containing a single entry whose payload is exactly 8192 bytes of a deterministic repeating ASCII pattern, reads back via memory_reader, and asserts the recovered payload equals the source byte-for-byte, exercising the xz filter on a multi-block payload size distinct from prior single-block xz tests.
python-libarchive-c ustar with zstd filter at compression-level=1 roundtrips a payload Port / libarchive / usage-python-libarchive-c-r19-tar-zstd-level-1-roundtrip Passed
Builds a ustar archive in memory via custom_writer with filter_name="zstd" and options "compression-level=1" containing one named payload, reads back via memory_reader, and asserts the recovered payload equals the source byte-for-byte, exercising the zstd filter at the fastest compression level distinct from the level-3 and level-19 cases.
python-libarchive-c zip deflate at compression-level=1 roundtrips a payload byte-for-byte Port / libarchive / usage-python-libarchive-c-r19-zip-deflate-level-1-roundtrip Passed
Builds a zip archive in memory via custom_writer with options "compression=deflate,compression-level=1" containing one named entry with a structured payload, reads back via memory_reader, and asserts the recovered payload equals the source byte-for-byte, exercising the deflate filter at the fastest level distinct from the level-9 case.
python-libarchive-c zip two-entry archive preserves each entry payload independently Port / libarchive / usage-python-libarchive-c-r19-zip-two-entries-distinct-payloads-roundtrip Passed
Builds an in-memory zip archive via custom_writer with two named entries alpha.bin and beta.bin containing distinct binary payloads, reads back via memory_reader, and asserts each recovered payload equals its source byte-for-byte and the pathname order matches insertion, exercising the multi-entry zip writer-reader pair on a deterministic two-entry fixture.
python-libarchive-c cpio "newc" four-entry archive yields exactly four iter entries Port / libarchive / usage-python-libarchive-c-r20-cpio-newc-four-entries-iter-count Passed
Builds an in-memory cpio archive (format "newc") via custom_writer with four named entries with small payloads and asserts that iterating via memory_reader yields exactly 4 entries, exercising the cpio iteration-count invariant for a four-entry archive distinct from the existing three-entry (r19) and twelve-entry (batch20) cases.
python-libarchive-c pax entry with permission 0644 roundtrips the permission bits Port / libarchive / usage-python-libarchive-c-r20-pax-mode-0644-roundtrip Passed
Builds a pax archive in memory via custom_writer with one entry whose permission is set to 0o644 through the add_file_from_memory keyword, reads back via memory_reader, and asserts the recovered entry mode masked to the low-nine permission bits equals 0o644, exercising the pax permission roundtrip distinct from the existing batch20 pax 0700 case and other format mode tests.
python-libarchive-c pax entry with uid=1234 set via ctypes roundtrips the uid attribute Port / libarchive / usage-python-libarchive-c-r20-pax-uid-1234-roundtrip Passed
Builds a pax archive in memory using new_archive_entry and ctypes-bound archive_entry_set_uid to stamp uid 1234 on one entry, reads back via memory_reader, and asserts the recovered entry.uid equals 1234, exercising the pax numeric uid roundtrip with a small in-range value distinct from the batch15 millions-scale uid+gid test.
python-libarchive-c ustar with bzip2 filter at compression-level=9 roundtrips a payload Port / libarchive / usage-python-libarchive-c-r20-tar-bzip2-level-9-roundtrip Passed
Builds a ustar archive in memory via custom_writer with filter_name="bzip2" and options "compression-level=9" containing one named payload, reads back via memory_reader, and asserts the recovered payload equals the source byte-for-byte, exercising the bzip2 filter at the maximum compression level distinct from the existing batch18 bzip2 level-9 case (which writes to a file path rather than memory).
python-libarchive-c ustar with gzip filter at compression-level=9 roundtrips a payload Port / libarchive / usage-python-libarchive-c-r20-tar-gzip-level-9-roundtrip Passed
Builds a ustar archive in memory via custom_writer with filter_name="gzip" and options "compression-level=9" containing one named payload, reads back via memory_reader, and asserts the recovered payload equals the source byte-for-byte, exercising the gzip filter at the highest compression level distinct from prior unspecified-level gzip and other-level tests.
python-libarchive-c ustar entry with mtime=year-2000 roundtrips the modification time Port / libarchive / usage-python-libarchive-c-r20-tar-mtime-2000-roundtrip Passed
Builds an in-memory ustar archive via custom_writer with one entry whose mtime is set to 946684800 (2000-01-01 00:00:00 UTC) via the add_file_from_memory mtime keyword, reads back via memory_reader, and asserts the recovered entry.mtime equals 946684800, exercising the ustar mtime roundtrip with a fixed Y2K boundary value distinct from prior 1970-epoch, 2030, or int32-max cases.
python-libarchive-c ustar three-entry archive yields three distinct pathnames in iteration order Port / libarchive / usage-python-libarchive-c-r20-tar-three-entries-distinct-pathnames Passed
Builds an in-memory ustar archive via custom_writer with three named entries "a.txt", "b.txt", "c.txt" with single-character payloads, reads back via memory_reader, and asserts the recovered pathname list equals the source list in insertion order with len == 3 and no duplicates, exercising the ustar multi-entry pathname-order invariant on a three-entry archive distinct from prior two-entry and many-entry cases.
python-libarchive-c ustar with xz filter at compression-level=9 roundtrips a payload Port / libarchive / usage-python-libarchive-c-r20-tar-xz-level-9-roundtrip Passed
Builds a ustar archive in memory via custom_writer with filter_name="xz" and options "compression-level=9" containing one named payload, reads back via memory_reader, and asserts the recovered payload equals the source byte-for-byte, exercising the xz filter at the maximum compression level distinct from prior unspecified-level xz tests.
python-libarchive-c zip deflate at compression-level=5 roundtrips a payload byte-for-byte Port / libarchive / usage-python-libarchive-c-r20-zip-deflate-level-5-roundtrip Passed
Builds a zip archive in memory via custom_writer with options "compression=deflate,compression-level=5" containing one named entry with a structured payload, reads back via memory_reader, and asserts the recovered payload equals the source byte-for-byte, exercising the zip deflate filter at the default middle compression level distinct from the level-1 and level-9 cases.
python-libarchive-c zip default deflate roundtrips a 64 KiB payload byte-for-byte Port / libarchive / usage-python-libarchive-c-r20-zip-large-payload-equals-source Passed
Builds a zip archive in memory via custom_writer with default options containing one entry holding a 64 KiB payload composed of a repeating block plus a unique trailer, reads back via memory_reader, and asserts the recovered payload size equals 65536 and the bytes equal the source, exercising the zip default writer with a payload large enough to span multiple deflate blocks distinct from the existing zip-large-payload test which uses a different size and tactic.
python-libarchive-c 7zip two-entry archive yields exactly two iter entries Port / libarchive / usage-python-libarchive-c-r21-7zip-two-entries-iter-count Passed
Builds an in-memory 7zip archive via custom_writer with two named entries with small distinct payloads and asserts memory_reader iteration yields exactly 2 entries with the original pathnames in insertion order, exercising the 7zip iter-count invariant at two entries distinct from the existing one (r19 empty-payload) and three (r13) entry 7zip cases.
python-libarchive-c cpio "odc" three-entry archive yields exactly three iter entries Port / libarchive / usage-python-libarchive-c-r21-cpio-odc-three-entries-iter-count Passed
Builds an in-memory cpio archive using the "odc" portable ASCII format via custom_writer with three named entries and asserts memory_reader iteration yields exactly 3 entries with the same pathnames in the original order, exercising the cpio-odc iteration distinct from the existing cpio_newc iter-count tests at three/four/twelve entries.
python-libarchive-c pax entry with permission 0755 roundtrips the permission bits Port / libarchive / usage-python-libarchive-c-r21-pax-perm-0755-roundtrip Passed
Builds a pax archive in memory via custom_writer with one entry whose permission is set to 0o755 through the add_file_from_memory keyword, reads back via memory_reader, and asserts the recovered entry mode masked to the low-nine permission bits equals 0o755, exercising the pax permission roundtrip at 0755 distinct from the existing 0644 (r20) and 0700 (batch20) cases.
python-libarchive-c pax entry with uid=0 (root) survives roundtrip via ctypes setter Port / libarchive / usage-python-libarchive-c-r21-pax-uid-zero-roundtrip Passed
Writes a pax entry whose uid is set to 0 (root) via archive_entry_set_uid reached through ctypes (python-libarchive-c does not expose a uid kwarg setter), then reads back the entry.uid attribute and asserts the value is 0, exercising the pax uid=0 ctypes-driven roundtrip distinct from the existing r20 pax-uid-1234-roundtrip case which used a non-zero uid.
python-libarchive-c tar.bz2 with explicit bzip2 level 5 roundtrips two entries Port / libarchive / usage-python-libarchive-c-r21-tar-bzip2-level-5-roundtrip Passed
Builds a tar.bz2 archive in memory via custom_writer with filter "bzip2" and options "bzip2:compression-level=5", writes two text entries totaling several hundred bytes, reads back via memory_reader, and asserts both pathnames and payloads are recovered intact, exercising the bzip2 compression-level=5 filter option distinct from prior explicit level 1 (r19) and level 9 (r20) cases.
python-libarchive-c pax entry with gname "wheel" survives roundtrip via ctypes setter Port / libarchive / usage-python-libarchive-c-r21-tar-gname-explicit-roundtrip Passed
Writes a pax entry whose group name is set to "wheel" via archive_entry_set_gname reached through ctypes (python-libarchive-c does not expose a gname kwarg setter), then reads back the entry.gname through archive_entry_gname and asserts byte equality, exercising the pax gname-roundtrip with a different group-name value distinct from the existing batch21 pax-gname-ctypes-roundtrip test that used "staff".
python-libarchive-c tar.gz with explicit gzip level 3 roundtrips a single entry Port / libarchive / usage-python-libarchive-c-r21-tar-gzip-level-3-roundtrip Passed
Builds a tar.gz archive in memory via custom_writer with filter "gzip" and options "gzip:compression-level=3", writes a single 2 KiB payload entry, reads back via memory_reader, and asserts the pathname and payload are recovered intact, exercising the gzip compression-level=3 filter option distinct from prior level 6 (batch14) and level 9 (r20) cases.
python-libarchive-c ustar entry with mtime=2025-01-01 roundtrips the modification time Port / libarchive / usage-python-libarchive-c-r21-tar-mtime-2025-roundtrip Passed
Builds an in-memory ustar archive via custom_writer with one entry whose mtime is set to 1735689600 (2025-01-01 00:00:00 UTC) via add_file_from_memory mtime keyword, reads back via memory_reader, and asserts the recovered entry.mtime equals 1735689600, exercising the ustar mtime roundtrip at a 2025 boundary distinct from prior 1970, 2000, 2030 and int32-max cases.
python-libarchive-c zip with explicit deflate compression-level 3 roundtrips a single entry Port / libarchive / usage-python-libarchive-c-r21-zip-deflate-level-3-roundtrip Passed
Builds a zip archive in memory via custom_writer with options "zip:compression-level=3", writes a single highly-compressible payload, reads back via memory_reader, and asserts the pathname and payload are recovered intact, exercising the zip deflate compression-level 3 distinct from prior level 1 (r19), level 5 (r20), and level 9 (batch17) cases.
python-libarchive-c zip six-entry archive yields exactly six iter entries Port / libarchive / usage-python-libarchive-c-r21-zip-six-entries-iter-count Passed
Builds an in-memory zip archive via custom_writer with six named entries with small distinct payloads and asserts memory_reader iteration yields exactly 6 entries with the original pathnames in insertion order, exercising the zip iter-count invariant at six entries distinct from prior two/twenty (r21 batches) entry zip iter-count tests.
python-libarchive-c repeat read Port / libarchive / usage-python-libarchive-c-repeat-read Passed
python-libarchive-c size metadata Port / libarchive / usage-python-libarchive-c-size-metadata Passed
python-libarchive-c spaced name Port / libarchive / usage-python-libarchive-c-spaced-name Passed
python-libarchive-c stream read Port / libarchive / usage-python-libarchive-c-stream-read Passed
python-libarchive-c tar NUL bytes Port / libarchive / usage-python-libarchive-c-tar-binary-nul Passed
Stores NUL-delimited binary content in a tar archive with python-libarchive-c and verifies the exact bytes are preserved.
python-libarchive-c tar binary payload Port / libarchive / usage-python-libarchive-c-tar-binary-payload Passed
Writes binary bytes through a tar archive in python-libarchive-c and verifies the exact payload round-trips.
python-libarchive-c tar deep tree many levels Port / libarchive / usage-python-libarchive-c-tar-deep-tree-many-levels Passed
Roundtrips a deeply nested directory hierarchy through python-libarchive-c and verifies the path order.
python-libarchive-c tar dotfile Port / libarchive / usage-python-libarchive-c-tar-dotfile Passed
python-libarchive-c tar empty file Port / libarchive / usage-python-libarchive-c-tar-empty-file Passed
Writes and reads an empty tar file entry through python-libarchive-c and verifies zero-byte archive member metadata.
python-libarchive-c tar extract Port / libarchive / usage-python-libarchive-c-tar-extract Passed
python-libarchive-c tar gzip memory reader Port / libarchive / usage-python-libarchive-c-tar-gzip-memory-reader Passed
Reads a gzip-compressed tar archive from memory through python-libarchive-c and verifies the member order.
python-libarchive-c tar hidden directory file Port / libarchive / usage-python-libarchive-c-tar-hidden-directory-file Passed
python-libarchive-c tar list Port / libarchive / usage-python-libarchive-c-tar-list Passed
python-libarchive-c tar long name Port / libarchive / usage-python-libarchive-c-tar-long-name Passed
Writes a long tar pathname through python-libarchive-c and verifies the full path survives archive round trip.
python-libarchive-c tar lz4 memory reader Port / libarchive / usage-python-libarchive-c-tar-lz4-memory-reader Passed
Reads an lz4-filtered gnutar archive from memory through python-libarchive-c and verifies entry payloads.
python-libarchive-c tar many empty files Port / libarchive / usage-python-libarchive-c-tar-many-empty-files Passed
python-libarchive-c tar repeated read Port / libarchive / usage-python-libarchive-c-tar-repeated-read Passed
Reads the same tar archive twice through python-libarchive-c and verifies both passes return the same member order.
python-libarchive-c tar space path Port / libarchive / usage-python-libarchive-c-tar-space-path Passed
Writes and reads a tar archive path containing spaces through python-libarchive-c and verifies the stored pathname and payload.
python-libarchive-c tar subdir order Port / libarchive / usage-python-libarchive-c-tar-subdir-order Passed
python-libarchive-c tar to zip copy Port / libarchive / usage-python-libarchive-c-tar-to-zip Passed
python-libarchive-c tar xz memory reader Port / libarchive / usage-python-libarchive-c-tar-xz-memory-reader Passed
Reads an xz-compressed gnutar archive from memory through python-libarchive-c and verifies the member order.
python-libarchive-c ustar format Port / libarchive / usage-python-libarchive-c-ustar-format Passed
python-libarchive-c xz filter Port / libarchive / usage-python-libarchive-c-xz-filter Passed
python-libarchive-c ZIP binary payload Port / libarchive / usage-python-libarchive-c-zip-binary-payload Passed
Writes raw binary bytes into a ZIP archive with python-libarchive-c and verifies the exact payload round-trips.
python-libarchive-c zip directory entry Port / libarchive / usage-python-libarchive-c-zip-directory-entry Passed
Writes a zip archive with an explicit directory entry through python-libarchive-c and verifies the listed members.
python-libarchive-c zip dotfile Port / libarchive / usage-python-libarchive-c-zip-dotfile Passed
python-libarchive-c zip empty file Port / libarchive / usage-python-libarchive-c-zip-empty-file-entry Passed
Writes and reads an empty zip entry through python-libarchive-c and verifies the zero-byte member metadata.
python-libarchive-c empty ZIP file Port / libarchive / usage-python-libarchive-c-zip-empty-file Passed
Writes an empty ZIP member through python-libarchive-c and verifies the entry size remains zero when read back.
python libarchive zip long path Port / libarchive / usage-python-libarchive-c-zip-long-path Passed
python libarchive zip many empty files Port / libarchive / usage-python-libarchive-c-zip-many-empty-files Passed
python-libarchive-c zip many files count Port / libarchive / usage-python-libarchive-c-zip-many-files-count Passed
Writes a zip archive containing several files through python-libarchive-c and verifies the expected member count.
python-libarchive-c many ZIP files Port / libarchive / usage-python-libarchive-c-zip-many-files Passed
python-libarchive-c zip memory reader names Port / libarchive / usage-python-libarchive-c-zip-memory-reader-names Passed
Reads a zip archive from memory through python-libarchive-c and verifies the expected member names.
python-libarchive-c zip nested directory Port / libarchive / usage-python-libarchive-c-zip-nested-directory Passed
python libarchive zip NUL bytes Port / libarchive / usage-python-libarchive-c-zip-nul-bytes Passed
python-libarchive-c ZIP repeat read Port / libarchive / usage-python-libarchive-c-zip-repeat-read Passed
Reads the same ZIP archive twice through python-libarchive-c and verifies repeated reads stay consistent.
python-libarchive-c zip roundtrip Port / libarchive / usage-python-libarchive-c-zip-roundtrip Passed
python libarchive zip spaced name Port / libarchive / usage-python-libarchive-c-zip-spaced-name Passed
python-libarchive-c zip to tar copy Port / libarchive / usage-python-libarchive-c-zip-to-tar Passed
python-libarchive-c zstd filter Port / libarchive / usage-python-libarchive-c-zstd-filter Passed
CVE-2006-5680 libarchive regression Port / libarchive / cve-2006-5680 Passed
Asserts that the tar reader detects a skip request that runs past physical EOF and surfaces a truncated-input diagnostic, instead of repeatedly issuing zero-byte reads in an attempt to skip beyond the end of the archive.
CVE-2007-3644 libarchive regression Port / libarchive / cve-2007-3644 Passed
Asserts that the PAX extended-header parser fails fast on a malformed extension record (length-prefixed but no terminator) instead of looping over the malformed record forever.
CVE-2015-2304 libarchive regression Port / libarchive / cve-2015-2304 Passed
Asserts that bsdtar -x strips the leading slash from a cpio entry whose declared name is an absolute path so the entry is materialized under the extraction root and never escapes to the filesystem-root location named in the archive.
CVE-2015-8923 libarchive regression Port / libarchive / cve-2015-8923 Passed
Asserts that process_extra normalizes signed-versus-unsigned ZIP extra-field offsets and surfaces a documented "Truncated ZIP" diagnostic when the extra-field length runs past the available buffer instead of crashing.
CVE-2015-8931 libarchive regression Port / libarchive / cve-2015-8931 Passed
Asserts that the mtree reader handles timestamp values that exceed time_t limits without triggering undefined behavior, normalizing extreme positive and negative time= attributes during extraction.
CVE-2015-8933 libarchive regression Port / libarchive / cve-2015-8933 Passed
Asserts that archive_read_format_tar_skip uses checked arithmetic and surfaces a truncated-input diagnostic on a tar entry whose declared size (octal 077777777777) exceeds the actual stream by 8 GiB rather than wrapping or crashing.
CVE-2016-4809 libarchive regression Port / libarchive / cve-2016-4809 Passed
Asserts that the CPIO reader caps symlink-target size and rejects an entry whose declared symlink length spans most of the 32-bit address space, surfacing a documented "malformed cpio archive" diagnostic.
CVE-2016-5418 libarchive regression Port / libarchive / cve-2016-5418 Passed
Asserts that bsdtar -x discards the data payload of a hardlink entry whose declared size is non-zero, instead of writing the attacker-supplied bytes through the link to an existing target outside the new archive contents.
CVE-2016-7166 libarchive regression Port / libarchive / cve-2016-7166 Passed
Asserts that libarchive caps recursive decompression-filter nesting and rejects an input wrapped in 250 layers of gzip with a "too many filters for decoding" diagnostic instead of consuming unbounded memory.
CVE-2016-8688 libarchive regression Port / libarchive / cve-2016-8688 Passed
Asserts that the mtree bidder bounds line size when extending its read-ahead buffer, surfacing a documented "line too long" diagnostic on a 200 KB single-line input instead of crashing in detect_form/bid_entry.
CVE-2018-1000880 libarchive regression Port / libarchive / cve-2018-1000880 Passed
Asserts that a tiny WARC record claiming a multi-gigabyte body fails fast with a documented truncation diagnostic instead of running for an unbounded duration consuming CPU and disk.
CVE-2024-37407 libarchive regression Port / libarchive / cve-2024-37407 Passed
Asserts that the ZIP central-directory parser handles a zero-length entry name without out-of-bounds access into the mac-ext code path, surfacing a documented diagnostic instead of crashing.
CVE-2024-57970 libarchive regression Port / libarchive / cve-2024-57970 Passed
Asserts that header_gnu_longlink rejects a TAR entry whose GNU longlink payload is truncated mid-name, instead of overrunning the read-ahead buffer.
CVE-2025-5916 libarchive regression Port / libarchive / cve-2025-5916 Passed
Asserts that the WARC reader rejects a record whose Content-Length is close to INT64_MAX without overflow or unbounded read attempts.