Index: chrome/test/base/v8_unit_test.cc |
=================================================================== |
--- chrome/test/base/v8_unit_test.cc (revision 108406) |
+++ chrome/test/base/v8_unit_test.cc (working copy) |
@@ -4,166 +4,17 @@ |
#include "chrome/test/base/v8_unit_test.h" |
-#include "base/file_util.h" |
-#include "base/logging.h" |
-#include "base/path_service.h" |
#include "base/string_piece.h" |
#include "base/stringprintf.h" |
-#include "chrome/common/chrome_paths.h" |
-namespace { |
+V8UnitTest::V8UnitTest() {} |
-// |args| are passed through the various JavaScript logging functions such as |
-// console.log. Returns a string appropriate for logging with LOG(severity). |
-std::string LogArgs2String(const v8::Arguments& args) { |
- std::string message; |
- bool first = true; |
- for (int i = 0; i < args.Length(); i++) { |
- v8::HandleScope handle_scope; |
- if (first) |
- first = false; |
- else |
- message += " "; |
- |
- v8::String::Utf8Value str(args[i]); |
- message += *str; |
- } |
- return message; |
-} |
- |
-// Whether errors were seen. |
-bool had_errors = false; |
- |
-// testDone results. |
-bool testResult_ok = false; |
- |
-// Location of test data (currently test/data/webui). |
-FilePath test_data_directory; |
- |
-// Location of generated test data (<(PROGRAM_DIR)/test_data). |
-FilePath gen_test_data_directory; |
- |
-} // namespace |
- |
-V8UnitTest::V8UnitTest() { |
- InitPathsAndLibraries(); |
-} |
- |
V8UnitTest::~V8UnitTest() {} |
-void V8UnitTest::AddLibrary(const FilePath& library_path) { |
- user_libraries_.push_back(library_path); |
-} |
- |
-bool V8UnitTest::ExecuteJavascriptLibraries() { |
- std::string utf8_content; |
- for (std::vector<FilePath>::iterator user_libraries_iterator = |
- user_libraries_.begin(); |
- user_libraries_iterator != user_libraries_.end(); |
- ++user_libraries_iterator) { |
- std::string library_content; |
- FilePath library_file(*user_libraries_iterator); |
- if (!user_libraries_iterator->IsAbsolute()) { |
- FilePath gen_file = gen_test_data_directory.Append(library_file); |
- library_file = file_util::PathExists(gen_file) ? gen_file : |
- test_data_directory.Append(*user_libraries_iterator); |
- } |
- if (!file_util::ReadFileToString(library_file, &library_content)) { |
- ADD_FAILURE() << library_file.value(); |
- return false; |
- } |
- ExecuteScriptInContext(library_content, library_file.MaybeAsASCII()); |
- if (::testing::Test::HasFatalFailure()) |
- return false; |
- } |
- return true; |
-} |
- |
-bool V8UnitTest::RunJavascriptTestF( |
- const std::string& testFixture, const std::string& testName) { |
- had_errors = false; |
- testResult_ok = false; |
- std::string test_js; |
- if (!ExecuteJavascriptLibraries()) |
- return false; |
- |
- v8::Context::Scope context_scope(context_); |
- v8::HandleScope handle_scope; |
- |
- v8::Handle<v8::Value> functionProperty = |
- context_->Global()->Get(v8::String::New("runTest")); |
- EXPECT_FALSE(functionProperty.IsEmpty()); |
- if (::testing::Test::HasNonfatalFailure()) |
- return false; |
- EXPECT_TRUE(functionProperty->IsFunction()); |
- if (::testing::Test::HasNonfatalFailure()) |
- return false; |
- v8::Handle<v8::Function> function = |
- v8::Handle<v8::Function>::Cast(functionProperty); |
- |
- v8::Local<v8::Array> params = v8::Array::New(); |
- params->Set(0, v8::String::New(testFixture.data(), testFixture.size())); |
- params->Set(1, v8::String::New(testName.data(), testName.size())); |
- v8::Handle<v8::Value> args[] = { |
- v8::Boolean::New(false), |
- v8::String::New("RUN_TEST_F"), |
- params |
- }; |
- |
- v8::TryCatch try_catch; |
- v8::Handle<v8::Value> result = function->Call(context_->Global(), 3, args); |
- // The test fails if an exception was thrown. |
- EXPECT_FALSE(result.IsEmpty()); |
- if (::testing::Test::HasNonfatalFailure()) |
- return false; |
- |
- // Ok if ran successfully, passed tests, and didn't have console errors. |
- return result->BooleanValue() && testResult_ok && !had_errors; |
-} |
- |
-void V8UnitTest::InitPathsAndLibraries() { |
- ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_data_directory)); |
- test_data_directory = test_data_directory.AppendASCII("webui"); |
- ASSERT_TRUE(PathService::Get(chrome::DIR_GEN_TEST_DATA, |
- &gen_test_data_directory)); |
- |
- FilePath mockPath; |
- ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &mockPath)); |
- mockPath = mockPath.AppendASCII("chrome"); |
- mockPath = mockPath.AppendASCII("third_party"); |
- mockPath = mockPath.AppendASCII("mock4js"); |
- mockPath = mockPath.AppendASCII("mock4js.js"); |
- AddLibrary(mockPath); |
- |
- FilePath testApiPath; |
- ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &testApiPath)); |
- testApiPath = testApiPath.AppendASCII("webui"); |
- testApiPath = testApiPath.AppendASCII("test_api.js"); |
- AddLibrary(testApiPath); |
-} |
- |
void V8UnitTest::SetUp() { |
v8::Handle<v8::ObjectTemplate> global = v8::ObjectTemplate::New(); |
- v8::Handle<v8::String> logString = v8::String::New("log"); |
- v8::Handle<v8::FunctionTemplate> logFunction = |
- v8::FunctionTemplate::New(&V8UnitTest::Log); |
- global->Set(logString, logFunction); |
- |
- // Set up chrome object for chrome.send(). |
- v8::Handle<v8::ObjectTemplate> chrome = v8::ObjectTemplate::New(); |
- global->Set(v8::String::New("chrome"), chrome); |
- chrome->Set(v8::String::New("send"), |
- v8::FunctionTemplate::New(&V8UnitTest::ChromeSend)); |
- |
- // Set up console object for console.log(), etc. |
- v8::Handle<v8::ObjectTemplate> console = v8::ObjectTemplate::New(); |
- global->Set(v8::String::New("console"), console); |
- console->Set(logString, logFunction); |
- console->Set(v8::String::New("info"), logFunction); |
- console->Set(v8::String::New("warn"), logFunction); |
- console->Set(v8::String::New("error"), |
- v8::FunctionTemplate::New(&V8UnitTest::Error)); |
- |
+ global->Set(v8::String::New("log"), |
+ v8::FunctionTemplate::New(&V8UnitTest::Log)); |
context_ = v8::Context::New(NULL, global); |
} |
@@ -234,30 +85,18 @@ |
// static |
v8::Handle<v8::Value> V8UnitTest::Log(const v8::Arguments& args) { |
- LOG(INFO) << LogArgs2String(args); |
- return v8::Undefined(); |
-} |
- |
-v8::Handle<v8::Value> V8UnitTest::Error(const v8::Arguments& args) { |
- had_errors = true; |
- LOG(ERROR) << LogArgs2String(args); |
- return v8::Undefined(); |
-} |
- |
-v8::Handle<v8::Value> V8UnitTest::ChromeSend(const v8::Arguments& args) { |
- v8::HandleScope handle_scope; |
- EXPECT_EQ(2, args.Length()); |
- if (::testing::Test::HasNonfatalFailure()) |
- return v8::Undefined(); |
- v8::String::Utf8Value message(args[0]); |
- v8::Handle<v8::Array> testResult(args[1].As<v8::Array>()); |
- EXPECT_EQ(2U, testResult->Length()); |
- if (::testing::Test::HasNonfatalFailure()) |
- return v8::Undefined(); |
- testResult_ok = testResult->Get(0)->BooleanValue(); |
- if (!testResult_ok) { |
- v8::String::Utf8Value message(testResult->Get(1)); |
- LOG(ERROR) << *message; |
+ std::string message; |
+ bool first = true; |
+ for (int i = 0; i < args.Length(); i++) { |
+ v8::HandleScope handle_scope; |
+ if (first) { |
+ first = false; |
+ } else { |
+ message += " "; |
+ } |
+ v8::String::Utf8Value str(args[i]); |
+ message += *str; |
} |
+ std::cout << message << "\n"; |
return v8::Undefined(); |
} |