diff --git a/src/c_import.test.zig b/src/c_import.test.zig index e889b89..2d53ff6 100644 --- a/src/c_import.test.zig +++ b/src/c_import.test.zig @@ -55,6 +55,15 @@ test "cSourceCacheKey: llvm version varies the key" { try std.testing.expect(baseKey() != other); } +test "objectMagicOk: accepts Mach-O and ELF, rejects garbage and truncation" { + try std.testing.expect(c_import.objectMagicOk(&.{ 0xcf, 0xfa, 0xed, 0xfe, 0x00 })); // Mach-O 64 + try std.testing.expect(c_import.objectMagicOk(&.{ 0xce, 0xfa, 0xed, 0xfe })); // Mach-O 32 + try std.testing.expect(c_import.objectMagicOk(&.{ 0x7f, 'E', 'L', 'F', 0x02 })); + try std.testing.expect(!c_import.objectMagicOk("not an object file")); + try std.testing.expect(!c_import.objectMagicOk(&.{ 0xcf, 0xfa, 0xed })); // truncated magic + try std.testing.expect(!c_import.objectMagicOk(&.{})); +} + test "cSourceCacheKey: triple and sysroot vary the key; absent is not empty" { const other_triple = c_import.cSourceCacheKey(SRC, &.{HDR}, &.{"A=1"}, &.{"-O2"}, &.{"inc"}, VER, "x86_64-apple-darwin", "/sdk"); try std.testing.expect(baseKey() != other_triple);