1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef BASE_TEST_LAUNCHER_TEST_RESULT_H_ 6 #define BASE_TEST_LAUNCHER_TEST_RESULT_H_ 7 8 #include <string> 9 10 #include "base/time/time.h" 11 12 namespace base { 13 14 // Structure containing result of a single test. 15 struct TestResult { 16 enum Status { 17 TEST_UNKNOWN, // Status not set. 18 TEST_SUCCESS, // Test passed. 19 TEST_FAILURE, // Assertion failure (think EXPECT_TRUE, not DCHECK). 20 TEST_FAILURE_ON_EXIT, // Test passed but executable exit code was non-zero. 21 TEST_TIMEOUT, // Test timed out and was killed. 22 TEST_CRASH, // Test crashed (includes CHECK/DCHECK failures). 23 TEST_SKIPPED, // Test skipped (not run at all). 24 }; 25 26 TestResult(); 27 ~TestResult(); 28 29 // Returns the test status as string (e.g. for display). 30 std::string StatusAsString() const; 31 32 // Returns the test name (e.g. "B" for "A.B"). 33 std::string GetTestName() const; 34 35 // Returns the test case name (e.g. "A" for "A.B"). 36 std::string GetTestCaseName() const; 37 38 // Returns true if the test has completed (i.e. the test binary exited 39 // normally, possibly with an exit code indicating failure, but didn't crash 40 // or time out in the middle of the test). 41 bool completed() const { 42 return status == TEST_SUCCESS || 43 status == TEST_FAILURE || 44 status == TEST_FAILURE_ON_EXIT; 45 } 46 47 // Full name of the test (e.g. "A.B"). 48 std::string full_name; 49 50 Status status; 51 52 // Time it took to run the test. 53 base::TimeDelta elapsed_time; 54 55 // Output of just this test (optional). 56 std::string output_snippet; 57 }; 58 59 } // namespace base 60 61 #endif // BASE_TEST_LAUNCHER_TEST_RESULT_H_ 62