Make sure aot codegen test is not confused if windows introduces CRLF line endings.
PiperOrigin-RevId: 296255135
Change-Id: I234fe6b76f0cd9ead1d3dc69bf657160d2d910f8
diff --git a/tensorflow/compiler/aot/BUILD b/tensorflow/compiler/aot/BUILD
index a53d526..dfbea9c 100644
--- a/tensorflow/compiler/aot/BUILD
+++ b/tensorflow/compiler/aot/BUILD
@@ -84,6 +84,7 @@
"//tensorflow/core:protos_all_cc",
"//tensorflow/core:test",
"//tensorflow/core:test_main",
+ "//tensorflow/core/platform:resource_loader",
"@com_google_absl//absl/strings",
"@llvm-project//llvm:support", # fixdeps: keep
"@llvm-project//llvm:x86_code_gen", # fixdeps: keep
diff --git a/tensorflow/compiler/aot/codegen_test.cc b/tensorflow/compiler/aot/codegen_test.cc
index a7294323..6206f68 100644
--- a/tensorflow/compiler/aot/codegen_test.cc
+++ b/tensorflow/compiler/aot/codegen_test.cc
@@ -15,6 +15,7 @@
#include "tensorflow/compiler/aot/codegen.h"
+#include <algorithm>
#include <string>
#include <vector>
@@ -29,6 +30,7 @@
#include "tensorflow/core/lib/core/status_test_util.h"
#include "tensorflow/core/lib/io/path.h"
#include "tensorflow/core/platform/env.h"
+#include "tensorflow/core/platform/resource_loader.h"
#include "tensorflow/core/platform/test.h"
namespace tensorflow {
@@ -139,23 +141,40 @@
static void CompareWithGoldenFile(
const string& tensorflow_relative_golden_file_name,
- const string& expected_contents) {
+ const string& expected_contents, bool ignore_cr) {
+ // Get rid of all CR characters, we may be running under windows.
+ string sanitized_expected_contents(expected_contents);
+ if (ignore_cr) {
+ sanitized_expected_contents.erase(
+ std::remove(sanitized_expected_contents.begin(),
+ sanitized_expected_contents.end(), '\r'),
+ sanitized_expected_contents.end());
+ }
+
// To update the golden file, flip update_golden to true and run the
// following:
// bazel test --test_strategy=local \
// third_party/tensorflow/compiler/aot:codegen_test
const bool update_golden = false;
- const string golden_file_name = io::JoinPath(
- testing::TensorFlowSrcRoot(), tensorflow_relative_golden_file_name);
+ string golden_file_name;
if (update_golden) {
+ golden_file_name = io::JoinPath(testing::TensorFlowSrcRoot(),
+ tensorflow_relative_golden_file_name);
TF_EXPECT_OK(
WriteStringToFile(Env::Default(), golden_file_name, expected_contents));
}
+ golden_file_name =
+ GetDataDependencyFilepath(tensorflow_relative_golden_file_name);
string golden_file_contents;
TF_ASSERT_OK(ReadFileToString(Env::Default(), golden_file_name,
&golden_file_contents));
+ if (ignore_cr) {
+ golden_file_contents.erase(std::remove(golden_file_contents.begin(),
+ golden_file_contents.end(), '\r'),
+ golden_file_contents.end());
+ }
EXPECT_EQ(golden_file_contents, expected_contents);
}
@@ -229,14 +248,18 @@
// The other fields in metadata_result are tested as part of the generated
// header test.
- CompareWithGoldenFile("compiler/aot/codegen_test_o.golden",
- metadata_result.object_file_data);
+ // This specific golden test checks a binary file. It can potentially run into
+ // issues due to ABIs not being stable, but has not so far.
+ // If we see any ABI issues, we should reconsider this specific test case.
+ CompareWithGoldenFile("tensorflow/compiler/aot/codegen_test_o.golden",
+ metadata_result.object_file_data, false);
string header;
TF_ASSERT_OK(
GenerateHeader(opts, config, compile_result, metadata_result, &header));
- CompareWithGoldenFile("compiler/aot/codegen_test_h.golden", header);
+ CompareWithGoldenFile("tensorflow/compiler/aot/codegen_test_h.golden", header,
+ true);
}
} // namespace
} // namespace tfcompile