blob: 310cee310f01378c10bba6bc9c733027f8847e53 [file]
# Sample file contents for content type detection tests. Each is
# served without an extension, so mod_mime sets no type and the magic
# modules have to derive one from the content. mod_mime_magic only
# applies its magic rules to files of at least 64 bytes, so samples
# meant to match a rule are padded past that.
import gzip
import os
SAMPLES = {
"html": b"<html>\n<body>hello</body>\n</html>\n",
"html-doctype": b"<!DOCTYPE html>\n<html><head><title>t</title></head>"
b"<body>hi</body></html>\n",
# (no commas: libmagic 5.45 calls lines with a consistent number
# of commas text/csv)
"text": b"hello world this is plain ascii text\n"
b"with a second line of a different length\n" * 2,
"text-utf8": "café naïve résumé\n".encode() * 4,
"text-latin1": b"caf\xe9 na\xefve\n" * 4,
"csrc": b"#include <stdio.h>\n\nint main(int argc, char **argv)\n{\n"
b" printf(\"hi\\n\");\n return 0;\n}\n",
"json": b'{"a": 1, "b": [1, 2, 3], "c": {"d": "e", "f": "some more text"}}\n',
"xml": b"<?xml version=\"1.0\"?>\n<root><a>1</a><b>2</b><c>3</c><d>4</d></root>\n",
"rfc822": b"From: a@example.com\nTo: b@example.com\nSubject: hi there\n\n"
b"the body of the message\n",
"shell": b"#!/bin/sh\necho hi\necho there\necho this is a shell script\n"
b"exit 0\n",
"png": b"\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR"
b"\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xffa"
+ b"\x00" * 64,
"gif": b"GIF89a\x10\x00\x10\x00\x80\x00\x00" + b"\x00" * 64,
"pdf": b"%PDF-1.4\n%\xe2\xe3\xcf\xd3\n1 0 obj\n<< /Type /Catalog >>\nendobj\n",
"gzip": gzip.compress(bytes(range(32, 127)) * 4, mtime=0),
"elf": b"\x7fELF\x02\x01\x01\x00" + b"\x00" * 8
+ b"\x02\x00\x3e\x00\x01\x00\x00\x00" + b"\x00" * 100,
# deterministic bytes which libmagic reports as application/octet-stream
"binary": bytes((i * 7919) % 256 for i in range(4096)),
"empty": b"",
}
def write_samples(doc_dir):
"""Write every sample into doc_dir, plus png.txt (PNG content
with a .txt extension)."""
os.makedirs(doc_dir, exist_ok=True)
for name, content in SAMPLES.items():
with open(os.path.join(doc_dir, name), "wb") as f:
f.write(content)
with open(os.path.join(doc_dir, "png.txt"), "wb") as f:
f.write(SAMPLES["png"])