This is an automated email from the ASF dual-hosted git repository.

tallison pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tika.git


The following commit(s) were added to refs/heads/main by this push:
     new 33934f810 [TIKA-4309] Mach-O Universal in tika-mimetypes.xml (#1963)
33934f810 is described below

commit 33934f810bbc533696f7cde9a623d5cb05e336aa
Author: Alexey Pelykh <[email protected]>
AuthorDate: Mon Sep 23 17:28:32 2024 +0200

    [TIKA-4309] Mach-O Universal in tika-mimetypes.xml (#1963)
---
 .../org/apache/tika/mime/tika-mimetypes.xml        | 286 ++++++++++-----------
 .../java/org/apache/tika/mime/TestMimeTypes.java   |  21 +-
 .../test/resources/test-documents/testMacOS-arm64  | Bin 0 -> 33440 bytes
 .../test/resources/test-documents/testMacOS-x86_64 | Bin 0 -> 8448 bytes
 .../test-documents/testMacOS-x86_64-arm64          | Bin 0 -> 49824 bytes
 5 files changed, 161 insertions(+), 146 deletions(-)

diff --git 
a/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml 
b/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml
index 256e120a8..b7134faf8 100644
--- a/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml
+++ b/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml
@@ -418,24 +418,108 @@
     <_comment>Java Class File</_comment>
     <alias type="application/x-java-vm"/>
     <alias type="application/x-java"/>
-    <magic priority="40">
-      <match value="0xcafebabe" type="string" offset="0" />
+    <magic priority="50">
+      <match value="0xcafebabe" type="string" offset="0"/>
     </magic>
     <glob pattern="*.class"/>
   </mime-type>
 
-  <mime-type type="application/x-java-jnilib">
-    <_comment>Java Native Library for OSX</_comment>
-    <magic priority="50">
-      <match value="0xcafebabe" type="string" offset="0">
-        <match value="0xfeedface" type="string" offset="4096"/>
-        <match value="0xfeedfacf" type="string" offset="4096"/>
-        <match value="0xcefaedfe" type="string" offset="4096"/>
-        <match value="0xcffaedfe" type="string" offset="4096"/>
+  <mime-type type="application/x-mach-o-universal">
+    <_comment>Mach-O Universal</_comment>
+    <magic priority="60">
+      <match value="0xCAFEBABE" type="string" offset="0">
+        <match value="0x1" type="big32" offset="4"/>
+        <match value="0x2" type="big32" offset="4"/>
+        <match value="0x3" type="big32" offset="4"/>
+        <match value="0x4" type="big32" offset="4"/>
+        <match value="0x5" type="big32" offset="4"/>
+        <match value="0x6" type="big32" offset="4"/>
+        <match value="0x7" type="big32" offset="4"/>
+        <match value="0x8" type="big32" offset="4"/>
+        <match value="0x9" type="big32" offset="4"/>
+        <match value="0xA" type="big32" offset="4"/>
+        <match value="0xB" type="big32" offset="4"/>
+        <match value="0xC" type="big32" offset="4"/>
+        <match value="0xD" type="big32" offset="4"/>
+        <match value="0xE" type="big32" offset="4"/>
+        <match value="0xF" type="big32" offset="4"/>
+        <match value="0x10" type="big32" offset="4"/>
+        <match value="0x11" type="big32" offset="4"/>
+        <match value="0x12" type="big32" offset="4"/>
+        <match value="0x13" type="big32" offset="4"/>
+      </match>
+      <match value="0xBEBAFECA" type="string" offset="0">
+        <match value="0x1" type="little32" offset="4"/>
+        <match value="0x2" type="little32" offset="4"/>
+        <match value="0x3" type="little32" offset="4"/>
+        <match value="0x4" type="little32" offset="4"/>
+        <match value="0x5" type="little32" offset="4"/>
+        <match value="0x6" type="little32" offset="4"/>
+        <match value="0x7" type="little32" offset="4"/>
+        <match value="0x8" type="little32" offset="4"/>
+        <match value="0x9" type="little32" offset="4"/>
+        <match value="0xA" type="little32" offset="4"/>
+        <match value="0xB" type="little32" offset="4"/>
+        <match value="0xC" type="little32" offset="4"/>
+        <match value="0xD" type="little32" offset="4"/>
+        <match value="0xE" type="little32" offset="4"/>
+        <match value="0xF" type="little32" offset="4"/>
+        <match value="0x10" type="little32" offset="4"/>
+        <match value="0x11" type="little32" offset="4"/>
+        <match value="0x12" type="little32" offset="4"/>
+        <match value="0x13" type="little32" offset="4"/>
+      </match>
+      <match value="0xCAFEBABF" type="string" offset="0">
+        <match value="0x1" type="big32" offset="4"/>
+        <match value="0x2" type="big32" offset="4"/>
+        <match value="0x3" type="big32" offset="4"/>
+        <match value="0x4" type="big32" offset="4"/>
+        <match value="0x5" type="big32" offset="4"/>
+        <match value="0x6" type="big32" offset="4"/>
+        <match value="0x7" type="big32" offset="4"/>
+        <match value="0x8" type="big32" offset="4"/>
+        <match value="0x9" type="big32" offset="4"/>
+        <match value="0xA" type="big32" offset="4"/>
+        <match value="0xB" type="big32" offset="4"/>
+        <match value="0xC" type="big32" offset="4"/>
+        <match value="0xD" type="big32" offset="4"/>
+        <match value="0xE" type="big32" offset="4"/>
+        <match value="0xF" type="big32" offset="4"/>
+        <match value="0x10" type="big32" offset="4"/>
+        <match value="0x11" type="big32" offset="4"/>
+        <match value="0x12" type="big32" offset="4"/>
+        <match value="0x13" type="big32" offset="4"/>
+      </match>
+      <match value="0xBFBAFECA" type="string" offset="0">
+        <match value="0x1" type="little32" offset="4"/>
+        <match value="0x2" type="little32" offset="4"/>
+        <match value="0x3" type="little32" offset="4"/>
+        <match value="0x4" type="little32" offset="4"/>
+        <match value="0x5" type="little32" offset="4"/>
+        <match value="0x6" type="little32" offset="4"/>
+        <match value="0x7" type="little32" offset="4"/>
+        <match value="0x8" type="little32" offset="4"/>
+        <match value="0x9" type="little32" offset="4"/>
+        <match value="0xA" type="little32" offset="4"/>
+        <match value="0xB" type="little32" offset="4"/>
+        <match value="0xC" type="little32" offset="4"/>
+        <match value="0xD" type="little32" offset="4"/>
+        <match value="0xE" type="little32" offset="4"/>
+        <match value="0xF" type="little32" offset="4"/>
+        <match value="0x10" type="little32" offset="4"/>
+        <match value="0x11" type="little32" offset="4"/>
+        <match value="0x12" type="little32" offset="4"/>
+        <match value="0x13" type="little32" offset="4"/>
       </match>
     </magic>
+  </mime-type>
+
+  <mime-type type="application/x-java-jnilib">
+    <_comment>Java Native Library for OSX</_comment>
     <glob pattern="*.jnilib"/>
+    <sub-class-of type="application/x-mach-o-universal"/>
   </mime-type>
+
   <mime-type type="application/vnd.java.hprof ">
     <_comment>Java hprof text file</_comment>
     <magic priority="50">
@@ -4311,33 +4395,25 @@
     <tika:link>https://www.nationalarchives.gov.uk/PRONOM/fmt/692</tika:link>
     <tika:link>https://www.nationalarchives.gov.uk/PRONOM/fmt/693</tika:link>
     <magic priority="50">
-      <match value="0xFEEDFACE" offset="0"/>
-      <match value="0xCEFAEDFE" offset="0"/>
-      <match value="0xFEEDFACF" offset="0"/>
-      <match value="0xCFFAEDFE" offset="0"/>
+      <match value="0xFEEDFACE" type="string" offset="0"/>
+      <match value="0xCEFAEDFE" type="string" offset="0"/>
+      <match value="0xFEEDFACF" type="string" offset="0"/>
+      <match value="0xCFFAEDFE" type="string" offset="0"/>
     </magic>
   </mime-type>
   <mime-type type="application/x-mach-o-object">
     <_comment>Mach-O relocatable object file</_comment>
     <magic priority="55">
-      <match value="0xFEEDFACE" offset="0">
-        <match value="0x00000001" type="host32" offset="12"/>
+      <match value="0xFEEDFACE" type="string" offset="0">
         <match value="0x00000001" type="big32" offset="12"/>
-        <match value="0x00000001" type="little32" offset="12"/>
       </match>
-      <match value="0xCEFAEDFE" offset="0">
-        <match value="0x00000001" type="host32" offset="12"/>
-        <match value="0x00000001" type="big32" offset="12"/>
+      <match value="0xCEFAEDFE" type="string" offset="0">
         <match value="0x00000001" type="little32" offset="12"/>
       </match>
-      <match value="0xFEEDFACF" offset="0">
-        <match value="0x00000001" type="host32" offset="12"/>
+      <match value="0xFEEDFACF" type="string" offset="0">
         <match value="0x00000001" type="big32" offset="12"/>
-        <match value="0x00000001" type="little32" offset="12"/>
       </match>
       <match value="0xCFFAEDFE" offset="0">
-        <match value="0x00000001" type="host32" offset="12"/>
-        <match value="0x00000001" type="big32" offset="12"/>
         <match value="0x00000001" type="little32" offset="12"/>
       </match>
     </magic>
@@ -4345,24 +4421,16 @@
   <mime-type type="application/x-mach-o-executable">
     <_comment>Mach-O executable</_comment>
     <magic priority="55">
-      <match value="0xFEEDFACE" offset="0">
-        <match value="0x00000002" type="host32" offset="12"/>
+      <match value="0xFEEDFACE" type="string" offset="0">
         <match value="0x00000002" type="big32" offset="12"/>
-        <match value="0x00000002" type="little32" offset="12"/>
       </match>
-      <match value="0xCEFAEDFE" offset="0">
-        <match value="0x00000002" type="host32" offset="12"/>
-        <match value="0x00000002" type="big32" offset="12"/>
+      <match value="0xCEFAEDFE" type="string" offset="0">
         <match value="0x00000002" type="little32" offset="12"/>
       </match>
-      <match value="0xFEEDFACF" offset="0">
-        <match value="0x00000002" type="host32" offset="12"/>
+      <match value="0xFEEDFACF" type="string" offset="0">
         <match value="0x00000002" type="big32" offset="12"/>
-        <match value="0x00000002" type="little32" offset="12"/>
       </match>
-      <match value="0xCFFAEDFE" offset="0">
-        <match value="0x00000002" type="host32" offset="12"/>
-        <match value="0x00000002" type="big32" offset="12"/>
+      <match value="0xCFFAEDFE" type="string" offset="0">
         <match value="0x00000002" type="little32" offset="12"/>
       </match>
     </magic>
@@ -4370,24 +4438,16 @@
   <mime-type type="application/x-mach-o-fvmlib">
     <_comment>Mach-O fixed VM shared library</_comment>
     <magic priority="55">
-      <match value="0xFEEDFACE" offset="0">
-        <match value="0x00000003" type="host32" offset="12"/>
+      <match value="0xFEEDFACE" type="string" offset="0">
         <match value="0x00000003" type="big32" offset="12"/>
-        <match value="0x00000003" type="little32" offset="12"/>
       </match>
-      <match value="0xCEFAEDFE" offset="0">
-        <match value="0x00000003" type="host32" offset="12"/>
-        <match value="0x00000003" type="big32" offset="12"/>
+      <match value="0xCEFAEDFE" type="string" offset="0">
         <match value="0x00000003" type="little32" offset="12"/>
       </match>
-      <match value="0xFEEDFACF" offset="0">
-        <match value="0x00000003" type="host32" offset="12"/>
+      <match value="0xFEEDFACF" type="string" offset="0">
         <match value="0x00000003" type="big32" offset="12"/>
-        <match value="0x00000003" type="little32" offset="12"/>
       </match>
-      <match value="0xCFFAEDFE" offset="0">
-        <match value="0x00000003" type="host32" offset="12"/>
-        <match value="0x00000003" type="big32" offset="12"/>
+      <match value="0xCFFAEDFE" type="string" offset="0">
         <match value="0x00000003" type="little32" offset="12"/>
       </match>
     </magic>
@@ -4395,24 +4455,16 @@
   <mime-type type="application/x-mach-o-core">
     <_comment>Mach-O core file</_comment>
     <magic priority="55">
-      <match value="0xFEEDFACE" offset="0">
-        <match value="0x00000004" type="host32" offset="12"/>
+      <match value="0xFEEDFACE" type="string" offset="0">
         <match value="0x00000004" type="big32" offset="12"/>
-        <match value="0x00000004" type="little32" offset="12"/>
       </match>
-      <match value="0xCEFAEDFE" offset="0">
-        <match value="0x00000004" type="host32" offset="12"/>
-        <match value="0x00000004" type="big32" offset="12"/>
+      <match value="0xCEFAEDFE" type="string" offset="0">
         <match value="0x00000004" type="little32" offset="12"/>
       </match>
-      <match value="0xFEEDFACF" offset="0">
-        <match value="0x00000004" type="host32" offset="12"/>
+      <match value="0xFEEDFACF" type="string" offset="0">
         <match value="0x00000004" type="big32" offset="12"/>
-        <match value="0x00000004" type="little32" offset="12"/>
       </match>
-      <match value="0xCFFAEDFE" offset="0">
-        <match value="0x00000004" type="host32" offset="12"/>
-        <match value="0x00000004" type="big32" offset="12"/>
+      <match value="0xCFFAEDFE" type="string" offset="0">
         <match value="0x00000004" type="little32" offset="12"/>
       </match>
     </magic>
@@ -4420,24 +4472,16 @@
   <mime-type type="application/x-mach-o-preload">
     <_comment>Mach-O preloaded executable</_comment>
     <magic priority="55">
-      <match value="0xFEEDFACE" offset="0">
-        <match value="0x00000005" type="host32" offset="12"/>
+      <match value="0xFEEDFACE" type="string" offset="0">
         <match value="0x00000005" type="big32" offset="12"/>
-        <match value="0x00000005" type="little32" offset="12"/>
       </match>
-      <match value="0xCEFAEDFE" offset="0">
-        <match value="0x00000005" type="host32" offset="12"/>
-        <match value="0x00000005" type="big32" offset="12"/>
+      <match value="0xCEFAEDFE" type="string" offset="0">
         <match value="0x00000005" type="little32" offset="12"/>
       </match>
-      <match value="0xFEEDFACF" offset="0">
-        <match value="0x00000005" type="host32" offset="12"/>
+      <match value="0xFEEDFACF" type="string" offset="0">
         <match value="0x00000005" type="big32" offset="12"/>
-        <match value="0x00000005" type="little32" offset="12"/>
       </match>
-      <match value="0xCFFAEDFE" offset="0">
-        <match value="0x00000005" type="host32" offset="12"/>
-        <match value="0x00000005" type="big32" offset="12"/>
+      <match value="0xCFFAEDFE" type="string" offset="0">
         <match value="0x00000005" type="little32" offset="12"/>
       </match>
     </magic>
@@ -4445,24 +4489,16 @@
   <mime-type type="application/x-mach-o-dylib">
     <_comment>Mach-O dynamic shared library</_comment>
     <magic priority="55">
-      <match value="0xFEEDFACE" offset="0">
-        <match value="0x00000006" type="host32" offset="12"/>
+      <match value="0xFEEDFACE" type="string" offset="0">
         <match value="0x00000006" type="big32" offset="12"/>
-        <match value="0x00000006" type="little32" offset="12"/>
       </match>
-      <match value="0xCEFAEDFE" offset="0">
-        <match value="0x00000006" type="host32" offset="12"/>
-        <match value="0x00000006" type="big32" offset="12"/>
+      <match value="0xCEFAEDFE" type="string" offset="0">
         <match value="0x00000006" type="little32" offset="12"/>
       </match>
-      <match value="0xFEEDFACF" offset="0">
-        <match value="0x00000006" type="host32" offset="12"/>
+      <match value="0xFEEDFACF" type="string" offset="0">
         <match value="0x00000006" type="big32" offset="12"/>
-        <match value="0x00000006" type="little32" offset="12"/>
       </match>
-      <match value="0xCFFAEDFE" offset="0">
-        <match value="0x00000006" type="host32" offset="12"/>
-        <match value="0x00000006" type="big32" offset="12"/>
+      <match value="0xCFFAEDFE" type="string" offset="0">
         <match value="0x00000006" type="little32" offset="12"/>
       </match>
     </magic>
@@ -4470,24 +4506,16 @@
   <mime-type type="application/x-mach-o-dylinker">
     <_comment>Mach-O dynamic link editor</_comment>
     <magic priority="55">
-      <match value="0xFEEDFACE" offset="0">
-        <match value="0x00000007" type="host32" offset="12"/>
+      <match value="0xFEEDFACE" type="string" offset="0">
         <match value="0x00000007" type="big32" offset="12"/>
-        <match value="0x00000007" type="little32" offset="12"/>
       </match>
-      <match value="0xCEFAEDFE" offset="0">
-        <match value="0x00000007" type="host32" offset="12"/>
-        <match value="0x00000007" type="big32" offset="12"/>
+      <match value="0xCEFAEDFE" type="string" offset="0">
         <match value="0x00000007" type="little32" offset="12"/>
       </match>
-      <match value="0xFEEDFACF" offset="0">
-        <match value="0x00000007" type="host32" offset="12"/>
+      <match value="0xFEEDFACF" type="string" offset="0">
         <match value="0x00000007" type="big32" offset="12"/>
-        <match value="0x00000007" type="little32" offset="12"/>
       </match>
-      <match value="0xCFFAEDFE" offset="0">
-        <match value="0x00000007" type="host32" offset="12"/>
-        <match value="0x00000007" type="big32" offset="12"/>
+      <match value="0xCFFAEDFE" type="string" offset="0">
         <match value="0x00000007" type="little32" offset="12"/>
       </match>
     </magic>
@@ -4495,24 +4523,16 @@
   <mime-type type="application/x-mach-o-bundle">
     <_comment>Mach-O dynamic bundle</_comment>
     <magic priority="55">
-      <match value="0xFEEDFACE" offset="0">
-        <match value="0x00000008" type="host32" offset="12"/>
+      <match value="0xFEEDFACE" type="string" offset="0">
         <match value="0x00000008" type="big32" offset="12"/>
-        <match value="0x00000008" type="little32" offset="12"/>
       </match>
-      <match value="0xCEFAEDFE" offset="0">
-        <match value="0x00000008" type="host32" offset="12"/>
-        <match value="0x00000008" type="big32" offset="12"/>
+      <match value="0xCEFAEDFE" type="string" offset="0">
         <match value="0x00000008" type="little32" offset="12"/>
       </match>
-      <match value="0xFEEDFACF" offset="0">
-        <match value="0x00000008" type="host32" offset="12"/>
+      <match value="0xFEEDFACF" type="string" offset="0">
         <match value="0x00000008" type="big32" offset="12"/>
-        <match value="0x00000008" type="little32" offset="12"/>
       </match>
-      <match value="0xCFFAEDFE" offset="0">
-        <match value="0x00000008" type="host32" offset="12"/>
-        <match value="0x00000008" type="big32" offset="12"/>
+      <match value="0xCFFAEDFE" type="string" offset="0">
         <match value="0x00000008" type="little32" offset="12"/>
       </match>
     </magic>
@@ -4520,24 +4540,16 @@
   <mime-type type="application/x-mach-o-dylib-stub">
     <_comment>Mach-O shared library for static linking</_comment>
     <magic priority="55">
-      <match value="0xFEEDFACE" offset="0">
-        <match value="0x00000009" type="host32" offset="12"/>
+      <match value="0xFEEDFACE" type="string" offset="0">
         <match value="0x00000009" type="big32" offset="12"/>
-        <match value="0x00000009" type="little32" offset="12"/>
       </match>
-      <match value="0xCEFAEDFE" offset="0">
-        <match value="0x00000009" type="host32" offset="12"/>
-        <match value="0x00000009" type="big32" offset="12"/>
+      <match value="0xCEFAEDFE" type="string" offset="0">
         <match value="0x00000009" type="little32" offset="12"/>
       </match>
-      <match value="0xFEEDFACF" offset="0">
-        <match value="0x00000009" type="host32" offset="12"/>
+      <match value="0xFEEDFACF" type="string" offset="0">
         <match value="0x00000009" type="big32" offset="12"/>
-        <match value="0x00000009" type="little32" offset="12"/>
       </match>
-      <match value="0xCFFAEDFE" offset="0">
-        <match value="0x00000009" type="host32" offset="12"/>
-        <match value="0x00000009" type="big32" offset="12"/>
+      <match value="0xCFFAEDFE" type="string" offset="0">
         <match value="0x00000009" type="little32" offset="12"/>
       </match>
     </magic>
@@ -4545,24 +4557,16 @@
   <mime-type type="application/x-mach-o-dsym">
     <_comment>Mach-O debug symbols file</_comment>
     <magic priority="55">
-      <match value="0xFEEDFACE" offset="0">
-        <match value="0x0000000A" type="host32" offset="12"/>
+      <match value="0xFEEDFACE" type="string" offset="0">
         <match value="0x0000000A" type="big32" offset="12"/>
-        <match value="0x0000000A" type="little32" offset="12"/>
       </match>
-      <match value="0xCEFAEDFE" offset="0">
-        <match value="0x0000000A" type="host32" offset="12"/>
-        <match value="0x0000000A" type="big32" offset="12"/>
+      <match value="0xCEFAEDFE" type="string" offset="0">
         <match value="0x0000000A" type="little32" offset="12"/>
       </match>
-      <match value="0xFEEDFACF" offset="0">
-        <match value="0x0000000A" type="host32" offset="12"/>
+      <match value="0xFEEDFACF" type="string" offset="0">
         <match value="0x0000000A" type="big32" offset="12"/>
-        <match value="0x0000000A" type="little32" offset="12"/>
       </match>
-      <match value="0xCFFAEDFE" offset="0">
-        <match value="0x0000000A" type="host32" offset="12"/>
-        <match value="0x0000000A" type="big32" offset="12"/>
+      <match value="0xCFFAEDFE" type="string" offset="0">
         <match value="0x0000000A" type="little32" offset="12"/>
       </match>
     </magic>
@@ -4570,24 +4574,16 @@
   <mime-type type="application/x-mach-o-kext-bundle">
     <_comment>Mach-O kext bundle</_comment>
     <magic priority="55">
-      <match value="0xFEEDFACE" offset="0">
-        <match value="0x0000000B" type="host32" offset="12"/>
+      <match value="0xFEEDFACE" type="string" offset="0">
         <match value="0x0000000B" type="big32" offset="12"/>
-        <match value="0x0000000B" type="little32" offset="12"/>
       </match>
-      <match value="0xCEFAEDFE" offset="0">
-        <match value="0x0000000B" type="host32" offset="12"/>
-        <match value="0x0000000B" type="big32" offset="12"/>
+      <match value="0xCEFAEDFE" type="string" offset="0">
         <match value="0x0000000B" type="little32" offset="12"/>
       </match>
-      <match value="0xFEEDFACF" offset="0">
-        <match value="0x0000000B" type="host32" offset="12"/>
+      <match value="0xFEEDFACF" type="string" offset="0">
         <match value="0x0000000B" type="big32" offset="12"/>
-        <match value="0x0000000B" type="little32" offset="12"/>
       </match>
-      <match value="0xCFFAEDFE" offset="0">
-        <match value="0x0000000B" type="host32" offset="12"/>
-        <match value="0x0000000B" type="big32" offset="12"/>
+      <match value="0xCFFAEDFE" type="string" offset="0">
         <match value="0x0000000B" type="little32" offset="12"/>
       </match>
     </magic>
diff --git 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/src/test/java/org/apache/tika/mime/TestMimeTypes.java
 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/src/test/java/org/apache/tika/mime/TestMimeTypes.java
index 81660f207..0794cdc8e 100644
--- 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/src/test/java/org/apache/tika/mime/TestMimeTypes.java
+++ 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/src/test/java/org/apache/tika/mime/TestMimeTypes.java
@@ -743,7 +743,26 @@ public class TestMimeTypes {
         //assertTypeDetection("AutoDetectParser.class", "application/java-vm");
 
         // OSX Native Extension
-        assertTypeDetection("testJNILIB.jnilib", "application/x-java-jnilib");
+        assertTypeDetection("testJNILIB.jnilib",
+                "application/x-java-jnilib",
+                "application/x-mach-o-universal",
+                "application/x-java-jnilib");
+    }
+
+    @Test
+    public void testMachO() throws Exception {
+        assertTypeDetection("testMacOS-x86_64-arm64",
+                "application/octet-stream",
+                "application/x-mach-o-universal",
+                "application/x-mach-o-universal");
+        assertTypeDetection("testMacOS-x86_64",
+                "application/octet-stream",
+                "application/x-mach-o-executable",
+                "application/x-mach-o-executable");
+        assertTypeDetection("testMacOS-arm64",
+                "application/octet-stream",
+                "application/x-mach-o-executable",
+                "application/x-mach-o-executable");
     }
 
     @Test
diff --git 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/src/test/resources/test-documents/testMacOS-arm64
 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/src/test/resources/test-documents/testMacOS-arm64
new file mode 100755
index 000000000..228ca4272
Binary files /dev/null and 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/src/test/resources/test-documents/testMacOS-arm64
 differ
diff --git 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/src/test/resources/test-documents/testMacOS-x86_64
 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/src/test/resources/test-documents/testMacOS-x86_64
new file mode 100755
index 000000000..f3d53d988
Binary files /dev/null and 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/src/test/resources/test-documents/testMacOS-x86_64
 differ
diff --git 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/src/test/resources/test-documents/testMacOS-x86_64-arm64
 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/src/test/resources/test-documents/testMacOS-x86_64-arm64
new file mode 100755
index 000000000..a1142e9dd
Binary files /dev/null and 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/src/test/resources/test-documents/testMacOS-x86_64-arm64
 differ

Reply via email to