more test changes
This commit is contained in:
		
							parent
							
								
									7484c0c71d
								
							
						
					
					
						commit
						0232c55b8f
					
				@ -448,3 +448,17 @@ py_test(
 | 
			
		||||
    data = [":gtest_testbridge_test_"],
 | 
			
		||||
    deps = [":gtest_test_utils"],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
py_test(
 | 
			
		||||
    name = "googletest-json-outfiles-test",
 | 
			
		||||
    size = "small",
 | 
			
		||||
    srcs = [
 | 
			
		||||
        "googletest-json-outfiles-test.py",
 | 
			
		||||
        "gtest_json_test_utils.py",
 | 
			
		||||
    ],
 | 
			
		||||
    data = [
 | 
			
		||||
        ":gtest_xml_outfile1_test_",
 | 
			
		||||
        ":gtest_xml_outfile2_test_",
 | 
			
		||||
    ],
 | 
			
		||||
    deps = [":gtest_test_utils"],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										162
									
								
								googletest/test/googletest-json-outfiles-test.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										162
									
								
								googletest/test/googletest-json-outfiles-test.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,162 @@
 | 
			
		||||
#!/usr/bin/env python
 | 
			
		||||
# Copyright 2018, Google Inc.
 | 
			
		||||
# All rights reserved.
 | 
			
		||||
#
 | 
			
		||||
# Redistribution and use in source and binary forms, with or without
 | 
			
		||||
# modification, are permitted provided that the following conditions are
 | 
			
		||||
# met:
 | 
			
		||||
#
 | 
			
		||||
#     * Redistributions of source code must retain the above copyright
 | 
			
		||||
# notice, this list of conditions and the following disclaimer.
 | 
			
		||||
#     * Redistributions in binary form must reproduce the above
 | 
			
		||||
# copyright notice, this list of conditions and the following disclaimer
 | 
			
		||||
# in the documentation and/or other materials provided with the
 | 
			
		||||
# distribution.
 | 
			
		||||
#     * Neither the name of Google Inc. nor the names of its
 | 
			
		||||
# contributors may be used to endorse or promote products derived from
 | 
			
		||||
# this software without specific prior written permission.
 | 
			
		||||
#
 | 
			
		||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 | 
			
		||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 | 
			
		||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 | 
			
		||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 | 
			
		||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 | 
			
		||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 | 
			
		||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 | 
			
		||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 | 
			
		||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | 
			
		||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 | 
			
		||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
 | 
			
		||||
"""Unit test for the gtest_json_output module."""
 | 
			
		||||
 | 
			
		||||
import json
 | 
			
		||||
import os
 | 
			
		||||
import gtest_json_test_utils
 | 
			
		||||
import gtest_test_utils
 | 
			
		||||
 | 
			
		||||
GTEST_OUTPUT_SUBDIR = 'json_outfiles'
 | 
			
		||||
GTEST_OUTPUT_1_TEST = 'gtest_xml_outfile1_test_'
 | 
			
		||||
GTEST_OUTPUT_2_TEST = 'gtest_xml_outfile2_test_'
 | 
			
		||||
 | 
			
		||||
EXPECTED_1 = {
 | 
			
		||||
    u'tests': 1,
 | 
			
		||||
    u'failures': 0,
 | 
			
		||||
    u'disabled': 0,
 | 
			
		||||
    u'errors': 0,
 | 
			
		||||
    u'time': u'*',
 | 
			
		||||
    u'timestamp': u'*',
 | 
			
		||||
    u'name': u'AllTests',
 | 
			
		||||
    u'testsuites': [{
 | 
			
		||||
        u'name': u'PropertyOne',
 | 
			
		||||
        u'tests': 1,
 | 
			
		||||
        u'failures': 0,
 | 
			
		||||
        u'disabled': 0,
 | 
			
		||||
        u'errors': 0,
 | 
			
		||||
        u'time': u'*',
 | 
			
		||||
        u'testsuite': [{
 | 
			
		||||
            u'name': u'TestSomeProperties',
 | 
			
		||||
            u'status': u'RUN',
 | 
			
		||||
            u'time': u'*',
 | 
			
		||||
            u'classname': u'PropertyOne',
 | 
			
		||||
            u'SetUpProp': u'1',
 | 
			
		||||
            u'TestSomeProperty': u'1',
 | 
			
		||||
            u'TearDownProp': u'1',
 | 
			
		||||
        }],
 | 
			
		||||
    }],
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
EXPECTED_2 = {
 | 
			
		||||
    u'tests': 1,
 | 
			
		||||
    u'failures': 0,
 | 
			
		||||
    u'disabled': 0,
 | 
			
		||||
    u'errors': 0,
 | 
			
		||||
    u'time': u'*',
 | 
			
		||||
    u'timestamp': u'*',
 | 
			
		||||
    u'name': u'AllTests',
 | 
			
		||||
    u'testsuites': [{
 | 
			
		||||
        u'name': u'PropertyTwo',
 | 
			
		||||
        u'tests': 1,
 | 
			
		||||
        u'failures': 0,
 | 
			
		||||
        u'disabled': 0,
 | 
			
		||||
        u'errors': 0,
 | 
			
		||||
        u'time': u'*',
 | 
			
		||||
        u'testsuite': [{
 | 
			
		||||
            u'name': u'TestSomeProperties',
 | 
			
		||||
            u'status': u'RUN',
 | 
			
		||||
            u'time': u'*',
 | 
			
		||||
            u'classname': u'PropertyTwo',
 | 
			
		||||
            u'SetUpProp': u'2',
 | 
			
		||||
            u'TestSomeProperty': u'2',
 | 
			
		||||
            u'TearDownProp': u'2',
 | 
			
		||||
        }],
 | 
			
		||||
    }],
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class GTestJsonOutFilesTest(gtest_test_utils.TestCase):
 | 
			
		||||
  """Unit test for Google Test's JSON output functionality."""
 | 
			
		||||
 | 
			
		||||
  def setUp(self):
 | 
			
		||||
    # We want the trailing '/' that the last "" provides in os.path.join, for
 | 
			
		||||
    # telling Google Test to create an output directory instead of a single file
 | 
			
		||||
    # for xml output.
 | 
			
		||||
    self.output_dir_ = os.path.join(gtest_test_utils.GetTempDir(),
 | 
			
		||||
                                    GTEST_OUTPUT_SUBDIR, '')
 | 
			
		||||
    self.DeleteFilesAndDir()
 | 
			
		||||
 | 
			
		||||
  def tearDown(self):
 | 
			
		||||
    self.DeleteFilesAndDir()
 | 
			
		||||
 | 
			
		||||
  def DeleteFilesAndDir(self):
 | 
			
		||||
    try:
 | 
			
		||||
      os.remove(os.path.join(self.output_dir_, GTEST_OUTPUT_1_TEST + '.json'))
 | 
			
		||||
    except os.error:
 | 
			
		||||
      pass
 | 
			
		||||
    try:
 | 
			
		||||
      os.remove(os.path.join(self.output_dir_, GTEST_OUTPUT_2_TEST + '.json'))
 | 
			
		||||
    except os.error:
 | 
			
		||||
      pass
 | 
			
		||||
    try:
 | 
			
		||||
      os.rmdir(self.output_dir_)
 | 
			
		||||
    except os.error:
 | 
			
		||||
      pass
 | 
			
		||||
 | 
			
		||||
  def testOutfile1(self):
 | 
			
		||||
    self._TestOutFile(GTEST_OUTPUT_1_TEST, EXPECTED_1)
 | 
			
		||||
 | 
			
		||||
  def testOutfile2(self):
 | 
			
		||||
    self._TestOutFile(GTEST_OUTPUT_2_TEST, EXPECTED_2)
 | 
			
		||||
 | 
			
		||||
  def _TestOutFile(self, test_name, expected):
 | 
			
		||||
    gtest_prog_path = gtest_test_utils.GetTestExecutablePath(test_name)
 | 
			
		||||
    command = [gtest_prog_path, '--gtest_output=json:%s' % self.output_dir_]
 | 
			
		||||
    p = gtest_test_utils.Subprocess(command,
 | 
			
		||||
                                    working_dir=gtest_test_utils.GetTempDir())
 | 
			
		||||
    self.assert_(p.exited)
 | 
			
		||||
    self.assertEquals(0, p.exit_code)
 | 
			
		||||
 | 
			
		||||
    # TODO(wan@google.com): libtool causes the built test binary to be
 | 
			
		||||
    #   named lt-gtest_xml_outfiles_test_ instead of
 | 
			
		||||
    #   gtest_xml_outfiles_test_.  To account for this possibility, we
 | 
			
		||||
    #   allow both names in the following code.  We should remove this
 | 
			
		||||
    #   hack when Chandler Carruth's libtool replacement tool is ready.
 | 
			
		||||
    output_file_name1 = test_name + '.json'
 | 
			
		||||
    output_file1 = os.path.join(self.output_dir_, output_file_name1)
 | 
			
		||||
    output_file_name2 = 'lt-' + output_file_name1
 | 
			
		||||
    output_file2 = os.path.join(self.output_dir_, output_file_name2)
 | 
			
		||||
    self.assert_(os.path.isfile(output_file1) or os.path.isfile(output_file2),
 | 
			
		||||
                 output_file1)
 | 
			
		||||
 | 
			
		||||
    if os.path.isfile(output_file1):
 | 
			
		||||
      with open(output_file1) as f:
 | 
			
		||||
        actual = json.load(f)
 | 
			
		||||
    else:
 | 
			
		||||
      with open(output_file2) as f:
 | 
			
		||||
        actual = json.load(f)
 | 
			
		||||
    self.assertEqual(expected, gtest_json_test_utils.normalize(actual))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
  os.environ['GTEST_STACK_TRACE_DEPTH'] = '0'
 | 
			
		||||
  gtest_test_utils.Main()
 | 
			
		||||
@ -1,311 +0,0 @@
 | 
			
		||||
// Copyright 2009 Google Inc. All rights reserved.
 | 
			
		||||
//
 | 
			
		||||
// Redistribution and use in source and binary forms, with or without
 | 
			
		||||
// modification, are permitted provided that the following conditions are
 | 
			
		||||
// met:
 | 
			
		||||
//
 | 
			
		||||
//     * Redistributions of source code must retain the above copyright
 | 
			
		||||
// notice, this list of conditions and the following disclaimer.
 | 
			
		||||
//     * Redistributions in binary form must reproduce the above
 | 
			
		||||
// copyright notice, this list of conditions and the following disclaimer
 | 
			
		||||
// in the documentation and/or other materials provided with the
 | 
			
		||||
// distribution.
 | 
			
		||||
//     * Neither the name of Google Inc. nor the names of its
 | 
			
		||||
// contributors may be used to endorse or promote products derived from
 | 
			
		||||
// this software without specific prior written permission.
 | 
			
		||||
//
 | 
			
		||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 | 
			
		||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 | 
			
		||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 | 
			
		||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 | 
			
		||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 | 
			
		||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 | 
			
		||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 | 
			
		||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 | 
			
		||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | 
			
		||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 | 
			
		||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
			
		||||
//
 | 
			
		||||
// Author: vladl@google.com (Vlad Losev)
 | 
			
		||||
//
 | 
			
		||||
// The Google C++ Testing and Mocking Framework (Google Test)
 | 
			
		||||
//
 | 
			
		||||
// This file verifies Google Test event listeners receive events at the
 | 
			
		||||
// right times.
 | 
			
		||||
 | 
			
		||||
#include "gtest/gtest.h"
 | 
			
		||||
#include <vector>
 | 
			
		||||
 | 
			
		||||
using ::testing::AddGlobalTestEnvironment;
 | 
			
		||||
using ::testing::Environment;
 | 
			
		||||
using ::testing::InitGoogleTest;
 | 
			
		||||
using ::testing::Test;
 | 
			
		||||
using ::testing::TestCase;
 | 
			
		||||
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;
 | 
			
		||||
 | 
			
		||||
namespace testing {
 | 
			
		||||
namespace internal {
 | 
			
		||||
 | 
			
		||||
class EventRecordingListener : public TestEventListener {
 | 
			
		||||
 public:
 | 
			
		||||
  explicit EventRecordingListener(const char* name) : name_(name) {}
 | 
			
		||||
 | 
			
		||||
 protected:
 | 
			
		||||
  virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {
 | 
			
		||||
    g_events->push_back(GetFullMethodName("OnTestProgramStart"));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  virtual void OnTestIterationStart(const UnitTest& /*unit_test*/,
 | 
			
		||||
                                    int iteration) {
 | 
			
		||||
    Message message;
 | 
			
		||||
    message << GetFullMethodName("OnTestIterationStart")
 | 
			
		||||
            << "(" << iteration << ")";
 | 
			
		||||
    g_events->push_back(message.GetString());
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {
 | 
			
		||||
    g_events->push_back(GetFullMethodName("OnEnvironmentsSetUpStart"));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {
 | 
			
		||||
    g_events->push_back(GetFullMethodName("OnEnvironmentsSetUpEnd"));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  virtual void OnTestCaseStart(const TestCase& /*test_case*/) {
 | 
			
		||||
    g_events->push_back(GetFullMethodName("OnTestCaseStart"));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  virtual void OnTestStart(const TestInfo& /*test_info*/) {
 | 
			
		||||
    g_events->push_back(GetFullMethodName("OnTestStart"));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {
 | 
			
		||||
    g_events->push_back(GetFullMethodName("OnTestPartResult"));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  virtual void OnTestEnd(const TestInfo& /*test_info*/) {
 | 
			
		||||
    g_events->push_back(GetFullMethodName("OnTestEnd"));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {
 | 
			
		||||
    g_events->push_back(GetFullMethodName("OnTestCaseEnd"));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {
 | 
			
		||||
    g_events->push_back(GetFullMethodName("OnEnvironmentsTearDownStart"));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {
 | 
			
		||||
    g_events->push_back(GetFullMethodName("OnEnvironmentsTearDownEnd"));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/,
 | 
			
		||||
                                  int iteration) {
 | 
			
		||||
    Message message;
 | 
			
		||||
    message << GetFullMethodName("OnTestIterationEnd")
 | 
			
		||||
            << "("  << iteration << ")";
 | 
			
		||||
    g_events->push_back(message.GetString());
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {
 | 
			
		||||
    g_events->push_back(GetFullMethodName("OnTestProgramEnd"));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 private:
 | 
			
		||||
  std::string GetFullMethodName(const char* name) {
 | 
			
		||||
    return name_ + "." + name;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  std::string name_;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class EnvironmentInvocationCatcher : public Environment {
 | 
			
		||||
 protected:
 | 
			
		||||
  virtual void SetUp() {
 | 
			
		||||
    g_events->push_back("Environment::SetUp");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  virtual void TearDown() {
 | 
			
		||||
    g_events->push_back("Environment::TearDown");
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class ListenerTest : public Test {
 | 
			
		||||
 protected:
 | 
			
		||||
  static void SetUpTestCase() {
 | 
			
		||||
    g_events->push_back("ListenerTest::SetUpTestCase");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  static void TearDownTestCase() {
 | 
			
		||||
    g_events->push_back("ListenerTest::TearDownTestCase");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  virtual void SetUp() {
 | 
			
		||||
    g_events->push_back("ListenerTest::SetUp");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  virtual void TearDown() {
 | 
			
		||||
    g_events->push_back("ListenerTest::TearDown");
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
TEST_F(ListenerTest, DoesFoo) {
 | 
			
		||||
  // Test execution order within a test case is not guaranteed so we are not
 | 
			
		||||
  // recording the test name.
 | 
			
		||||
  g_events->push_back("ListenerTest::* Test Body");
 | 
			
		||||
  SUCCEED();  // Triggers OnTestPartResult.
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(ListenerTest, DoesBar) {
 | 
			
		||||
  g_events->push_back("ListenerTest::* Test Body");
 | 
			
		||||
  SUCCEED();  // Triggers OnTestPartResult.
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
}  // namespace internal
 | 
			
		||||
 | 
			
		||||
}  // namespace testing
 | 
			
		||||
 | 
			
		||||
using ::testing::internal::EnvironmentInvocationCatcher;
 | 
			
		||||
using ::testing::internal::EventRecordingListener;
 | 
			
		||||
 | 
			
		||||
void VerifyResults(const std::vector<std::string>& data,
 | 
			
		||||
                   const char* const* expected_data,
 | 
			
		||||
                   size_t expected_data_size) {
 | 
			
		||||
  const size_t actual_size = data.size();
 | 
			
		||||
  // If the following assertion fails, a new entry will be appended to
 | 
			
		||||
  // data.  Hence we save data.size() first.
 | 
			
		||||
  EXPECT_EQ(expected_data_size, actual_size);
 | 
			
		||||
 | 
			
		||||
  // Compares the common prefix.
 | 
			
		||||
  const size_t shorter_size = expected_data_size <= actual_size ?
 | 
			
		||||
      expected_data_size : actual_size;
 | 
			
		||||
  size_t i = 0;
 | 
			
		||||
  for (; i < shorter_size; ++i) {
 | 
			
		||||
    ASSERT_STREQ(expected_data[i], data[i].c_str())
 | 
			
		||||
        << "at position " << i;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Prints extra elements in the actual data.
 | 
			
		||||
  for (; i < actual_size; ++i) {
 | 
			
		||||
    printf("  Actual event #%lu: %s\n",
 | 
			
		||||
        static_cast<unsigned long>(i), data[i].c_str());
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main(int argc, char **argv) {
 | 
			
		||||
  std::vector<std::string> events;
 | 
			
		||||
  g_events = &events;
 | 
			
		||||
  InitGoogleTest(&argc, argv);
 | 
			
		||||
 | 
			
		||||
  UnitTest::GetInstance()->listeners().Append(
 | 
			
		||||
      new EventRecordingListener("1st"));
 | 
			
		||||
  UnitTest::GetInstance()->listeners().Append(
 | 
			
		||||
      new EventRecordingListener("2nd"));
 | 
			
		||||
 | 
			
		||||
  AddGlobalTestEnvironment(new EnvironmentInvocationCatcher);
 | 
			
		||||
 | 
			
		||||
  GTEST_CHECK_(events.size() == 0)
 | 
			
		||||
      << "AddGlobalTestEnvironment should not generate any events itself.";
 | 
			
		||||
 | 
			
		||||
  ::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"
 | 
			
		||||
  };
 | 
			
		||||
  VerifyResults(events,
 | 
			
		||||
                expected_events,
 | 
			
		||||
                sizeof(expected_events)/sizeof(expected_events[0]));
 | 
			
		||||
 | 
			
		||||
  // We need to check manually for ad hoc test failures that happen after
 | 
			
		||||
  // RUN_ALL_TESTS finishes.
 | 
			
		||||
  if (UnitTest::GetInstance()->Failed())
 | 
			
		||||
    ret_val = 1;
 | 
			
		||||
 | 
			
		||||
  return ret_val;
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user