diff options
Diffstat (limited to 'googletest/test/googletest-listener-test.cc')
| -rw-r--r-- | googletest/test/googletest-listener-test.cc | 437 | 
1 files changed, 322 insertions, 115 deletions
diff --git a/googletest/test/googletest-listener-test.cc b/googletest/test/googletest-listener-test.cc index 8355597151d0..10457afe39a7 100644 --- a/googletest/test/googletest-listener-test.cc +++ b/googletest/test/googletest-listener-test.cc @@ -35,19 +35,20 @@  #include <vector>  #include "gtest/gtest.h" +#include "gtest/internal/custom/gtest.h"  using ::testing::AddGlobalTestEnvironment;  using ::testing::Environment;  using ::testing::InitGoogleTest;  using ::testing::Test; -using ::testing::TestCase; +using ::testing::TestSuite;  using ::testing::TestEventListener;  using ::testing::TestInfo;  using ::testing::TestPartResult;  using ::testing::UnitTest;  // Used by tests to register their events. -std::vector<std::string>* g_events = NULL; +std::vector<std::string>* g_events = nullptr;  namespace testing {  namespace internal { @@ -57,63 +58,66 @@ class EventRecordingListener : public TestEventListener {    explicit EventRecordingListener(const char* name) : name_(name) {}   protected: -  virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) { +  void OnTestProgramStart(const UnitTest& /*unit_test*/) override {      g_events->push_back(GetFullMethodName("OnTestProgramStart"));    } -  virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, -                                    int iteration) { +  void OnTestIterationStart(const UnitTest& /*unit_test*/, +                            int iteration) override {      Message message;      message << GetFullMethodName("OnTestIterationStart")              << "(" << iteration << ")";      g_events->push_back(message.GetString());    } -  virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) { +  void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) override {      g_events->push_back(GetFullMethodName("OnEnvironmentsSetUpStart"));    } -  virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) { +  void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) override {      g_events->push_back(GetFullMethodName("OnEnvironmentsSetUpEnd"));    } - -  virtual void OnTestCaseStart(const TestCase& /*test_case*/) { +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ +  void OnTestCaseStart(const TestCase& /*test_case*/) override {      g_events->push_back(GetFullMethodName("OnTestCaseStart"));    } +#endif  // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ -  virtual void OnTestStart(const TestInfo& /*test_info*/) { +  void OnTestStart(const TestInfo& /*test_info*/) override {      g_events->push_back(GetFullMethodName("OnTestStart"));    } -  virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) { +  void OnTestPartResult(const TestPartResult& /*test_part_result*/) override {      g_events->push_back(GetFullMethodName("OnTestPartResult"));    } -  virtual void OnTestEnd(const TestInfo& /*test_info*/) { +  void OnTestEnd(const TestInfo& /*test_info*/) override {      g_events->push_back(GetFullMethodName("OnTestEnd"));    } -  virtual void OnTestCaseEnd(const TestCase& /*test_case*/) { +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ +  void OnTestCaseEnd(const TestCase& /*test_case*/) override {      g_events->push_back(GetFullMethodName("OnTestCaseEnd"));    } +#endif  // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ -  virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) { +  void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) override {      g_events->push_back(GetFullMethodName("OnEnvironmentsTearDownStart"));    } -  virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) { +  void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) override {      g_events->push_back(GetFullMethodName("OnEnvironmentsTearDownEnd"));    } -  virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, -                                  int iteration) { +  void OnTestIterationEnd(const UnitTest& /*unit_test*/, +                          int iteration) override {      Message message;      message << GetFullMethodName("OnTestIterationEnd")              << "("  << iteration << ")";      g_events->push_back(message.GetString());    } -  virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) { +  void OnTestProgramEnd(const UnitTest& /*unit_test*/) override {      g_events->push_back(GetFullMethodName("OnTestProgramEnd"));    } @@ -125,34 +129,98 @@ class EventRecordingListener : public TestEventListener {    std::string name_;  }; -class EnvironmentInvocationCatcher : public Environment { +// This listener is using OnTestSuiteStart, OnTestSuiteEnd API +class EventRecordingListener2 : public TestEventListener { + public: +  explicit EventRecordingListener2(const char* name) : name_(name) {} +   protected: -  virtual void SetUp() { -    g_events->push_back("Environment::SetUp"); +  void OnTestProgramStart(const UnitTest& /*unit_test*/) override { +    g_events->push_back(GetFullMethodName("OnTestProgramStart")); +  } + +  void OnTestIterationStart(const UnitTest& /*unit_test*/, +                            int iteration) override { +    Message message; +    message << GetFullMethodName("OnTestIterationStart") << "(" << iteration +            << ")"; +    g_events->push_back(message.GetString()); +  } + +  void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) override { +    g_events->push_back(GetFullMethodName("OnEnvironmentsSetUpStart")); +  } + +  void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) override { +    g_events->push_back(GetFullMethodName("OnEnvironmentsSetUpEnd")); +  } + +  void OnTestSuiteStart(const TestSuite& /*test_suite*/) override { +    g_events->push_back(GetFullMethodName("OnTestSuiteStart")); +  } + +  void OnTestStart(const TestInfo& /*test_info*/) override { +    g_events->push_back(GetFullMethodName("OnTestStart")); +  } + +  void OnTestPartResult(const TestPartResult& /*test_part_result*/) override { +    g_events->push_back(GetFullMethodName("OnTestPartResult")); +  } + +  void OnTestEnd(const TestInfo& /*test_info*/) override { +    g_events->push_back(GetFullMethodName("OnTestEnd"));    } -  virtual void TearDown() { -    g_events->push_back("Environment::TearDown"); +  void OnTestSuiteEnd(const TestSuite& /*test_suite*/) override { +    g_events->push_back(GetFullMethodName("OnTestSuiteEnd"));    } + +  void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) override { +    g_events->push_back(GetFullMethodName("OnEnvironmentsTearDownStart")); +  } + +  void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) override { +    g_events->push_back(GetFullMethodName("OnEnvironmentsTearDownEnd")); +  } + +  void OnTestIterationEnd(const UnitTest& /*unit_test*/, +                          int iteration) override { +    Message message; +    message << GetFullMethodName("OnTestIterationEnd") << "(" << iteration +            << ")"; +    g_events->push_back(message.GetString()); +  } + +  void OnTestProgramEnd(const UnitTest& /*unit_test*/) override { +    g_events->push_back(GetFullMethodName("OnTestProgramEnd")); +  } + + private: +  std::string GetFullMethodName(const char* name) { return name_ + "." + name; } + +  std::string name_; +}; + +class EnvironmentInvocationCatcher : public Environment { + protected: +  void SetUp() override { g_events->push_back("Environment::SetUp"); } + +  void TearDown() override { g_events->push_back("Environment::TearDown"); }  };  class ListenerTest : public Test {   protected: -  static void SetUpTestCase() { -    g_events->push_back("ListenerTest::SetUpTestCase"); +  static void SetUpTestSuite() { +    g_events->push_back("ListenerTest::SetUpTestSuite");    } -  static void TearDownTestCase() { -    g_events->push_back("ListenerTest::TearDownTestCase"); +  static void TearDownTestSuite() { +    g_events->push_back("ListenerTest::TearDownTestSuite");    } -  virtual void SetUp() { -    g_events->push_back("ListenerTest::SetUp"); -  } +  void SetUp() override { g_events->push_back("ListenerTest::SetUp"); } -  virtual void TearDown() { -    g_events->push_back("ListenerTest::TearDown"); -  } +  void TearDown() override { g_events->push_back("ListenerTest::TearDown"); }  };  TEST_F(ListenerTest, DoesFoo) { @@ -173,6 +241,7 @@ TEST_F(ListenerTest, DoesBar) {  using ::testing::internal::EnvironmentInvocationCatcher;  using ::testing::internal::EventRecordingListener; +using ::testing::internal::EventRecordingListener2;  void VerifyResults(const std::vector<std::string>& data,                     const char* const* expected_data, @@ -207,6 +276,8 @@ int main(int argc, char **argv) {        new EventRecordingListener("1st"));    UnitTest::GetInstance()->listeners().Append(        new EventRecordingListener("2nd")); +  UnitTest::GetInstance()->listeners().Append( +      new EventRecordingListener2("3rd"));    AddGlobalTestEnvironment(new EnvironmentInvocationCatcher); @@ -216,88 +287,224 @@ int main(int argc, char **argv) {    ::testing::GTEST_FLAG(repeat) = 2;    int ret_val = RUN_ALL_TESTS(); -  const char* const expected_events[] = { -    "1st.OnTestProgramStart", -    "2nd.OnTestProgramStart", -    "1st.OnTestIterationStart(0)", -    "2nd.OnTestIterationStart(0)", -    "1st.OnEnvironmentsSetUpStart", -    "2nd.OnEnvironmentsSetUpStart", -    "Environment::SetUp", -    "2nd.OnEnvironmentsSetUpEnd", -    "1st.OnEnvironmentsSetUpEnd", -    "1st.OnTestCaseStart", -    "2nd.OnTestCaseStart", -    "ListenerTest::SetUpTestCase", -    "1st.OnTestStart", -    "2nd.OnTestStart", -    "ListenerTest::SetUp", -    "ListenerTest::* Test Body", -    "1st.OnTestPartResult", -    "2nd.OnTestPartResult", -    "ListenerTest::TearDown", -    "2nd.OnTestEnd", -    "1st.OnTestEnd", -    "1st.OnTestStart", -    "2nd.OnTestStart", -    "ListenerTest::SetUp", -    "ListenerTest::* Test Body", -    "1st.OnTestPartResult", -    "2nd.OnTestPartResult", -    "ListenerTest::TearDown", -    "2nd.OnTestEnd", -    "1st.OnTestEnd", -    "ListenerTest::TearDownTestCase", -    "2nd.OnTestCaseEnd", -    "1st.OnTestCaseEnd", -    "1st.OnEnvironmentsTearDownStart", -    "2nd.OnEnvironmentsTearDownStart", -    "Environment::TearDown", -    "2nd.OnEnvironmentsTearDownEnd", -    "1st.OnEnvironmentsTearDownEnd", -    "2nd.OnTestIterationEnd(0)", -    "1st.OnTestIterationEnd(0)", -    "1st.OnTestIterationStart(1)", -    "2nd.OnTestIterationStart(1)", -    "1st.OnEnvironmentsSetUpStart", -    "2nd.OnEnvironmentsSetUpStart", -    "Environment::SetUp", -    "2nd.OnEnvironmentsSetUpEnd", -    "1st.OnEnvironmentsSetUpEnd", -    "1st.OnTestCaseStart", -    "2nd.OnTestCaseStart", -    "ListenerTest::SetUpTestCase", -    "1st.OnTestStart", -    "2nd.OnTestStart", -    "ListenerTest::SetUp", -    "ListenerTest::* Test Body", -    "1st.OnTestPartResult", -    "2nd.OnTestPartResult", -    "ListenerTest::TearDown", -    "2nd.OnTestEnd", -    "1st.OnTestEnd", -    "1st.OnTestStart", -    "2nd.OnTestStart", -    "ListenerTest::SetUp", -    "ListenerTest::* Test Body", -    "1st.OnTestPartResult", -    "2nd.OnTestPartResult", -    "ListenerTest::TearDown", -    "2nd.OnTestEnd", -    "1st.OnTestEnd", -    "ListenerTest::TearDownTestCase", -    "2nd.OnTestCaseEnd", -    "1st.OnTestCaseEnd", -    "1st.OnEnvironmentsTearDownStart", -    "2nd.OnEnvironmentsTearDownStart", -    "Environment::TearDown", -    "2nd.OnEnvironmentsTearDownEnd", -    "1st.OnEnvironmentsTearDownEnd", -    "2nd.OnTestIterationEnd(1)", -    "1st.OnTestIterationEnd(1)", -    "2nd.OnTestProgramEnd", -    "1st.OnTestProgramEnd" -  }; +#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ + +  // The deprecated OnTestSuiteStart/OnTestCaseStart events are included +  const char* const expected_events[] = {"1st.OnTestProgramStart", +                                         "2nd.OnTestProgramStart", +                                         "3rd.OnTestProgramStart", +                                         "1st.OnTestIterationStart(0)", +                                         "2nd.OnTestIterationStart(0)", +                                         "3rd.OnTestIterationStart(0)", +                                         "1st.OnEnvironmentsSetUpStart", +                                         "2nd.OnEnvironmentsSetUpStart", +                                         "3rd.OnEnvironmentsSetUpStart", +                                         "Environment::SetUp", +                                         "3rd.OnEnvironmentsSetUpEnd", +                                         "2nd.OnEnvironmentsSetUpEnd", +                                         "1st.OnEnvironmentsSetUpEnd", +                                         "3rd.OnTestSuiteStart", +                                         "1st.OnTestCaseStart", +                                         "2nd.OnTestCaseStart", +                                         "ListenerTest::SetUpTestSuite", +                                         "1st.OnTestStart", +                                         "2nd.OnTestStart", +                                         "3rd.OnTestStart", +                                         "ListenerTest::SetUp", +                                         "ListenerTest::* Test Body", +                                         "1st.OnTestPartResult", +                                         "2nd.OnTestPartResult", +                                         "3rd.OnTestPartResult", +                                         "ListenerTest::TearDown", +                                         "3rd.OnTestEnd", +                                         "2nd.OnTestEnd", +                                         "1st.OnTestEnd", +                                         "1st.OnTestStart", +                                         "2nd.OnTestStart", +                                         "3rd.OnTestStart", +                                         "ListenerTest::SetUp", +                                         "ListenerTest::* Test Body", +                                         "1st.OnTestPartResult", +                                         "2nd.OnTestPartResult", +                                         "3rd.OnTestPartResult", +                                         "ListenerTest::TearDown", +                                         "3rd.OnTestEnd", +                                         "2nd.OnTestEnd", +                                         "1st.OnTestEnd", +                                         "ListenerTest::TearDownTestSuite", +                                         "3rd.OnTestSuiteEnd", +                                         "2nd.OnTestCaseEnd", +                                         "1st.OnTestCaseEnd", +                                         "1st.OnEnvironmentsTearDownStart", +                                         "2nd.OnEnvironmentsTearDownStart", +                                         "3rd.OnEnvironmentsTearDownStart", +                                         "Environment::TearDown", +                                         "3rd.OnEnvironmentsTearDownEnd", +                                         "2nd.OnEnvironmentsTearDownEnd", +                                         "1st.OnEnvironmentsTearDownEnd", +                                         "3rd.OnTestIterationEnd(0)", +                                         "2nd.OnTestIterationEnd(0)", +                                         "1st.OnTestIterationEnd(0)", +                                         "1st.OnTestIterationStart(1)", +                                         "2nd.OnTestIterationStart(1)", +                                         "3rd.OnTestIterationStart(1)", +                                         "1st.OnEnvironmentsSetUpStart", +                                         "2nd.OnEnvironmentsSetUpStart", +                                         "3rd.OnEnvironmentsSetUpStart", +                                         "Environment::SetUp", +                                         "3rd.OnEnvironmentsSetUpEnd", +                                         "2nd.OnEnvironmentsSetUpEnd", +                                         "1st.OnEnvironmentsSetUpEnd", +                                         "3rd.OnTestSuiteStart", +                                         "1st.OnTestCaseStart", +                                         "2nd.OnTestCaseStart", +                                         "ListenerTest::SetUpTestSuite", +                                         "1st.OnTestStart", +                                         "2nd.OnTestStart", +                                         "3rd.OnTestStart", +                                         "ListenerTest::SetUp", +                                         "ListenerTest::* Test Body", +                                         "1st.OnTestPartResult", +                                         "2nd.OnTestPartResult", +                                         "3rd.OnTestPartResult", +                                         "ListenerTest::TearDown", +                                         "3rd.OnTestEnd", +                                         "2nd.OnTestEnd", +                                         "1st.OnTestEnd", +                                         "1st.OnTestStart", +                                         "2nd.OnTestStart", +                                         "3rd.OnTestStart", +                                         "ListenerTest::SetUp", +                                         "ListenerTest::* Test Body", +                                         "1st.OnTestPartResult", +                                         "2nd.OnTestPartResult", +                                         "3rd.OnTestPartResult", +                                         "ListenerTest::TearDown", +                                         "3rd.OnTestEnd", +                                         "2nd.OnTestEnd", +                                         "1st.OnTestEnd", +                                         "ListenerTest::TearDownTestSuite", +                                         "3rd.OnTestSuiteEnd", +                                         "2nd.OnTestCaseEnd", +                                         "1st.OnTestCaseEnd", +                                         "1st.OnEnvironmentsTearDownStart", +                                         "2nd.OnEnvironmentsTearDownStart", +                                         "3rd.OnEnvironmentsTearDownStart", +                                         "Environment::TearDown", +                                         "3rd.OnEnvironmentsTearDownEnd", +                                         "2nd.OnEnvironmentsTearDownEnd", +                                         "1st.OnEnvironmentsTearDownEnd", +                                         "3rd.OnTestIterationEnd(1)", +                                         "2nd.OnTestIterationEnd(1)", +                                         "1st.OnTestIterationEnd(1)", +                                         "3rd.OnTestProgramEnd", +                                         "2nd.OnTestProgramEnd", +                                         "1st.OnTestProgramEnd"}; +#else +  const char* const expected_events[] = {"1st.OnTestProgramStart", +                                         "2nd.OnTestProgramStart", +                                         "3rd.OnTestProgramStart", +                                         "1st.OnTestIterationStart(0)", +                                         "2nd.OnTestIterationStart(0)", +                                         "3rd.OnTestIterationStart(0)", +                                         "1st.OnEnvironmentsSetUpStart", +                                         "2nd.OnEnvironmentsSetUpStart", +                                         "3rd.OnEnvironmentsSetUpStart", +                                         "Environment::SetUp", +                                         "3rd.OnEnvironmentsSetUpEnd", +                                         "2nd.OnEnvironmentsSetUpEnd", +                                         "1st.OnEnvironmentsSetUpEnd", +                                         "3rd.OnTestSuiteStart", +                                         "ListenerTest::SetUpTestSuite", +                                         "1st.OnTestStart", +                                         "2nd.OnTestStart", +                                         "3rd.OnTestStart", +                                         "ListenerTest::SetUp", +                                         "ListenerTest::* Test Body", +                                         "1st.OnTestPartResult", +                                         "2nd.OnTestPartResult", +                                         "3rd.OnTestPartResult", +                                         "ListenerTest::TearDown", +                                         "3rd.OnTestEnd", +                                         "2nd.OnTestEnd", +                                         "1st.OnTestEnd", +                                         "1st.OnTestStart", +                                         "2nd.OnTestStart", +                                         "3rd.OnTestStart", +                                         "ListenerTest::SetUp", +                                         "ListenerTest::* Test Body", +                                         "1st.OnTestPartResult", +                                         "2nd.OnTestPartResult", +                                         "3rd.OnTestPartResult", +                                         "ListenerTest::TearDown", +                                         "3rd.OnTestEnd", +                                         "2nd.OnTestEnd", +                                         "1st.OnTestEnd", +                                         "ListenerTest::TearDownTestSuite", +                                         "3rd.OnTestSuiteEnd", +                                         "1st.OnEnvironmentsTearDownStart", +                                         "2nd.OnEnvironmentsTearDownStart", +                                         "3rd.OnEnvironmentsTearDownStart", +                                         "Environment::TearDown", +                                         "3rd.OnEnvironmentsTearDownEnd", +                                         "2nd.OnEnvironmentsTearDownEnd", +                                         "1st.OnEnvironmentsTearDownEnd", +                                         "3rd.OnTestIterationEnd(0)", +                                         "2nd.OnTestIterationEnd(0)", +                                         "1st.OnTestIterationEnd(0)", +                                         "1st.OnTestIterationStart(1)", +                                         "2nd.OnTestIterationStart(1)", +                                         "3rd.OnTestIterationStart(1)", +                                         "1st.OnEnvironmentsSetUpStart", +                                         "2nd.OnEnvironmentsSetUpStart", +                                         "3rd.OnEnvironmentsSetUpStart", +                                         "Environment::SetUp", +                                         "3rd.OnEnvironmentsSetUpEnd", +                                         "2nd.OnEnvironmentsSetUpEnd", +                                         "1st.OnEnvironmentsSetUpEnd", +                                         "3rd.OnTestSuiteStart", +                                         "ListenerTest::SetUpTestSuite", +                                         "1st.OnTestStart", +                                         "2nd.OnTestStart", +                                         "3rd.OnTestStart", +                                         "ListenerTest::SetUp", +                                         "ListenerTest::* Test Body", +                                         "1st.OnTestPartResult", +                                         "2nd.OnTestPartResult", +                                         "3rd.OnTestPartResult", +                                         "ListenerTest::TearDown", +                                         "3rd.OnTestEnd", +                                         "2nd.OnTestEnd", +                                         "1st.OnTestEnd", +                                         "1st.OnTestStart", +                                         "2nd.OnTestStart", +                                         "3rd.OnTestStart", +                                         "ListenerTest::SetUp", +                                         "ListenerTest::* Test Body", +                                         "1st.OnTestPartResult", +                                         "2nd.OnTestPartResult", +                                         "3rd.OnTestPartResult", +                                         "ListenerTest::TearDown", +                                         "3rd.OnTestEnd", +                                         "2nd.OnTestEnd", +                                         "1st.OnTestEnd", +                                         "ListenerTest::TearDownTestSuite", +                                         "3rd.OnTestSuiteEnd", +                                         "1st.OnEnvironmentsTearDownStart", +                                         "2nd.OnEnvironmentsTearDownStart", +                                         "3rd.OnEnvironmentsTearDownStart", +                                         "Environment::TearDown", +                                         "3rd.OnEnvironmentsTearDownEnd", +                                         "2nd.OnEnvironmentsTearDownEnd", +                                         "1st.OnEnvironmentsTearDownEnd", +                                         "3rd.OnTestIterationEnd(1)", +                                         "2nd.OnTestIterationEnd(1)", +                                         "1st.OnTestIterationEnd(1)", +                                         "3rd.OnTestProgramEnd", +                                         "2nd.OnTestProgramEnd", +                                         "1st.OnTestProgramEnd"}; +#endif  // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ +    VerifyResults(events,                  expected_events,                  sizeof(expected_events)/sizeof(expected_events[0]));  | 
