diff options
author | Tom Hughes <tomhughes@google.com> | 2023-02-02 17:31:10 (GMT) |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2023-02-02 17:31:44 (GMT) |
commit | deaf5615f18dd3b051006ba7326e2a976f5dff46 (patch) | |
tree | 5b9e60a5421cfbbce158adc605c44439ecee19e0 /googletest | |
parent | 4f7c63d991824b8034a81a0dd91f8b90a20d7806 (diff) | |
download | googletest-deaf5615f18dd3b051006ba7326e2a976f5dff46.zip googletest-deaf5615f18dd3b051006ba7326e2a976f5dff46.tar.gz googletest-deaf5615f18dd3b051006ba7326e2a976f5dff46.tar.bz2 |
Fix -Wsign-conversion warnings
googletest/test/gtest_xml_outfile2_test_.cc:48:39:
warning: implicit conversion turns floating-point number into integer:
'float' to 'int64_t' (aka 'long') [-Wfloat-conversion]
RecordProperty("TestFloatProperty", float_prop);
~~~~~~~~~~~~~~ ^~~~~~~~~~
googletest/test/gtest_xml_outfile2_test_.cc:51:40:
warning: implicit conversion turns floating-point number into integer:
'double' to 'int64_t' (aka 'long') [-Wfloat-conversion]
RecordProperty("TestDoubleProperty", double_prop);
~~~~~~~~~~~~~~ ^~~~~~~~~~~
googletest/test/gtest_xml_outfile2_test_.cc:57:39:
warning: implicit conversion changes signedness:
'size_t' (aka 'unsigned long') to 'int64_t' (aka 'long') [-Wsign-conversion]
RecordProperty("TestSizetProperty", size_t_prop);
~~~~~~~~~~~~~~ ^~~~~~~~~~~
PiperOrigin-RevId: 506644143
Change-Id: I9c2cd5f52daebe25e73bb97f696687797ed2cabf
Diffstat (limited to 'googletest')
-rw-r--r-- | googletest/include/gtest/gtest.h | 8 | ||||
-rw-r--r-- | googletest/src/gtest.cc | 5 | ||||
-rw-r--r-- | googletest/test/googletest-json-outfiles-test.py | 9 | ||||
-rw-r--r-- | googletest/test/gtest_xml_outfile2_test_.cc | 35 | ||||
-rwxr-xr-x | googletest/test/gtest_xml_outfiles_test.py | 9 |
5 files changed, 50 insertions, 16 deletions
diff --git a/googletest/include/gtest/gtest.h b/googletest/include/gtest/gtest.h index f99df35..35c0802 100644 --- a/googletest/include/gtest/gtest.h +++ b/googletest/include/gtest/gtest.h @@ -297,7 +297,13 @@ class GTEST_API_ Test { // SetUp/TearDown method of Environment objects registered with Google // Test) will be output as attributes of the <testsuites> element. static void RecordProperty(const std::string& key, const std::string& value); - static void RecordProperty(const std::string& key, int64_t value); + // We do not define a custom serialization except for values that can be + // converted to int64_t, but other values could be logged in this way. + template <typename T, std::enable_if_t<std::is_convertible<T, int64_t>::value, + bool> = true> + static void RecordProperty(const std::string& key, const T& value) { + RecordProperty(key, (Message() << static_cast<int64_t>(value)).GetString()); + } protected: // Creates a Test object. diff --git a/googletest/src/gtest.cc b/googletest/src/gtest.cc index b928943..f79f915 100644 --- a/googletest/src/gtest.cc +++ b/googletest/src/gtest.cc @@ -2459,11 +2459,6 @@ void Test::TearDown() {} void Test::RecordProperty(const std::string& key, const std::string& value) { UnitTest::GetInstance()->RecordProperty(key, value); } -// We do not define a customary serialization except for integers, -// but other values could be logged in this way. -void Test::RecordProperty(const std::string& key, int64_t value) { - RecordProperty(key, (Message() << value).GetString()); -} namespace internal { diff --git a/googletest/test/googletest-json-outfiles-test.py b/googletest/test/googletest-json-outfiles-test.py index 3387b1e..83a56de 100644 --- a/googletest/test/googletest-json-outfiles-test.py +++ b/googletest/test/googletest-json-outfiles-test.py @@ -88,7 +88,7 @@ EXPECTED_2 = { 'time': '*', 'timestamp': '*', 'testsuite': [{ - 'name': 'TestSomeProperties', + 'name': 'TestInt64Properties', 'file': 'gtest_xml_outfile2_test_.cc', 'line': 41, 'status': 'RUN', @@ -100,6 +100,13 @@ EXPECTED_2 = { 'TestFloatProperty': '3', 'TestDoubleProperty': '4', 'TestSizetProperty': '5', + 'TestBoolProperty': '1', + 'TestCharProperty': '65', + 'TestInt16Property': '6', + 'TestInt32Property': '7', + 'TestInt64Property': '8', + 'TestEnumProperty': '9', + 'TestAtomicIntProperty': '10', 'TearDownProp': '2', }], }], diff --git a/googletest/test/gtest_xml_outfile2_test_.cc b/googletest/test/gtest_xml_outfile2_test_.cc index 047d3f6..5ee216d 100644 --- a/googletest/test/gtest_xml_outfile2_test_.cc +++ b/googletest/test/gtest_xml_outfile2_test_.cc @@ -38,21 +38,40 @@ class PropertyTwo : public testing::Test { void TearDown() override { RecordProperty("TearDownProp", 2); } }; -TEST_F(PropertyTwo, TestSomeProperties) { -// 'initializing': conversion from 'int' to 'short', possible loss of data - GTEST_DISABLE_MSC_WARNINGS_PUSH_(4244) - - // Floats and doubles are written as int64_t, since RecordProperty takes an - // int64_t, so we test that the values written are truncated to int64_t. +TEST_F(PropertyTwo, TestInt64Properties) { + // Floats and doubles are written as int64_t, so we test that the values + // written are truncated to int64_t. float float_prop = 3.25; RecordProperty("TestFloatProperty", float_prop); double double_prop = 4.75; RecordProperty("TestDoubleProperty", double_prop); - GTEST_DISABLE_MSC_WARNINGS_POP_() // 4244 - // Validate we can write an unsigned size_t as a property size_t size_t_prop = 5; RecordProperty("TestSizetProperty", size_t_prop); + + bool bool_prop = true; + RecordProperty("TestBoolProperty", bool_prop); + + char char_prop = 'A'; + RecordProperty("TestCharProperty", char_prop); + + int16_t int16_prop = 6; + RecordProperty("TestInt16Property", int16_prop); + + int32_t int32_prop = 7; + RecordProperty("TestInt32Property", int32_prop); + + int64_t int64_prop = 8; + RecordProperty("TestInt64Property", int64_prop); + + enum Foo { + NINE = 9, + }; + Foo enum_prop = NINE; + RecordProperty("TestEnumProperty", enum_prop); + + std::atomic<int> atomic_int_prop(10); + RecordProperty("TestAtomicIntProperty", atomic_int_prop); } diff --git a/googletest/test/gtest_xml_outfiles_test.py b/googletest/test/gtest_xml_outfiles_test.py index de6794f..7ee0f3c 100755 --- a/googletest/test/gtest_xml_outfiles_test.py +++ b/googletest/test/gtest_xml_outfiles_test.py @@ -57,12 +57,19 @@ EXPECTED_XML_1 = """<?xml version="1.0" encoding="UTF-8"?> EXPECTED_XML_2 = """<?xml version="1.0" encoding="UTF-8"?> <testsuites tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*" name="AllTests"> <testsuite name="PropertyTwo" tests="1" failures="0" skipped="0" disabled="0" errors="0" time="*" timestamp="*"> - <testcase name="TestSomeProperties" file="gtest_xml_outfile2_test_.cc" line="41" status="run" result="completed" time="*" timestamp="*" classname="PropertyTwo"> + <testcase name="TestInt64Properties" file="gtest_xml_outfile2_test_.cc" line="41" status="run" result="completed" time="*" timestamp="*" classname="PropertyTwo"> <properties> <property name="SetUpProp" value="2"/> <property name="TestFloatProperty" value="3"/> <property name="TestDoubleProperty" value="4"/> <property name="TestSizetProperty" value="5"/> + <property name="TestBoolProperty" value="1"/> + <property name="TestCharProperty" value="65"/> + <property name="TestInt16Property" value="6"/> + <property name="TestInt32Property" value="7"/> + <property name="TestInt64Property" value="8"/> + <property name="TestEnumProperty" value="9"/> + <property name="TestAtomicIntProperty" value="10"/> <property name="TearDownProp" value="2"/> </properties> </testcase> |