google / googletest

GoogleTest - Google Testing and Mocking Framework
https://google.github.io/googletest/
BSD 3-Clause "New" or "Revised" License
34.93k stars 10.16k forks source link

[Bug]: ASSERT_EQ / ASSERT_NE causes MSVC 4388 / 4389 warnings #4610

Open peakschris opened 2 months ago

peakschris commented 2 months ago

Describe the issue

Our users are writing the code:

ASSERT_EQ( myvec.size(), 1 );
ASSERT_NE( myvec.size(), 1 );

And, with /Wall on MSVC 19.17, we are getting C4388 and C4389 warnings - signed / unsigned mismatch

I'd rather not train all our users to write ASSERT_EQ( myvec.size(), 1u ).

The developers who are attentive to warnings are rewriting their asserts as ASSERT_TRUE( myvec.size() == 1 ) or ASSERT_EQ( (int)myvec.size(), 1 ), both of which feel ugly.

Can these warnings be disabled inside the macro implementations? Happy to contribute a PR if it would help. I notice that others have raised the same issue for linux.

Steps to reproduce the problem

na

What version of GoogleTest are you using?

na

What operating system and version are you using?

Windows 10, redhat 8

What compiler and version are you using?

MSVC 19.17

What build system are you using?

bazel 7.3.1

Additional context

I see these related issues: https://github.com/google/googletest/issues/1026 https://groups.google.com/g/googletestframework/c/xrGel-uytJg