mirror of
https://github.com/apache/httpd.git
synced 2026-10-23 22:49:01 +03:00
* test/modules/metadata/__init__.py, test/modules/metadata/samples.py, test/modules/metadata/test_002_mime_libmagic.py, test/modules/metadata/test_003_compare.py: New test suite. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> GitHub: PR #757 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1938257 13f79535-47bb-0310-9956-ffa450edef68
50 lines
2.4 KiB
Python
50 lines
2.4 KiB
Python
# 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"])
|