[vm/test] Remove checked-in binaries from MachO test.
Instead of using checked-in binaries in snapshot_utils_test.cc,
write out the binaries manually and check the written binaries.
TEST=vm/cc/CanDetectMachOFiles
Issue: https://github.com/dart-lang/.allstar/issues/159
Change-Id: I024ecac2084cfaef6bf8fe2a7cecceb9ae5d8de9
Cq-Include-Trybots: luci.dart.try:vm-kernel-mac-release-arm64-try,vm-kernel-mac-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/255460
Reviewed-by: Alexander Thomas <athom@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Commit-Queue: Tess Strickland <sstrickl@google.com>
diff --git a/runtime/bin/snapshot_utils_test.cc b/runtime/bin/snapshot_utils_test.cc
index 7b726fd..93317ba 100644
--- a/runtime/bin/snapshot_utils_test.cc
+++ b/runtime/bin/snapshot_utils_test.cc
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
#include "bin/snapshot_utils.h"
+#include "bin/dartutils.h"
#include "bin/file.h"
#include "bin/test_utils.h"
#include "platform/assert.h"
@@ -12,22 +13,58 @@
namespace dart {
#if defined(DART_TARGET_OS_MACOS)
-TEST_CASE(CanDetectMachOFiles) {
- const char* kMachO32BitLittleEndianFilename =
- bin::test::GetFileName("runtime/tests/vm/data/macho_32bit_little_endian");
- const char* kMachO64BitLittleEndianFilename =
- bin::test::GetFileName("runtime/tests/vm/data/macho_64bit_little_endian");
- const char* kMachO32BitBigEndianFilename =
- bin::test::GetFileName("runtime/tests/vm/data/macho_32bit_big_endian");
- const char* kMachO64BitBigEndianFilename =
- bin::test::GetFileName("runtime/tests/vm/data/macho_64bit_big_endian");
- EXPECT(
- bin::Snapshot::IsMachOFormattedBinary(kMachO32BitLittleEndianFilename));
- EXPECT(
- bin::Snapshot::IsMachOFormattedBinary(kMachO64BitLittleEndianFilename));
- EXPECT(bin::Snapshot::IsMachOFormattedBinary(kMachO32BitBigEndianFilename));
- EXPECT(bin::Snapshot::IsMachOFormattedBinary(kMachO64BitBigEndianFilename));
+static const unsigned char kMachO32BitLittleEndianHeader[] = {
+ 0xce, 0xfa, 0xed, 0xfe, 0x07, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00,
+ 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+static const unsigned char kMachO32BitBigEndianHeader[] = {
+ 0xfe, 0xed, 0xfa, 0xce, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+static const unsigned char kMachO64BitLittleEndianHeader[] = {
+ 0xcf, 0xfa, 0xed, 0xfe, 0x07, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00,
+ 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+static const unsigned char kMachO64BitBigEndianHeader[] = {
+ 0xfe, 0xed, 0xfa, 0xcf, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+static const struct {
+ const char* filename;
+ const unsigned char* contents;
+ size_t contents_size;
+} kTestcases[] = {
+ {"macho_32bit_little_endian", kMachO32BitLittleEndianHeader,
+ ARRAY_SIZE(kMachO32BitLittleEndianHeader)},
+ {"macho_32bit_big_endian", kMachO32BitBigEndianHeader,
+ ARRAY_SIZE(kMachO32BitBigEndianHeader)},
+ {"macho_64bit_little_endian", kMachO64BitLittleEndianHeader,
+ ARRAY_SIZE(kMachO64BitLittleEndianHeader)},
+ {"macho_64bit_big_endian", kMachO64BitBigEndianHeader,
+ ARRAY_SIZE(kMachO64BitBigEndianHeader)},
+};
+
+TEST_CASE(CanDetectMachOFiles) {
+ for (uintptr_t i = 0; i < ARRAY_SIZE(kTestcases); i++) {
+ const auto& testcase = kTestcases[i];
+ auto* const file =
+ bin::DartUtils::OpenFile(testcase.filename, /*write=*/true);
+ bin::DartUtils::WriteFile(testcase.contents, testcase.contents_size, file);
+ bin::DartUtils::CloseFile(file);
+
+ EXPECT(bin::Snapshot::IsMachOFormattedBinary(testcase.filename));
+
+ EXPECT(bin::File::Delete(nullptr, testcase.filename));
+ }
const char* kFilename =
bin::test::GetFileName("runtime/bin/snapshot_utils_test.cc");
diff --git a/runtime/tests/vm/data/macho_32bit_big_endian b/runtime/tests/vm/data/macho_32bit_big_endian
deleted file mode 100644
index c271589..0000000
--- a/runtime/tests/vm/data/macho_32bit_big_endian
+++ /dev/null
Binary files differ
diff --git a/runtime/tests/vm/data/macho_32bit_little_endian b/runtime/tests/vm/data/macho_32bit_little_endian
deleted file mode 100644
index 7c7003f..0000000
--- a/runtime/tests/vm/data/macho_32bit_little_endian
+++ /dev/null
Binary files differ
diff --git a/runtime/tests/vm/data/macho_64bit_big_endian b/runtime/tests/vm/data/macho_64bit_big_endian
deleted file mode 100644
index 95b3475..0000000
--- a/runtime/tests/vm/data/macho_64bit_big_endian
+++ /dev/null
Binary files differ
diff --git a/runtime/tests/vm/data/macho_64bit_little_endian b/runtime/tests/vm/data/macho_64bit_little_endian
deleted file mode 100644
index fcd8a04c..0000000
--- a/runtime/tests/vm/data/macho_64bit_little_endian
+++ /dev/null
Binary files differ