summaryrefslogtreecommitdiffstats
path: root/googletest/test
diff options
context:
space:
mode:
authorDavid Schuldenfrei <david.schuldenfrei@gmail.com>2018-08-27 15:55:01 (GMT)
committerGennadiy Civil <misterg@google.com>2018-08-27 16:22:33 (GMT)
commit603ce4b81df48a268b84d0e4f2b999b89b903250 (patch)
treeb1ae525fe5312513b29883ad4ae8c6ed2f3e6e27 /googletest/test
parenta0e62d9f1a5f24cbc9d16bb9d1c4b606e960b2af (diff)
downloadgoogletest-603ce4b81df48a268b84d0e4f2b999b89b903250.zip
googletest-603ce4b81df48a268b84d0e4f2b999b89b903250.tar.gz
googletest-603ce4b81df48a268b84d0e4f2b999b89b903250.tar.bz2
Merge 72a2836945e7a3dcee0730166704587e10bf64ee into 1d9a1912e7f42e8ae66ea365b5b8508fecb31509
Closes #1658 Review and changes, mister@google.com PiperOrigin-RevId: 210374286
Diffstat (limited to 'googletest/test')
-rw-r--r--googletest/test/gtest_list_output_unittest.py141
-rw-r--r--googletest/test/gtest_list_output_unittest_.cc51
-rw-r--r--googletest/test/gtest_unittest.cc4
3 files changed, 194 insertions, 2 deletions
diff --git a/googletest/test/gtest_list_output_unittest.py b/googletest/test/gtest_list_output_unittest.py
new file mode 100644
index 0000000..3bba7ea
--- /dev/null
+++ b/googletest/test/gtest_list_output_unittest.py
@@ -0,0 +1,141 @@
+#!/usr/bin/env python
+#
+# Copyright 2006, 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 Google Test's --gtest_list_tests flag.
+
+A user can ask Google Test to list all tests by specifying the
+--gtest_list_tests flag. If output is requested, via --gtest_output=xml
+or --gtest_output=json, the tests are listed, with extra information in the
+output file.
+This script tests such functionality by invoking gtest_list_output_unittest_
+ (a program written with Google Test) the command line flags.
+"""
+
+import os
+import re
+import gtest_test_utils
+
+GTEST_LIST_TESTS_FLAG = '--gtest_list_tests'
+GTEST_OUTPUT_FLAG = '--gtest_output'
+
+EXPECTED_XML = """<\?xml version="1.0" encoding="UTF-8"\?>
+<testsuites tests="2" name="AllTests">
+ <testsuite name="FooTest" tests="2">
+ <testcase name="Test1" file=".*gtest_list_output_unittest_.cc" line="43" />
+ <testcase name="Test2" file=".*gtest_list_output_unittest_.cc" line="45" />
+ </testsuite>
+</testsuites>
+"""
+
+EXPECTED_JSON = """{
+ "tests": 2,
+ "name": "AllTests",
+ "testsuites": \[
+ {
+ "name": "FooTest",
+ "tests": 2,
+ "testsuite": \[
+ {
+ "name": "Test1",
+ "file": ".*gtest_list_output_unittest_.cc",
+ "line": 43
+ },
+ {
+ "name": "Test2",
+ "file": ".*gtest_list_output_unittest_.cc",
+ "line": 45
+ }
+ \]
+ }
+ \]
+}
+"""
+
+
+class GTestListTestsOutputUnitTest(gtest_test_utils.TestCase):
+ """Unit test for Google Test's list tests with output to file functionality.
+ """
+
+ def testXml(self):
+ """Verifies XML output for listing tests in a Google Test binary.
+
+ Runs a test program that generates an empty XML output, and
+ tests that the XML output is expected.
+ """
+ self._TestOutput('xml', EXPECTED_XML)
+
+ def testJSON(self):
+ """Verifies XML output for listing tests in a Google Test binary.
+
+ Runs a test program that generates an empty XML output, and
+ tests that the XML output is expected.
+ """
+ self._TestOutput('json', EXPECTED_JSON)
+
+ def _GetOutput(self, out_format):
+ file_path = os.path.join(gtest_test_utils.GetTempDir(),
+ 'test_out.' + out_format)
+ gtest_prog_path = gtest_test_utils.GetTestExecutablePath(
+ 'gtest_list_output_unittest_')
+
+ command = ([
+ gtest_prog_path,
+ '%s=%s:%s' % (GTEST_OUTPUT_FLAG, out_format, file_path),
+ '--gtest_list_tests'
+ ])
+ environ_copy = os.environ.copy()
+ p = gtest_test_utils.Subprocess(
+ command, env=environ_copy, working_dir=gtest_test_utils.GetTempDir())
+
+ self.assert_(p.exited)
+ self.assertEquals(0, p.exit_code)
+ with open(file_path) as f:
+ result = f.read()
+ return result
+
+ def _TestOutput(self, test_format, expected_output):
+ actual = self._GetOutput(test_format)
+ actual_lines = actual.splitlines()
+ expected_lines = expected_output.splitlines()
+ line_count = 0
+ for actual_line in actual_lines:
+ expected_line = expected_lines[line_count]
+ expected_line_re = re.compile(expected_line.strip())
+ self.assert_(
+ expected_line_re.match(actual_line.strip()),
+ ('actual output of "%s",\n'
+ 'which does not match expected regex of "%s"\n'
+ 'on line %d' % (actual, expected_output, line_count)))
+ line_count = line_count + 1
+
+
+if __name__ == '__main__':
+ os.environ['GTEST_STACK_TRACE_DEPTH'] = '1'
+ gtest_test_utils.Main()
diff --git a/googletest/test/gtest_list_output_unittest_.cc b/googletest/test/gtest_list_output_unittest_.cc
new file mode 100644
index 0000000..b1c7b4d
--- /dev/null
+++ b/googletest/test/gtest_list_output_unittest_.cc
@@ -0,0 +1,51 @@
+// 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.
+//
+// Author: david.schuldenfrei@gmail.com (David Schuldenfrei)
+
+// Unit test for Google Test's --gtest_list_tests and --gtest_output flag.
+//
+// A user can ask Google Test to list all tests that will run,
+// and have the output saved in a Json/Xml file.
+// The tests will not be run after listing.
+//
+// This program will be invoked from a Python unit test.
+// Don't run it directly.
+
+#include "gtest/gtest.h"
+
+TEST(FooTest, Test1) {}
+
+TEST(FooTest, Test2) {}
+
+int main(int argc, char **argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+
+ return RUN_ALL_TESTS();
+}
diff --git a/googletest/test/gtest_unittest.cc b/googletest/test/gtest_unittest.cc
index e1c30f3..f7213fb 100644
--- a/googletest/test/gtest_unittest.cc
+++ b/googletest/test/gtest_unittest.cc
@@ -2090,8 +2090,8 @@ TEST_F(UnitTestRecordPropertyTest,
AddRecordWithReservedKeysGeneratesCorrectPropertyList) {
EXPECT_NONFATAL_FAILURE(
Test::RecordProperty("name", "1"),
- "'classname', 'name', 'status', 'time', 'type_param', and 'value_param'"
- " are reserved");
+ "'classname', 'name', 'status', 'time', 'type_param', 'value_param',"
+ " 'file', and 'line' are reserved");
}
class UnitTestRecordPropertyTestEnvironment : public Environment {