Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(110)

Unified Diff: tests/Test.cpp

Issue 13855007: Add --threads to tests binary, to run non-GPU tests on multiple cores. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: SkTScopedPtr -> SkAutoTDelete, and clean up merge conflicts with codereview.chromium.org/14002007 Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tests/Test.h ('k') | tests/skia_test.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/Test.cpp
diff --git a/tests/Test.cpp b/tests/Test.cpp
index 79d3aad58180350dc235fd6abdba8f430dc59516..408e14f6917479c2dd07a472fdd6b47751430922 100644
--- a/tests/Test.cpp
+++ b/tests/Test.cpp
@@ -7,7 +7,8 @@
*/
#include "Test.h"
-#include "SkTLazy.h"
+#include "SkString.h"
+#include "SkTArray.h"
#if SK_SUPPORT_GPU
#include "GrContext.h"
@@ -20,45 +21,25 @@ SK_DEFINE_INST_COUNT(skiatest::Reporter)
using namespace skiatest;
-Reporter::Reporter()
- : fTestCount(0) {
- this->resetReporting();
-}
-
-void Reporter::resetReporting() {
- fCurrTest = NULL;
- fTestCount = 0;
- sk_bzero(fResultCount, sizeof(fResultCount));
+Reporter::Reporter() : fTestCount(0) {
}
void Reporter::startTest(Test* test) {
- SkASSERT(NULL == fCurrTest);
- fCurrTest = test;
+ this->bumpTestCount();
this->onStart(test);
- fTestCount += 1;
- fCurrTestSuccess = true; // we're optimistic
}
void Reporter::report(const char desc[], Result result) {
- if (NULL == desc) {
- desc = "<no description>";
- }
- this->onReport(desc, result);
- fResultCount[result] += 1;
- if (kFailed == result) {
- fCurrTestSuccess = false;
- }
+ this->onReport(desc ? desc : "<no description>", result);
}
void Reporter::endTest(Test* test) {
- SkASSERT(test == fCurrTest);
this->onEnd(test);
- fCurrTest = NULL;
}
///////////////////////////////////////////////////////////////////////////////
-Test::Test() : fReporter(NULL) {}
+Test::Test() : fReporter(NULL), fPassed(true) {}
Test::~Test() {
SkSafeUnref(fReporter);
@@ -75,11 +56,41 @@ const char* Test::getName() {
return fName.c_str();
}
-bool Test::run() {
+namespace {
+ class LocalReporter : public Reporter {
+ public:
+ LocalReporter() {}
+
+ int failure_size() const { return fFailures.count(); }
+ const char* failure(int i) const { return fFailures[i].c_str(); }
+
+ protected:
+ void onReport(const char desc[], Result result) SK_OVERRIDE {
+ if (kFailed == result) {
+ fFailures.push_back().set(desc);
+ }
+ }
+
+ private:
+ SkTArray<SkString> fFailures;
+ };
+} // namespace
+
+void Test::run() {
+ // Tell (likely shared) fReporter that this test has started.
fReporter->startTest(this);
- this->onRun(fReporter);
+
+ // Run the test into a LocalReporter so we know if it's passed or failed without interference
+ // from other tests that might share fReporter.
+ LocalReporter local;
+ this->onRun(&local);
+ fPassed = local.failure_size() == 0;
+
+ // Now tell fReporter about any failures and wrap up.
+ for (int i = 0; i < local.failure_size(); i++) {
+ fReporter->report(local.failure(i), Reporter::kFailed);
+ }
fReporter->endTest(this);
- return fReporter->getCurrSuccess();
}
///////////////////////////////////////////////////////////////////////////////
« no previous file with comments | « tests/Test.h ('k') | tests/skia_test.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698