008f1ea581
This should fix the problem where a repeatedly failing test causes this assertion: ../../src/core/SkString.cpp:572: failed assertion "length >= 0 && length < SkToInt(kBufferSize)" Example output: 0 GMs x 7 configs, 2 tests, 0 pictures 0 tasks left, 100 failed Failures: test RTree: ../../tests/RTreeTest.cpp:77 0 != rtree.getCount() test RTree: ../../tests/RTreeTest.cpp:77 0 != rtree.getCount() test RTree: ../../tests/RTreeTest.cpp:77 0 != rtree.getCount() test RTree: ../../tests/RTreeTest.cpp:77 0 != rtree.getCount() < 95 lines elided > test RTree: ../../tests/RTreeTest.cpp:77 0 != rtree.getCount() 100 failures. BUG=skia: Review URL: https://codereview.chromium.org/741833002
67 lines
1.6 KiB
C++
67 lines
1.6 KiB
C++
#ifndef DMTestTask_DEFINED
|
|
#define DMTestTask_DEFINED
|
|
|
|
#include "DMReporter.h"
|
|
#include "DMJsonWriter.h"
|
|
#include "DMTask.h"
|
|
#include "DMTaskRunner.h"
|
|
#include "SkString.h"
|
|
#include "SkTemplates.h"
|
|
#include "Test.h"
|
|
|
|
// Runs a unit test.
|
|
namespace DM {
|
|
|
|
class TestReporter : public skiatest::Reporter {
|
|
public:
|
|
TestReporter() {}
|
|
|
|
const SkTArray<SkString>& failures() const { return fFailures; }
|
|
|
|
private:
|
|
virtual bool allowExtendedTest() const SK_OVERRIDE;
|
|
virtual bool verbose() const SK_OVERRIDE;
|
|
|
|
virtual void onReportFailed(const skiatest::Failure& failure) SK_OVERRIDE {
|
|
JsonWriter::AddTestFailure(failure);
|
|
|
|
SkString newFailure;
|
|
failure.getFailureString(&newFailure);
|
|
fFailures.push_back(newFailure);
|
|
}
|
|
|
|
SkTArray<SkString> fFailures;
|
|
};
|
|
|
|
class CpuTestTask : public CpuTask {
|
|
public:
|
|
CpuTestTask(Reporter*, TaskRunner*, skiatest::TestRegistry::Factory);
|
|
|
|
virtual void draw() SK_OVERRIDE;
|
|
virtual bool shouldSkip() const SK_OVERRIDE { return false; }
|
|
virtual SkString name() const SK_OVERRIDE { return fName; }
|
|
|
|
private:
|
|
TestReporter fTestReporter;
|
|
SkAutoTDelete<skiatest::Test> fTest;
|
|
const SkString fName;
|
|
};
|
|
|
|
class GpuTestTask : public GpuTask {
|
|
public:
|
|
GpuTestTask(Reporter*, TaskRunner*, skiatest::TestRegistry::Factory);
|
|
|
|
virtual void draw(GrContextFactory*) SK_OVERRIDE;
|
|
virtual bool shouldSkip() const SK_OVERRIDE;
|
|
virtual SkString name() const SK_OVERRIDE { return fName; }
|
|
|
|
private:
|
|
TestReporter fTestReporter;
|
|
SkAutoTDelete<skiatest::Test> fTest;
|
|
const SkString fName;
|
|
};
|
|
|
|
} // namespace DM
|
|
|
|
#endif // DMTestTask_DEFINED
|