Commit 766523b7 authored by feng@chromium.org's avatar feng@chromium.org

Disable three debug tests that failed because they rely on wrong for-in order.

Added a DISABLED_TEST macro to cctest.h, and cleanup cctest.cc a bit.

Review URL: http://codereview.chromium.org/456

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@148 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 93a5d0b9
...@@ -35,7 +35,8 @@ ...@@ -35,7 +35,8 @@
CcTest* CcTest::last_ = NULL; CcTest* CcTest::last_ = NULL;
CcTest::CcTest(TestFunction* callback, const char* file, const char* name) CcTest::CcTest(TestFunction* callback, const char* file,
const char* name, bool enabled)
: callback_(callback), name_(name), prev_(last_) { : callback_(callback), name_(name), prev_(last_) {
// Find the base name of this test (const_cast required on Windows). // Find the base name of this test (const_cast required on Windows).
char *basename = strrchr(const_cast<char *>(file), '/'); char *basename = strrchr(const_cast<char *>(file), '/');
...@@ -52,6 +53,7 @@ CcTest::CcTest(TestFunction* callback, const char* file, const char* name) ...@@ -52,6 +53,7 @@ CcTest::CcTest(TestFunction* callback, const char* file, const char* name)
if (extension) *extension = 0; if (extension) *extension = 0;
// Install this test in the list of tests // Install this test in the list of tests
file_ = basename; file_ = basename;
enabled_ = enabled;
prev_ = last_; prev_ = last_;
last_ = this; last_ = this;
} }
...@@ -64,30 +66,6 @@ static void PrintTestList(CcTest* current) { ...@@ -64,30 +66,6 @@ static void PrintTestList(CcTest* current) {
} }
static int RunMatchingTests(CcTest* current, char* file_or_name) {
if (current == NULL) return 0;
int run_count = 0;
if (strcmp(current->file(), file_or_name) == 0
|| strcmp(current->name(), file_or_name) == 0) {
current->Run();
run_count++;
}
return run_count + RunMatchingTests(current->prev(), file_or_name);
}
static int RunMatchingTests(CcTest* current, char* file, char* name) {
if (current == NULL) return 0;
int run_count = 0;
if (strcmp(current->file(), file) == 0
&& strcmp(current->name(), name) == 0) {
current->Run();
run_count++;
}
return run_count + RunMatchingTests(current->prev(), file, name);
}
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
v8::internal::FlagList::SetFlagsFromCommandLine(&argc, argv, true); v8::internal::FlagList::SetFlagsFromCommandLine(&argc, argv, true);
int tests_run = 0; int tests_run = 0;
...@@ -97,6 +75,7 @@ int main(int argc, char* argv[]) { ...@@ -97,6 +75,7 @@ int main(int argc, char* argv[]) {
if (strcmp(arg, "--list") == 0) { if (strcmp(arg, "--list") == 0) {
PrintTestList(CcTest::last()); PrintTestList(CcTest::last());
print_run_count = false; print_run_count = false;
} else { } else {
char* arg_copy = strdup(arg); char* arg_copy = strdup(arg);
char* testname = strchr(arg_copy, '/'); char* testname = strchr(arg_copy, '/');
...@@ -104,10 +83,32 @@ int main(int argc, char* argv[]) { ...@@ -104,10 +83,32 @@ int main(int argc, char* argv[]) {
// Split the string in two by nulling the slash and then run // Split the string in two by nulling the slash and then run
// exact matches. // exact matches.
*testname = 0; *testname = 0;
tests_run += RunMatchingTests(CcTest::last(), arg_copy, testname + 1); char* file = arg_copy;
char* name = testname + 1;
CcTest* test = CcTest::last();
while (test != NULL) {
if (test->enabled()
&& strcmp(test->file(), file) == 0
&& strcmp(test->name(), name) == 0) {
test->Run();
tests_run++;
}
test = test->prev();
}
} else { } else {
// Run all tests with the specified file or test name. // Run all tests with the specified file or test name.
tests_run += RunMatchingTests(CcTest::last(), arg_copy); char* file_or_name = arg_copy;
CcTest* test = CcTest::last();
while (test != NULL) {
if (test->enabled()
&& (strcmp(test->file(), file_or_name) == 0
|| strcmp(test->name(), file_or_name) == 0)) {
test->Run();
tests_run++;
}
test = test->prev();
}
} }
free(arg_copy); free(arg_copy);
} }
......
...@@ -31,7 +31,14 @@ ...@@ -31,7 +31,14 @@
#ifndef TEST #ifndef TEST
#define TEST(Name) \ #define TEST(Name) \
static void Test##Name(); \ static void Test##Name(); \
CcTest register_test_##Name(Test##Name, __FILE__, #Name); \ CcTest register_test_##Name(Test##Name, __FILE__, #Name, true); \
static void Test##Name()
#endif
#ifndef DISABLED_TEST
#define DISABLED_TEST(Name) \
static void Test##Name(); \
CcTest register_test_##Name(Test##Name, __FILE__, #Name, false); \
static void Test##Name() static void Test##Name()
#endif #endif
...@@ -39,17 +46,20 @@ ...@@ -39,17 +46,20 @@
class CcTest { class CcTest {
public: public:
typedef void (TestFunction)(); typedef void (TestFunction)();
CcTest(TestFunction* callback, const char* file, const char* name); CcTest(TestFunction* callback, const char* file, const char* name,
bool enabled);
void Run() { callback_(); } void Run() { callback_(); }
static int test_count(); static int test_count();
static CcTest* last() { return last_; } static CcTest* last() { return last_; }
CcTest* prev() { return prev_; } CcTest* prev() { return prev_; }
const char* file() { return file_; } const char* file() { return file_; }
const char* name() { return name_; } const char* name() { return name_; }
bool enabled() { return enabled_; }
private: private:
TestFunction* callback_; TestFunction* callback_;
const char* file_; const char* file_;
const char* name_; const char* name_;
bool enabled_;
static CcTest* last_; static CcTest* last_;
CcTest* prev_; CcTest* prev_;
}; };
......
...@@ -2856,7 +2856,7 @@ void MessageQueueDebuggerThread::Run() { ...@@ -2856,7 +2856,7 @@ void MessageQueueDebuggerThread::Run() {
MessageQueueDebuggerThread message_queue_debugger_thread; MessageQueueDebuggerThread message_queue_debugger_thread;
// This thread runs the v8 engine. // This thread runs the v8 engine.
TEST(MessageQueues) { DISABLED_TEST(MessageQueues) {
// Create a V8 environment // Create a V8 environment
v8::HandleScope scope; v8::HandleScope scope;
DebugLocalContext env; DebugLocalContext env;
...@@ -2961,7 +2961,7 @@ void DebuggerThread::Run() { ...@@ -2961,7 +2961,7 @@ void DebuggerThread::Run() {
DebuggerThread debugger_thread; DebuggerThread debugger_thread;
V8Thread v8_thread; V8Thread v8_thread;
TEST(ThreadedDebugging) { DISABLED_TEST(ThreadedDebugging) {
// Create a V8 environment // Create a V8 environment
threaded_debugging_barriers.Initialize(); threaded_debugging_barriers.Initialize();
...@@ -3120,7 +3120,7 @@ void BreakpointsDebuggerThread::Run() { ...@@ -3120,7 +3120,7 @@ void BreakpointsDebuggerThread::Run() {
BreakpointsDebuggerThread breakpoints_debugger_thread; BreakpointsDebuggerThread breakpoints_debugger_thread;
BreakpointsV8Thread breakpoints_v8_thread; BreakpointsV8Thread breakpoints_v8_thread;
TEST(RecursiveBreakpoints) { DISABLED_TEST(RecursiveBreakpoints) {
// Create a V8 environment // Create a V8 environment
Barriers stack_allocated_breakpoints_barriers; Barriers stack_allocated_breakpoints_barriers;
stack_allocated_breakpoints_barriers.Initialize(); stack_allocated_breakpoints_barriers.Initialize();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment