diff options
-rw-r--r-- | tests/Test.h | 4 | ||||
-rw-r--r-- | tests/skia_test.cpp | 22 |
2 files changed, 20 insertions, 6 deletions
diff --git a/tests/Test.h b/tests/Test.h index 2dc7c66f7c..0a9c306b15 100644 --- a/tests/Test.h +++ b/tests/Test.h @@ -64,7 +64,7 @@ namespace skiatest { static SkString GetResourcePath(); - virtual bool isThreadsafe() const { return true; } + virtual bool isGPUTest() const { return false; } protected: virtual void onGetName(SkString*) = 0; @@ -82,7 +82,7 @@ namespace skiatest { GpuTest() : Test() {} static GrContextFactory* GetGrContextFactory(); static void DestroyContexts(); - virtual bool isThreadsafe() const { return false; } + virtual bool isGPUTest() const { return true; } private: }; diff --git a/tests/skia_test.cpp b/tests/skia_test.cpp index f9e4097721..48d87719d5 100644 --- a/tests/skia_test.cpp +++ b/tests/skia_test.cpp @@ -36,6 +36,8 @@ DEFINE_bool2(leaks, l, false, "show leaked ref cnt'd objects."); DEFINE_bool2(single, z, false, "run tests on a single thread internally."); DEFINE_bool2(verbose, v, false, "enable verbose output from the test driver."); DEFINE_bool2(veryVerbose, V, false, "tell individual tests to be verbose."); +DEFINE_bool(cpu, true, "whether or not to run CPU tests."); +DEFINE_bool(gpu, true, "whether or not to run GPU tests."); DEFINE_int32(threads, SkThreadPool::kThreadPerCore, "Run threadsafe tests on a threadpool with this many threads."); @@ -125,6 +127,19 @@ private: int32_t* fFailCount; }; +static bool should_run(const char* testName, bool isGPUTest) { + if (SkCommandLineFlags::ShouldSkip(FLAGS_match, testName)) { + return false; + } + if (!FLAGS_cpu && !isGPUTest) { + return false; + } + if (!FLAGS_gpu && isGPUTest) { + return false; + } + return true; +} + int tool_main(int argc, char** argv); int tool_main(int argc, char** argv) { SkCommandLineFlags::SetUsage(""); @@ -172,8 +187,7 @@ int tool_main(int argc, char** argv) { Iter iter; while ((test = iter.next(NULL/*reporter not needed*/)) != NULL) { SkAutoTDelete<Test> owned(test); - - if(!SkCommandLineFlags::ShouldSkip(FLAGS_match, test->getName())) { + if (should_run(test->getName(), test->isGPUTest())) { toRun++; } total++; @@ -190,9 +204,9 @@ int tool_main(int argc, char** argv) { DebugfReporter reporter(toRun); for (int i = 0; i < total; i++) { SkAutoTDelete<Test> test(iter.next(&reporter)); - if (SkCommandLineFlags::ShouldSkip(FLAGS_match, test->getName())) { + if (!should_run(test->getName(), test->isGPUTest())) { ++skipCount; - } else if (!test->isThreadsafe()) { + } else if (test->isGPUTest()) { unsafeTests.push_back() = test.detach(); } else { threadpool.add(SkNEW_ARGS(SkTestRunnable, (test.detach(), &failCount))); |