Index: testing/embedder_test.cpp |
diff --git a/testing/embedder_test.cpp b/testing/embedder_test.cpp |
index 74d4f2530f78ebd7d44138eecb67765a15e9710b..88cce00f5a69f42dba054d79611e624f49727e90 100644 |
--- a/testing/embedder_test.cpp |
+++ b/testing/embedder_test.cpp |
@@ -29,6 +29,8 @@ |
namespace { |
+const char* g_exe_path_ = nullptr; |
+ |
// Reads the entire contents of a file into a newly malloc'd buffer. |
static char* GetFileContents(const char* filename, size_t* retlen) { |
FILE* file = fopen(filename, "rb"); |
@@ -60,18 +62,13 @@ static char* GetFileContents(const char* filename, size_t* retlen) { |
#ifdef V8_USE_EXTERNAL_STARTUP_DATA |
// Returns the full path for an external V8 data file based on either |
// the currect exectuable path or an explicit override. |
-static std::string GetFullPathForSnapshotFile(const Options& options, |
+static std::string GetFullPathForSnapshotFile(const std::string& exe_path, |
const std::string& filename) { |
std::string result; |
- if (!options.bin_directory.empty()) { |
- result = options.bin_directory; |
- if (*options.bin_directory.rbegin() != PATH_SEPARATOR) { |
- result += PATH_SEPARATOR; |
- } |
- } else if (!options.exe_path.empty()) { |
- size_t last_separator = options.exe_path.rfind(PATH_SEPARATOR); |
+ if (!exe_path.empty()) { |
+ size_t last_separator = exe_path.rfind(PATH_SEPARATOR); |
if (last_separator != std::string::npos) { |
- result = options.exe_path.substr(0, last_separator + 1); |
+ result = exe_path.substr(0, last_separator + 1); |
} |
} |
result += filename; |
@@ -80,10 +77,10 @@ static std::string GetFullPathForSnapshotFile(const Options& options, |
// Reads an extenal V8 data file from the |options|-indicated location, |
// returing true on success and false on error. |
-static bool GetExternalData(const Options& options, |
- const std::string& bin_filename, |
+static bool GetExternalData(const std::string& exe_path, |
+ const std::string& filename, |
v8::StartupData* result_data) { |
- std::string full_path = GetFullPathForSnapshotFile(options, bin_filename); |
+ std::string full_path = GetFullPathForSnapshotFile(exe_path, filename); |
size_t data_length = 0; |
char* data_buffer = GetFileContents(full_path.c_str(), &data_length); |
if (!data_buffer) { |
@@ -177,10 +174,10 @@ void EmbedderTest::SetUp() { |
v8::V8::InitializeICU(); |
#ifdef V8_USE_EXTERNAL_STARTUP_DATA |
- ASSERT_TRUE(GetExternalData(options, "natives_blob.bin", &natives_)); |
- ASSERT_TRUE(GetExternalData(options, "snapshot_blob.bin", &snapshot_)); |
- v8::V8::SetNativesDataBlob(&natives); |
- v8::V8::SetSnapshotDataBlob(&snapshot); |
+ ASSERT_TRUE(GetExternalData(g_exe_path_, "natives_blob.bin", &natives_)); |
+ ASSERT_TRUE(GetExternalData(g_exe_path_, "snapshot_blob.bin", &snapshot_)); |
+ v8::V8::SetNativesDataBlob(&natives_); |
+ v8::V8::SetSnapshotDataBlob(&snapshot_); |
#endif // V8_USE_EXTERNAL_STARTUP_DATA |
FPDF_InitLibrary(); |
@@ -304,3 +301,11 @@ void EmbedderTest::UnloadPage(FPDF_PAGE page, FPDF_FORMHANDLE form) { |
FORM_OnBeforeClosePage(page, form); |
FPDF_ClosePage(page); |
} |
+ |
+// Can't use gtest-provided main since we need to stash the path to the |
+// executable in order to find the external V8 binary data files. |
+int main(int argc, char** argv) { |
+ g_exe_path_ = argv[0]; |
+ testing::InitGoogleTest(&argc, argv); |
+ return RUN_ALL_TESTS(); |
+} |