Skip to content
Novus Examples
zip1 KB

ZIP - Directory Records Without a Trailing Slash

Directory records whose names do NOT end in a slash — the directory-ness is carried only by the MS-DOS attribute bit in the external attributes field. A reader that decides by name alone creates three empty files called project, project/src and project/data, and then cannot create the directories that have to replace them.

Archive contents — 6 entrieszip
  • project
  • src
  • data
  • README.txt
  • main.txt
  • records.csv

Specifications

Seed
20260807
Directory Records
3
File Records
3
Directory Convention
zero-length member, NO trailing slash, MS-DOS directory bit set
Ambiguity
only the external attribute says 'directory'

Testing contract

Expected to recover
Scenario
Extract the archive and inspect what was created at project, project/src and project/data.
Expected result
All three are directories, not zero-byte files, and the 3 file members extract inside them; readers that key on the trailing slash instead of the external attribute collide here.

What is a .zip file?

ZIP is a widely supported archive format that bundles multiple files and directories into one container, typically with per-file DEFLATE compression and a central directory index. It supports random access to individual entries without decompressing the whole archive. It underlies many document formats such as DOCX and EPUB.

How to use this file

Use an example ZIP to test archive extraction, central-directory parsing, per-entry decompression, and protection against path-traversal (zip-slip) during unpacking.

How to use this file for testing

“ZIP - Directory Records Without a Trailing Slash” is a deterministic Novus Examples fixture for Conversion testing, Error handling. The same content exported across many formats and linked as a group, so you can convert one and diff against the expected twin.

Documented properties for this file: seed 20260807. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.

Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.

Archive fixtures are documented down to their member list (shown on this page) and are deliberately safe — no zip bombs, executables, or hidden payloads. Test extractors against nested, unicode, empty, and encrypted variants.

Code examples

unzip -l directories-no-trailing-slash.zip     # list members
unzip directories-no-trailing-slash.zip -d out/  # extract

Generated by generation/archives_p7.py. Free for any use, no attribution required — license.