Subject: Python-magic tests: add test files for elf and json, use to test flags Origin: upstream, commit 0.4.27-22-g54d86fd Author: Robert Scott Date: Sat Oct 7 18:42:23 2023 +0100 elf-NetBSD-x86_64-echo is from https://github.com/JonathanSalwan/binary-samples under an MIT license incidentally this exposes that the ELF builtin magic detector only works on files, falling back to the soft magic for buffers Note for Debian: test/testdata/elf-NetBSD-x86_64-echo.gz.b64 is upstream's test/testdata/elf-NetBSD-x86_64-echo¹, gzip'ed and base64-encoded so it fits in a patch. Unpacking is done in debian/rules and debian/tests/run-testsuite ¹ sha256sum 17ebd33e39aeda51701f48f925340b09596602bbe6bc02a7ec94183797095618 --- a/test/python_magic_test.py +++ b/test/python_magic_test.py @@ -96,6 +96,10 @@ self.assert_values( m, { + "elf-NetBSD-x86_64-echo": ( + "application/x-pie-executable", + "application/x-sharedlib", + ), "magic._pyc_": ( "application/octet-stream", "text/x-bytecode.python", @@ -107,7 +111,9 @@ "text.txt": "text/plain", b"\xce\xbb".decode("utf-8"): "text/plain", b"\xce\xbb": "text/plain", + "test.json": "application/json", }, + buf_equals_file=False, ) finally: os.unlink(dest) @@ -119,6 +125,88 @@ self.assert_values( m, { + "elf-NetBSD-x86_64-echo": ( + "ELF 64-bit LSB shared object, x86-64, version 1 (SYSV)", + "ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /libexec/ld.elf_so, for NetBSD 8.0, not stripped", + ), + "magic._pyc_": "python 2.4 byte-compiled", + "test.pdf": ( + "PDF document, version 1.2", + "PDF document, version 1.2, 2 pages", + "PDF document, version 1.2, 2 page(s)", + ), + "test.gz": ( + 'gzip compressed data, was "test", from Unix, last ' + "modified: Sun Jun 29 01:32:52 2008", + 'gzip compressed data, was "test", last modified' + ": Sun Jun 29 01:32:52 2008, from Unix", + 'gzip compressed data, was "test", last modified' + ": Sun Jun 29 01:32:52 2008, from Unix, original size 15", + 'gzip compressed data, was "test", ' + "last modified: Sun Jun 29 01:32:52 2008, " + "from Unix, original size modulo 2^32 15", + 'gzip compressed data, was "test", last modified' + ": Sun Jun 29 01:32:52 2008, from Unix, truncated", + ), + "text.txt": "ASCII text", + "test.snappy.parquet": ("Apache Parquet", "Par archive data"), + "test.json": "JSON text data", + }, + buf_equals_file=False, + ) + finally: + del os.environ["TZ"] + + def test_descriptions_no_soft(self): + m = magic.Magic(check_soft=False) + self.assert_values( + m, + { + "elf-NetBSD-x86_64-echo": ( + "data", + "ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /libexec/ld.elf_so, for NetBSD 8.0, not stripped", + ), + "magic._pyc_": "data", + "test.pdf": "ASCII text", + "test.gz": "data", + "text.txt": "ASCII text", + "test.snappy.parquet": "data", + "test.json": "JSON text data", + }, + buf_equals_file=False, + ) + + def test_descriptions_no_elf(self): + m = magic.Magic(check_elf=False) + self.assert_values( + m, + { + "elf-NetBSD-x86_64-echo": "ELF 64-bit LSB shared object, x86-64, version 1 (SYSV)", + }, + buf_equals_file=True, + ) + + def test_descriptions_no_json(self): + m = magic.Magic(check_elf=False) + self.assert_values( + m, + { + "test.json": "data", + }, + buf_equals_file=True, + ) + + def test_descriptions_no_json(self): + m = magic.Magic(check_json=False) + os.environ["TZ"] = "UTC" # To get last modified date of test.gz in UTC + try: + self.assert_values( + m, + { + "elf-NetBSD-x86_64-echo": ( + "ELF 64-bit LSB shared object, x86-64, version 1 (SYSV)", + "ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /libexec/ld.elf_so, for NetBSD 8.0, not stripped", + ), "magic._pyc_": "python 2.4 byte-compiled", "test.pdf": ( "PDF document, version 1.2", --- /dev/null +++ b/test/testdata/test.json @@ -0,0 +1,7 @@ +[ + { + "one": 2, + "three": null, + "four": [5, "six", false] + } +] --- /dev/null +++ b/test/testdata/elf-NetBSD-x86_64-echo.gz.b64 @@ -0,0 +1,62 @@ +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