summaryrefslogtreecommitdiff
path: root/testing/embedder_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'testing/embedder_test.cpp')
-rw-r--r--testing/embedder_test.cpp37
1 files changed, 21 insertions, 16 deletions
diff --git a/testing/embedder_test.cpp b/testing/embedder_test.cpp
index 539f48cff5..bebe307cf3 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();
@@ -307,3 +304,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();
+}