Make generating goldens work with Python 3
golden_file.write(output) fails with Python 3 with:
TypeError: a bytes-like object is required, not 'str'
PiperOrigin-RevId: 282316101
Use standard C++11 integer types in gtest-port.h.
Remove testing::internal::{Int,Uint}{32,64} in favor of types
guaranteed to be in <cstdint> since C++11.
Tests for built-in integer type coverage are switched from
{Int,Uint}64 to [unsigned] long long, which is guaranteed by
C++11 to exist and be at least 64-bit wide.
PiperOrigin-RevId: 281565263
Add a breadcrumb about nullopt comparison near the Optional() matcher.
Also add a note about how otherwise-spurious 'Eq()' may be needed in some cases. Without this, something like Field(&MyStruct::optional_field_without_equals_equals, absl::nullopt) doesn't work - it converts the nullopt to an optional<> of the non-equalable type, and fails to select the operator==(optional<>, nullopt_t) overload. The Eq() lets the type persist later into the match.
PiperOrigin-RevId: 281305519
We use "MemoryIsNotDeallocated" to aovid internal expected leak reported
in Windows _Crt report, like:
{
#ifdef _MSC_VER
MemoryIsNotDeallocated memory_is_not_deeallocated;
#endif
static ThreadIdToThreadLocals* map = new
ThreadIdToThreadLocals();
return map;
}
But int the above code, only "new ThreadIdToThreadLocals()" is
protected, if we invoke "insert()" function of the return value,
the memory allocated in "insert()" will be reported to _Crt report
also. This change try to fix this issue.
googletest 1.10.0 fails to compile on msvc version 19.00.23917
with one compilation error:
src\googletest\include\gtest\internal\gtest-internal.h(1188) : error C2039:
'FlatTupleBase<testing::internal::FlatTuple<bool,bool>,testing::internal::IndexSequence<0,1> >':
is not a member of 'testing::internal::FlatTuple<bool,bool>'
This PR fixes the compilation error by explicitly specifying the full type that Indices is
located in the base type.
Correctly deal with stringification, and forbid empty arguments where they could slip thought, in the type parameterized test API.
Note: even where empty args work, it's likely to result in technically invalid code by virtue of creating reserved identifiers:
https://en.cppreference.com/w/cpp/language/identifiers
PiperOrigin-RevId: 279330971
Clone+exec death test allocates a single page of stack to run chdir + exec on.
This is not enough when gtest is built with ASan and run on particular
hardware.
With ASan on x86_64, ExecDeathTestChildMain has frame size of 1728 bytes.
Call to chdir() in ExecDeathTestChildMain ends up in
_dl_runtime_resolve_xsavec, which attempts to save register state on the stack;
according to cpuid(0xd) XSAVE register save area size is 2568 on my machine.
This results in something like this in all death tests:
Result: died but not with expected error.
...
[ DEATH ] AddressSanitizer:DEADLYSIGNAL
[ DEATH ] =================================================================
[ DEATH ] ==178637==ERROR: AddressSanitizer: stack-overflow on address ...
PiperOrigin-RevId: 278709790
Remove the threads link library variable references from the pkg-config
Cflags: field, removing -lpthread(s) from the compile flags.
"-l*" linker flags should only be part of the Libs: section and should
not be part of the Cflags: section in pkg-config files.
This was first suggested in
https://github.com/google/googletest/pull/2006 and further discussed in
https://github.com/google/googletest/pull/2483 .
Avoid temporary matcher instances.
They are unnecessary and can be relatively more expensive than the rest of the
algorithm.
PiperOrigin-RevId: 277084853