From d50fbb634ee0fe2b4a0e6c8e7fc3729752a2426d Mon Sep 17 00:00:00 2001 From: "erik.corry@gmail.com" Date: Thu, 22 Oct 2009 19:09:09 +0000 Subject: [PATCH] Fix bug that meant that dependent tests were never reported as failing (though they could still crash). (Cache the result of the test in the output object, not in the test object which is reused from the prerequisite to the dependent.) Review URL: http://codereview.chromium.org/321001 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3115 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- test/cctest/cctest.status | 11 +++++++++++ test/cctest/test-serialize.cc | 19 +++++++++++++++++++ tools/test.py | 8 ++++---- 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/test/cctest/cctest.status b/test/cctest/cctest.status index 8fff76933b..b43cd6437a 100644 --- a/test/cctest/cctest.status +++ b/test/cctest/cctest.status @@ -33,6 +33,17 @@ test-debug/DebuggerAgent: PASS, (PASS || FAIL) if $system == linux # BUG(382): Weird test. Can't guarantee that it never times out. test-api/ApplyInterruption: PASS || TIMEOUT +# This is about to go away anyway since new snapshot code is on the way. +test-serialize/Deserialize: FAIL +test-serialize/DeserializeAndRunScript: FAIL +test-serialize/DeserializeNatives: FAIL +test-serialize/DeserializeExtensions: FAIL + +# These tests always fail. They are here to test test.py. If +# they don't fail then test.py has failed. +test-serialize/TestThatAlwaysFails: FAIL +test-serialize/DependentTestThatAlwaysFails: FAIL + [ $arch == arm ] diff --git a/test/cctest/test-serialize.cc b/test/cctest/test-serialize.cc index 6939a80ea0..db37eb3433 100644 --- a/test/cctest/test-serialize.cc +++ b/test/cctest/test-serialize.cc @@ -286,3 +286,22 @@ DEPENDENT_TEST(DeserializeExtensions, Serialize) { v8::Local value = script->Run(); CHECK(value->IsUndefined()); } + + +extern "C" void V8_Fatal(const char* file, int line, const char* format, ...); + + +TEST(TestThatAlwaysSucceeds) { +} + + +TEST(TestThatAlwaysFails) { + bool ArtificialFailure = false; + CHECK(ArtificialFailure); +} + + +DEPENDENT_TEST(DependentTestThatAlwaysFails, TestThatAlwaysSucceeds) { + bool ArtificialFailure2 = false; + CHECK(ArtificialFailure2); +} diff --git a/tools/test.py b/tools/test.py index 3a60c591bf..586925ae83 100755 --- a/tools/test.py +++ b/tools/test.py @@ -326,6 +326,7 @@ class CommandOutput(object): self.timed_out = timed_out self.stdout = stdout self.stderr = stderr + self.failed = None class TestCase(object): @@ -333,7 +334,6 @@ class TestCase(object): def __init__(self, context, path): self.path = path self.context = context - self.failed = None self.duration = None def IsNegative(self): @@ -343,9 +343,9 @@ class TestCase(object): return cmp(other.duration, self.duration) def DidFail(self, output): - if self.failed is None: - self.failed = self.IsFailureOutput(output) - return self.failed + if output.failed is None: + output.failed = self.IsFailureOutput(output) + return output.failed def IsFailureOutput(self, output): return output.exit_code != 0