blob: 9f74fcfc19b371dda63e21ca9c42ed612b00afb9 [file] [log] [blame]
// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:io' show File;
import '../test/binary_md_dill_reader.dart' show DillComparer;
import '../test/utils/io_utils.dart' show computeRepoDir;
main(List<String> args) {
if (args.length != 2) {
throw "Expects two arguments: The two files to compare";
}
File fileA = new File(args[0]);
File fileB = new File(args[1]);
List<int> a = fileA.readAsBytesSync();
List<int> b = fileB.readAsBytesSync();
bool shouldCompare = false;
if (a.length != b.length) {
print("Input lengths are different.");
shouldCompare = true;
} else {
for (int i = 0; i < a.length; ++i) {
if (a[i] != b[i]) {
print("Data differs at byte ${i + 1}.");
shouldCompare = true;
break;
}
}
}
if (shouldCompare) {
StringBuffer message = new StringBuffer();
final String repoDir = computeRepoDir();
File binaryMd = new File("$repoDir/pkg/kernel/binary.md");
String binaryMdContent = binaryMd.readAsStringSync();
DillComparer dillComparer = new DillComparer();
if (dillComparer.compare(a, b, binaryMdContent, message)) {
message.writeln(
"Somehow the two different byte-lists compared to the same.");
}
print(message);
} else {
print("Inputs byte-equal!");
}
}