Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
yangql
googletest
Commits
9d77e63e
Commit
9d77e63e
authored
Aug 17, 2018
by
Tanzinul Islam
Browse files
Merge branch 'master' into fix_death_test_child_mingw_wer_issue1116
parents
1cd979a8
e82d3205
Changes
183
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
337 additions
and
174 deletions
+337
-174
googletest/samples/sample7_unittest.cc
googletest/samples/sample7_unittest.cc
+1
-2
googletest/samples/sample8_unittest.cc
googletest/samples/sample8_unittest.cc
+1
-2
googletest/samples/sample9_unittest.cc
googletest/samples/sample9_unittest.cc
+1
-2
googletest/src/gtest-all.cc
googletest/src/gtest-all.cc
+1
-2
googletest/src/gtest-death-test.cc
googletest/src/gtest-death-test.cc
+61
-22
googletest/src/gtest-filepath.cc
googletest/src/gtest-filepath.cc
+2
-2
googletest/src/gtest-internal-inl.h
googletest/src/gtest-internal-inl.h
+2
-5
googletest/src/gtest-port.cc
googletest/src/gtest-port.cc
+50
-9
googletest/src/gtest-printers.cc
googletest/src/gtest-printers.cc
+2
-3
googletest/src/gtest-test-part.cc
googletest/src/gtest-test-part.cc
+1
-2
googletest/src/gtest-typed-test.cc
googletest/src/gtest-typed-test.cc
+1
-2
googletest/src/gtest.cc
googletest/src/gtest.cc
+20
-19
googletest/src/gtest_main.cc
googletest/src/gtest_main.cc
+0
-1
googletest/test/BUILD.bazel
googletest/test/BUILD.bazel
+175
-74
googletest/test/googletest-break-on-failure-unittest.py
googletest/test/googletest-break-on-failure-unittest.py
+4
-6
googletest/test/googletest-break-on-failure-unittest_.cc
googletest/test/googletest-break-on-failure-unittest_.cc
+1
-2
googletest/test/googletest-catch-exceptions-test.py
googletest/test/googletest-catch-exceptions-test.py
+6
-8
googletest/test/googletest-catch-exceptions-test_.cc
googletest/test/googletest-catch-exceptions-test_.cc
+5
-5
googletest/test/googletest-color-test.py
googletest/test/googletest-color-test.py
+2
-4
googletest/test/googletest-color-test_.cc
googletest/test/googletest-color-test_.cc
+1
-2
No files found.
googletest/samples/sample7_unittest.cc
View file @
9d77e63e
...
...
@@ -26,8 +26,7 @@
// 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)
// This sample shows how to test common properties of multiple
// implementations of an interface (aka interface tests) using
...
...
googletest/samples/sample8_unittest.cc
View file @
9d77e63e
...
...
@@ -26,8 +26,7 @@
// 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)
// This sample shows how to test code relying on some global flag variables.
// Combine() helps with generating all possible combinations of such flags,
...
...
googletest/samples/sample9_unittest.cc
View file @
9d77e63e
...
...
@@ -25,8 +25,7 @@
// 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)
// This sample shows how to use Google Test listener API to implement
// an alternative console output and how to use the UnitTest reflection API
...
...
googletest/src/gtest-all.cc
View file @
9d77e63e
...
...
@@ -26,8 +26,7 @@
// 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: mheule@google.com (Markus Heule)
//
// Google C++ Testing and Mocking Framework (Google Test)
//
...
...
googletest/src/gtest-death-test.cc
View file @
9d77e63e
...
...
@@ -26,8 +26,7 @@
// 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: wan@google.com (Zhanyong Wan), vladl@google.com (Vlad Losev)
//
// This file implements death tests.
...
...
@@ -67,6 +66,7 @@
# include <lib/fdio/spawn.h>
# include <zircon/processargs.h>
# include <zircon/syscalls.h>
# include <zircon/syscalls/port.h>
# endif // GTEST_OS_FUCHSIA
#endif // GTEST_HAS_DEATH_TEST
...
...
@@ -232,10 +232,16 @@ static std::string DeathTestThreadWarning(size_t thread_count) {
Message
msg
;
msg
<<
"Death tests use fork(), which is unsafe particularly"
<<
" in a threaded context. For this test, "
<<
GTEST_NAME_
<<
" "
;
if
(
thread_count
==
0
)
if
(
thread_count
==
0
)
{
msg
<<
"couldn't detect the number of threads."
;
else
}
else
{
msg
<<
"detected "
<<
thread_count
<<
" threads."
;
}
msg
<<
" See "
"https://github.com/google/googletest/blob/master/googletest/docs/"
"advanced.md#death-tests-and-threads"
<<
" for more explanation and suggested solutions, especially if"
<<
" this is the last message you see before your test times out."
;
return
msg
.
GetString
();
}
# endif // !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
...
...
@@ -260,7 +266,7 @@ static const int kFuchsiaReadPipeFd = 3;
// statement, which is not allowed; THREW means that the test statement
// returned control by throwing an exception. IN_PROGRESS means the test
// has not yet concluded.
//
TODO(vladl@google.com)
: Unify names and possibly values for
//
FIXME
: Unify names and possibly values for
// AbortReason, DeathTestOutcome, and flag characters above.
enum
DeathTestOutcome
{
IN_PROGRESS
,
DIED
,
LIVED
,
RETURNED
,
THREW
};
...
...
@@ -575,7 +581,6 @@ bool DeathTestImpl::Passed(bool status_ok) {
if
(
status_ok
)
{
# if GTEST_USES_PCRE
// PCRE regexes support embedded NULs.
// GTEST_USES_PCRE is defined only in google3 mode
const
bool
matched
=
RE
::
PartialMatch
(
error_message
,
*
regex
());
# else
const
bool
matched
=
RE
::
PartialMatch
(
error_message
.
c_str
(),
*
regex
());
...
...
@@ -805,6 +810,12 @@ class FuchsiaDeathTest : public DeathTestImpl {
const
char
*
file
,
int
line
)
:
DeathTestImpl
(
a_statement
,
a_regex
),
file_
(
file
),
line_
(
line
)
{}
virtual
~
FuchsiaDeathTest
()
{
zx_status_t
status
=
zx_handle_close
(
child_process_
);
GTEST_DEATH_TEST_CHECK_
(
status
==
ZX_OK
);
status
=
zx_handle_close
(
port_
);
GTEST_DEATH_TEST_CHECK_
(
status
==
ZX_OK
);
}
// All of these virtual functions are inherited from DeathTest.
virtual
int
Wait
();
...
...
@@ -816,7 +827,8 @@ class FuchsiaDeathTest : public DeathTestImpl {
// The line number on which the death test is located.
const
int
line_
;
zx_handle_t
child_process_
;
zx_handle_t
child_process_
=
ZX_HANDLE_INVALID
;
zx_handle_t
port_
=
ZX_HANDLE_INVALID
;
};
// Utility class for accumulating command-line arguments.
...
...
@@ -863,16 +875,38 @@ int FuchsiaDeathTest::Wait() {
if
(
!
spawned
())
return
0
;
//
W
ait for child process to terminate.
//
Register to w
ait for
the
child process to terminate.
zx_status_t
status_zx
;
zx_signals_t
signals
;
status_zx
=
zx_object_wait_one
(
child_process_
,
ZX_PROCESS_TERMINATED
,
ZX_TIME_INFINITE
,
&
signals
);
status_zx
=
zx_object_wait_async
(
child_process_
,
port_
,
0
/* key */
,
ZX_PROCESS_TERMINATED
,
ZX_WAIT_ASYNC_ONCE
);
GTEST_DEATH_TEST_CHECK_
(
status_zx
==
ZX_OK
);
// Wait for it to terminate, or an exception to be received.
zx_port_packet_t
packet
;
status_zx
=
zx_port_wait
(
port_
,
ZX_TIME_INFINITE
,
&
packet
);
GTEST_DEATH_TEST_CHECK_
(
status_zx
==
ZX_OK
);
if
(
ZX_PKT_IS_EXCEPTION
(
packet
.
type
))
{
// Process encountered an exception. Kill it directly rather than letting
// other handlers process the event.
status_zx
=
zx_task_kill
(
child_process_
);
GTEST_DEATH_TEST_CHECK_
(
status_zx
==
ZX_OK
);
// Now wait for |child_process_| to terminate.
zx_signals_t
signals
=
0
;
status_zx
=
zx_object_wait_one
(
child_process_
,
ZX_PROCESS_TERMINATED
,
ZX_TIME_INFINITE
,
&
signals
);
GTEST_DEATH_TEST_CHECK_
(
status_zx
==
ZX_OK
);
GTEST_DEATH_TEST_CHECK_
(
signals
&
ZX_PROCESS_TERMINATED
);
}
else
{
// Process terminated.
GTEST_DEATH_TEST_CHECK_
(
ZX_PKT_IS_SIGNAL_ONE
(
packet
.
type
));
GTEST_DEATH_TEST_CHECK_
(
packet
.
signal
.
observed
&
ZX_PROCESS_TERMINATED
);
}
ReadAndInterpretStatusByte
();
zx_info_process_t
buffer
;
...
...
@@ -936,13 +970,10 @@ DeathTest::TestRole FuchsiaDeathTest::AssumeRole() {
set_read_fd
(
status
);
// Set the pipe handle for the child.
fdio_spawn_action_t
add_handle_action
=
{
.
action
=
FDIO_SPAWN_ACTION_ADD_HANDLE
,
.
h
=
{
.
id
=
PA_HND
(
type
,
kFuchsiaReadPipeFd
),
.
handle
=
child_pipe_handle
}
};
fdio_spawn_action_t
add_handle_action
=
{};
add_handle_action
.
action
=
FDIO_SPAWN_ACTION_ADD_HANDLE
;
add_handle_action
.
h
.
id
=
PA_HND
(
type
,
kFuchsiaReadPipeFd
);
add_handle_action
.
h
.
handle
=
child_pipe_handle
;
// Spawn the child process.
status
=
fdio_spawn_etc
(
ZX_HANDLE_INVALID
,
FDIO_SPAWN_CLONE_ALL
,
...
...
@@ -950,6 +981,14 @@ DeathTest::TestRole FuchsiaDeathTest::AssumeRole() {
&
add_handle_action
,
&
child_process_
,
nullptr
);
GTEST_DEATH_TEST_CHECK_
(
status
==
ZX_OK
);
// Create an exception port and attach it to the |child_process_|, to allow
// us to suppress the system default exception handler from firing.
status
=
zx_port_create
(
0
,
&
port_
);
GTEST_DEATH_TEST_CHECK_
(
status
==
ZX_OK
);
status
=
zx_task_bind_exception_port
(
child_process_
,
port_
,
0
/* key */
,
0
/*options */
);
GTEST_DEATH_TEST_CHECK_
(
status
==
ZX_OK
);
set_spawned
(
true
);
return
OVERSEE_TEST
;
}
...
...
@@ -1419,7 +1458,7 @@ static int GetStatusFileDescriptor(unsigned int parent_process_id,
StreamableToString
(
parent_process_id
));
}
//
TODO(vladl@google.com)
: Replace the following check with a
//
FIXME
: Replace the following check with a
// compile-time assertion when available.
GTEST_CHECK_
(
sizeof
(
HANDLE
)
<=
sizeof
(
size_t
));
...
...
googletest/src/gtest-filepath.cc
View file @
9d77e63e
...
...
@@ -250,7 +250,7 @@ bool FilePath::DirectoryExists() const {
// root directory per disk drive.)
bool
FilePath
::
IsRootDirectory
()
const
{
#if GTEST_OS_WINDOWS
//
TODO(wan@google.com)
: on Windows a network share like
//
FIXME
: on Windows a network share like
// \\server\share can be a root directory, although it cannot be the
// current directory. Handle this properly.
return
pathname_
.
length
()
==
3
&&
IsAbsolutePath
();
...
...
@@ -350,7 +350,7 @@ FilePath FilePath::RemoveTrailingPathSeparator() const {
// Removes any redundant separators that might be in the pathname.
// For example, "bar///foo" becomes "bar/foo". Does not eliminate other
// redundancies that might be in a pathname involving "." or "..".
//
TODO(wan@google.com)
: handle Windows network shares (e.g. \\server\share).
//
FIXME
: handle Windows network shares (e.g. \\server\share).
void
FilePath
::
Normalize
()
{
if
(
pathname_
.
c_str
()
==
NULL
)
{
pathname_
=
""
;
...
...
googletest/src/gtest-internal-inl.h
View file @
9d77e63e
...
...
@@ -27,10 +27,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Utility functions and classes used by the Google C++ testing framework.
//
// Author: wan@google.com (Zhanyong Wan)
//
// Utility functions and classes used by the Google C++ testing framework.//
// This file contains purely Google Test's internal implementation. Please
// DO NOT #INCLUDE IT IN A USER PROGRAM.
...
...
@@ -994,7 +991,7 @@ bool ParseNaturalNumber(const ::std::string& str, Integer* number) {
const
bool
parse_success
=
*
end
==
'\0'
&&
errno
==
0
;
//
TODO(vladl@google.com)
: Convert this to compile time assertion when it is
//
FIXME
: Convert this to compile time assertion when it is
// available.
GTEST_CHECK_
(
sizeof
(
Integer
)
<=
sizeof
(
parsed
));
...
...
googletest/src/gtest-port.cc
View file @
9d77e63e
...
...
@@ -26,8 +26,7 @@
// 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: wan@google.com (Zhanyong Wan)
#include "gtest/internal/gtest-port.h"
...
...
@@ -262,7 +261,7 @@ Mutex::Mutex()
Mutex
::~
Mutex
()
{
// Static mutexes are leaked intentionally. It is not thread-safe to try
// to clean them up.
//
TODO(yukawa)
: Switch to Slim Reader/Writer (SRW) Locks, which requires
//
FIXME
: Switch to Slim Reader/Writer (SRW) Locks, which requires
// nothing to clean it up but is available only on Vista and later.
// https://docs.microsoft.com/en-us/windows/desktop/Sync/slim-reader-writer--srw--locks
if
(
type_
==
kDynamic
)
{
...
...
@@ -295,6 +294,43 @@ void Mutex::AssertHeld() {
<<
"The current thread is not holding the mutex @"
<<
this
;
}
namespace
{
// Use the RAII idiom to flag mem allocs that are intentionally never
// deallocated. The motivation is to silence the false positive mem leaks
// that are reported by the debug version of MS's CRT which can only detect
// if an alloc is missing a matching deallocation.
// Example:
// MemoryIsNotDeallocated memory_is_not_deallocated;
// critical_section_ = new CRITICAL_SECTION;
//
class
MemoryIsNotDeallocated
{
public:
MemoryIsNotDeallocated
()
:
old_crtdbg_flag_
(
0
)
{
#ifdef _MSC_VER
old_crtdbg_flag_
=
_CrtSetDbgFlag
(
_CRTDBG_REPORT_FLAG
);
// Set heap allocation block type to _IGNORE_BLOCK so that MS debug CRT
// doesn't report mem leak if there's no matching deallocation.
_CrtSetDbgFlag
(
old_crtdbg_flag_
&
~
_CRTDBG_ALLOC_MEM_DF
);
#endif // _MSC_VER
}
~
MemoryIsNotDeallocated
()
{
#ifdef _MSC_VER
// Restore the original _CRTDBG_ALLOC_MEM_DF flag
_CrtSetDbgFlag
(
old_crtdbg_flag_
);
#endif // _MSC_VER
}
private:
int
old_crtdbg_flag_
;
GTEST_DISALLOW_COPY_AND_ASSIGN_
(
MemoryIsNotDeallocated
);
};
}
// namespace
// Initializes owner_thread_id_ and critical_section_ in static mutexes.
void
Mutex
::
ThreadSafeLazyInit
()
{
// Dynamic mutexes are initialized in the constructor.
...
...
@@ -305,7 +341,11 @@ void Mutex::ThreadSafeLazyInit() {
// If critical_section_init_phase_ was 0 before the exchange, we
// are the first to test it and need to perform the initialization.
owner_thread_id_
=
0
;
critical_section_
=
new
CRITICAL_SECTION
;
{
// Use RAII to flag that following mem alloc is never deallocated.
MemoryIsNotDeallocated
memory_is_not_deallocated
;
critical_section_
=
new
CRITICAL_SECTION
;
}
::
InitializeCriticalSection
(
critical_section_
);
// Updates the critical_section_init_phase_ to 2 to signal
// initialization complete.
...
...
@@ -344,7 +384,7 @@ class ThreadWithParamSupport : public ThreadWithParamBase {
Notification
*
thread_can_start
)
{
ThreadMainParam
*
param
=
new
ThreadMainParam
(
runnable
,
thread_can_start
);
DWORD
thread_id
;
//
TODO(yukawa)
: Consider to use _beginthreadex instead.
//
FIXME
: Consider to use _beginthreadex instead.
HANDLE
thread_handle
=
::
CreateThread
(
NULL
,
// Default security.
0
,
// Default stack size.
...
...
@@ -547,7 +587,8 @@ class ThreadLocalRegistryImpl {
// Returns map of thread local instances.
static
ThreadIdToThreadLocals
*
GetThreadLocalsMapLocked
()
{
mutex_
.
AssertHeld
();
static
ThreadIdToThreadLocals
*
map
=
new
ThreadIdToThreadLocals
;
MemoryIsNotDeallocated
memory_is_not_deallocated
;
static
ThreadIdToThreadLocals
*
map
=
new
ThreadIdToThreadLocals
();
return
map
;
}
...
...
@@ -696,7 +737,7 @@ static std::string FormatRegexSyntaxError(const char* regex, int index) {
// otherwise returns true.
bool
ValidateRegex
(
const
char
*
regex
)
{
if
(
regex
==
NULL
)
{
//
TODO(wan@google.com)
: fix the source file location in the
//
FIXME
: fix the source file location in the
// assertion failures to match where the regex is used in user
// code.
ADD_FAILURE
()
<<
"NULL is not a valid simple regular expression."
;
...
...
@@ -942,7 +983,7 @@ GTestLog::~GTestLog() {
// Disable Microsoft deprecation warnings for POSIX functions called from
// this class (creat, dup, dup2, and close)
GTEST_DISABLE_MSC_
WARNINGS
_PUSH_
(
4996
)
GTEST_DISABLE_MSC_
DEPRECATED
_PUSH_
()
#if GTEST_HAS_STREAM_REDIRECTION
...
...
@@ -1026,7 +1067,7 @@ class CapturedStream {
GTEST_DISALLOW_COPY_AND_ASSIGN_
(
CapturedStream
);
};
GTEST_DISABLE_MSC_
WARNINGS
_POP_
()
GTEST_DISABLE_MSC_
DEPRECATED
_POP_
()
static
CapturedStream
*
g_captured_stderr
=
NULL
;
static
CapturedStream
*
g_captured_stdout
=
NULL
;
...
...
googletest/src/gtest-printers.cc
View file @
9d77e63e
...
...
@@ -26,8 +26,7 @@
// 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: wan@google.com (Zhanyong Wan)
// Google Test - The Google C++ Testing and Mocking Framework
//
...
...
@@ -90,7 +89,7 @@ void PrintBytesInObjectToImpl(const unsigned char* obj_bytes, size_t count,
// If the object size is bigger than kThreshold, we'll have to omit
// some details by printing only the first and the last kChunkSize
// bytes.
//
TODO(wan)
: let the user control the threshold using a flag.
//
FIXME
: let the user control the threshold using a flag.
if
(
count
<
kThreshold
)
{
PrintByteSegmentInObjectTo
(
obj_bytes
,
0
,
count
,
os
);
}
else
{
...
...
googletest/src/gtest-test-part.cc
View file @
9d77e63e
...
...
@@ -26,8 +26,7 @@
// 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: mheule@google.com (Markus Heule)
//
// The Google C++ Testing and Mocking Framework (Google Test)
...
...
googletest/src/gtest-typed-test.cc
View file @
9d77e63e
...
...
@@ -26,8 +26,7 @@
// 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: wan@google.com (Zhanyong Wan)
#include "gtest/gtest-typed-test.h"
...
...
googletest/src/gtest.cc
View file @
9d77e63e
...
...
@@ -26,8 +26,7 @@
// 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: wan@google.com (Zhanyong Wan)
//
// The Google C++ Testing and Mocking Framework (Google Test)
...
...
@@ -55,7 +54,7 @@
#if GTEST_OS_LINUX
//
TODO(kenton@google.com)
: Use autoconf to detect availability of
//
FIXME
: Use autoconf to detect availability of
// gettimeofday().
# define GTEST_HAS_GETTIMEOFDAY_ 1
...
...
@@ -94,9 +93,9 @@
# if GTEST_OS_WINDOWS_MINGW
// MinGW has gettimeofday() but not _ftime64().
//
TODO(kenton@google.com)
: Use autoconf to detect availability of
//
FIXME
: Use autoconf to detect availability of
// gettimeofday().
//
TODO(kenton@google.com)
: There are other ways to get the time on
//
FIXME
: There are other ways to get the time on
// Windows, like GetTickCount() or GetSystemTimeAsFileTime(). MinGW
// supports these. consider using them instead.
# define GTEST_HAS_GETTIMEOFDAY_ 1
...
...
@@ -111,7 +110,7 @@
#else
// Assume other platforms have gettimeofday().
//
TODO(kenton@google.com)
: Use autoconf to detect availability of
//
FIXME
: Use autoconf to detect availability of
// gettimeofday().
# define GTEST_HAS_GETTIMEOFDAY_ 1
...
...
@@ -468,7 +467,7 @@ std::string UnitTestOptions::GetAbsolutePathToOutputFile() {
internal
::
FilePath
output_name
(
colon
+
1
);
if
(
!
output_name
.
IsAbsolutePath
())
//
TODO(wan@google.com)
: on Windows \some\path is not an absolute
//
FIXME
: on Windows \some\path is not an absolute
// path (as its meaning depends on the current drive), yet the
// following logic for turning it into an absolute path is wrong.
// Fix it.
...
...
@@ -842,7 +841,7 @@ TimeInMillis GetTimeInMillis() {
SYSTEMTIME
now_systime
;
FILETIME
now_filetime
;
ULARGE_INTEGER
now_int64
;
//
TODO(kenton@google.com)
: Shouldn't this just use
//
FIXME
: Shouldn't this just use
// GetSystemTimeAsFileTime()?
GetSystemTime
(
&
now_systime
);
if
(
SystemTimeToFileTime
(
&
now_systime
,
&
now_filetime
))
{
...
...
@@ -858,11 +857,11 @@ TimeInMillis GetTimeInMillis() {
// MSVC 8 deprecates _ftime64(), so we want to suppress warning 4996
// (deprecated function) there.
//
TODO(kenton@google.com)
: Use GetTickCount()? Or use
//
FIXME
: Use GetTickCount()? Or use
// SystemTimeToFileTime()
GTEST_DISABLE_MSC_
WARNINGS
_PUSH_
(
4996
)
GTEST_DISABLE_MSC_
DEPRECATED
_PUSH_
()
_ftime64
(
&
now
);
GTEST_DISABLE_MSC_
WARNINGS
_POP_
()
GTEST_DISABLE_MSC_
DEPRECATED
_POP_
()
return
static_cast
<
TimeInMillis
>
(
now
.
time
)
*
1000
+
now
.
millitm
;
#elif GTEST_HAS_GETTIMEOFDAY_
...
...
@@ -1397,7 +1396,7 @@ AssertionResult DoubleNearPredFormat(const char* expr1,
const
double
diff
=
fabs
(
val1
-
val2
);
if
(
diff
<=
abs_error
)
return
AssertionSuccess
();
//
TODO(wan)
: do not print the value of an expression if it's
//
FIXME
: do not print the value of an expression if it's
// already a literal.
return
AssertionFailure
()
<<
"The difference between "
<<
expr1
<<
" and "
<<
expr2
...
...
@@ -3138,6 +3137,7 @@ void PrettyUnitTestResultPrinter::OnTestIterationStart(
"Note: Randomizing tests' orders with a seed of %d .
\n
"
,
unit_test
.
random_seed
());
}
ColoredPrintf
(
COLOR_GREEN
,
"[==========] "
);
printf
(
"Running %s from %s.
\n
"
,
FormatTestCount
(
unit_test
.
test_to_run_count
()).
c_str
(),
...
...
@@ -3334,7 +3334,7 @@ void TestEventRepeater::Append(TestEventListener *listener) {
listeners_
.
push_back
(
listener
);
}
//
TODO(vladl@google.com)
: Factor the search functionality into Vector::Find.
//
FIXME
: Factor the search functionality into Vector::Find.
TestEventListener
*
TestEventRepeater
::
Release
(
TestEventListener
*
listener
)
{
for
(
size_t
i
=
0
;
i
<
listeners_
.
size
();
++
i
)
{
if
(
listeners_
[
i
]
==
listener
)
{
...
...
@@ -3499,7 +3499,7 @@ void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
xmlout
=
posix
::
FOpen
(
output_file_
.
c_str
(),
"w"
);
}
if
(
xmlout
==
NULL
)
{
//
TODO(wan)
: report the reason of the failure.
//
FIXME
: report the reason of the failure.
//
// We don't do it for now as:
//
...
...
@@ -3528,7 +3528,7 @@ void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
// module will consist of ordinary English text.
// If this module is ever modified to produce version 1.1 XML output,
// most invalid characters can be retained using character references.
//
TODO(wan)
: It might be nice to have a minimally invasive, human-readable
//
FIXME
: It might be nice to have a minimally invasive, human-readable
// escaping scheme for invalid characters, rather than dropping them.
std
::
string
XmlUnitTestResultPrinter
::
EscapeXml
(
const
std
::
string
&
str
,
bool
is_attribute
)
{
...
...
@@ -3589,6 +3589,7 @@ std::string XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(
// The following routines generate an XML representation of a UnitTest
// object.
// GOOGLETEST_CM0009 DO NOT DELETE
//
// This is how Google Test concepts map to the DTD:
//
...
...
@@ -3678,7 +3679,7 @@ void XmlUnitTestResultPrinter::OutputXmlAttribute(
}
// Prints an XML representation of a TestInfo object.
//
TODO(wan)
: There is also value in printing properties with the plain printer.
//
FIXME
: There is also value in printing properties with the plain printer.
void
XmlUnitTestResultPrinter
::
OutputXmlTestInfo
(
::
std
::
ostream
*
stream
,
const
char
*
test_case_name
,
const
TestInfo
&
test_info
)
{
...
...
@@ -3905,7 +3906,7 @@ void JsonUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
jsonout
=
posix
::
FOpen
(
output_file_
.
c_str
(),
"w"
);
}
if
(
jsonout
==
NULL
)
{
//
TODO(phosek)
: report the reason of the failure.
//
FIXME
: report the reason of the failure.
//
// We don't do it for now as:
//
...
...
@@ -4720,7 +4721,7 @@ int UnitTest::Run() {
// VC++ doesn't define _set_abort_behavior() prior to the version 8.0.
// Users of prior VC versions shall suffer the agony and pain of
// clicking through the countless debug dialogs.
//
TODO(vladl@google.com)
: find a way to suppress the abort dialog() in the
//
FIXME
: find a way to suppress the abort dialog() in the
// debug mode when compiled with VC 7.1 or lower.
if
(
!
GTEST_FLAG
(
break_on_failure
))
_set_abort_behavior
(
...
...
@@ -5614,7 +5615,7 @@ static bool HasGoogleTestFlagPrefix(const char* str) {
// @Y changes the color to yellow.
// @D changes to the default terminal text color.
//
//
TODO(wan@google.com)
: Write tests for this once we add stdout
//
FIXME
: Write tests for this once we add stdout
// capturing to Google Test.
static
void
PrintColorEncoded
(
const
char
*
str
)
{
GTestColor
color
=
COLOR_DEFAULT
;
// The current color.
...
...
googletest/src/gtest_main.cc
View file @
9d77e63e
...
...
@@ -26,7 +26,6 @@
// 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.
//
#include <stdio.h>
#include "gtest/gtest.h"
...
...
googletest/test/BUILD.bazel
View file @
9d77e63e
...
...
@@ -49,31 +49,48 @@ config_setting(
values
=
{
"define"
:
"absl=1"
},
)
#on windows exclude gtest-tuple.h and gtest-tuple
_
test.cc
#on windows exclude gtest-tuple.h and g
oogle
test-tuple
-
test.cc
cc_test
(
name
=
"gtest_all_test"
,
size
=
"small"
,
srcs
=
glob
(
include
=
[
"gtest-*.cc"
,
"googletest-*.cc"
,
"*.h"
,
"googletest/include/gtest/**/*.h"
,
],
exclude
=
[
"gtest-unittest-api_test.cc"
,
"gtest-tuple
_
test.cc"
,
"g
oogle
test-tuple
-
test.cc"
,
"googletest/src/gtest-all.cc"
,
"gtest_all_test.cc"
,
"gtest-death-test_ex_test.cc"
,
"gtest-listener_test.cc"
,
"gtest-unittest-api_test.cc"
,
"gtest-param-test_test.cc"
,
"googletest-param-test-test.cc"
,
"googletest-catch-exceptions-test_.cc"
,
"googletest-color-test_.cc"
,
"googletest-env-var-test_.cc"
,
"googletest-filter-unittest_.cc"
,
"googletest-break-on-failure-unittest_.cc"
,
"googletest-listener-test.cc"
,
"googletest-output-test_.cc"
,
"googletest-list-tests-unittest_.cc"
,
"googletest-shuffle-test_.cc"
,
"googletest-uninitialized-test_.cc"
,
"googletest-death-test_ex_test.cc"
,
"googletest-param-test-test"
,
"googletest-throw-on-failure-test_.cc"
,
"googletest-param-test-invalid-name1-test_.cc"
,
"googletest-param-test-invalid-name2-test_.cc"
,
],
)
+
select
({
"//:windows"
:
[],
"//:windows_msvc"
:
[],
"//conditions:default"
:
[
"gtest-tuple
_
test.cc"
,
"g
oogle
test-tuple
-
test.cc"
,
],
}),
copts
=
select
({
...
...
@@ -98,6 +115,14 @@ cc_test(
)
# Tests death tests.
cc_test
(
name
=
"googletest-death-test-test"
,
size
=
"medium"
,
srcs
=
[
"googletest-death-test-test.cc"
],
deps
=
[
"//:gtest_main"
],
)
cc_test
(
name
=
"gtest_test_macro_stack_footprint_test"
,
size
=
"small"
,
...
...
@@ -107,14 +132,10 @@ cc_test(
#These googletest tests have their own main()
cc_test
(
name
=
"gtest-listener
_
test"
,
name
=
"g
oogle
test-listener
-
test"
,
size
=
"small"
,
srcs
=
[
"gtest-listener_test.cc"
,
],
deps
=
[
"//:gtest"
,
],
srcs
=
[
"googletest-listener-test.cc"
],
deps
=
[
"//:gtest_main"
],
)
cc_test
(
...
...
@@ -129,16 +150,14 @@ cc_test(
)
cc_test
(
name
=
"gtest-param-test
_
test"
,
name
=
"g
oogle
test-param-test
-
test"
,
size
=
"small"
,
srcs
=
[
"gtest-param-test2_test.cc"
,
"gtest-param-test_test.cc"
,
"gtest-param-test_test.h"
,
],
deps
=
[
"//:gtest"
,
"googletest-param-test-test.cc"
,
"googletest-param-test-test.h"
,
"googletest-param-test2-test.cc"
,
],
deps
=
[
"//:gtest"
],
)
cc_test
(
...
...
@@ -174,87 +193,92 @@ py_test(
)
cc_binary
(
name
=
"gtest
_
output
_
test_"
,
name
=
"g
oogle
test
-
output
-
test_"
,
testonly
=
1
,
srcs
=
[
"gtest
_
output
_
test_.cc"
],
srcs
=
[
"g
oogle
test
-
output
-
test_.cc"
],
deps
=
[
"//:gtest"
],
)
py_test
(
name
=
"gtest
_
output
_
test"
,
name
=
"g
oogle
test
-
output
-
test"
,
size
=
"small"
,
srcs
=
[
"gtest
_
output
_
test.py"
],
srcs
=
[
"g
oogle
test
-
output
-
test.py"
],
args
=
select
({
":has_absl"
:
[],
"//conditions:default"
:
[
"--no_stacktrace_support"
],
}),
data
=
[
"gtest
_
output
_
test
_
golden
_
lin.txt"
,
":gtest
_
output
_
test_"
,
"g
oogle
test
-
output
-
test
-
golden
-
lin.txt"
,
":g
oogle
test
-
output
-
test_"
,
],
deps
=
[
":gtest_test_utils"
],
)
cc_binary
(
name
=
"gtest
_
color
_
test_"
,
name
=
"g
oogle
test
-
color
-
test_"
,
testonly
=
1
,
srcs
=
[
"gtest
_
color
_
test_.cc"
],
srcs
=
[
"g
oogle
test
-
color
-
test_.cc"
],
deps
=
[
"//:gtest"
],
)
py_test
(
name
=
"gtest
_
color
_
test"
,
name
=
"g
oogle
test
-
color
-
test"
,
size
=
"small"
,
srcs
=
[
"gtest
_
color
_
test.py"
],
data
=
[
":gtest
_
color
_
test_"
],
srcs
=
[
"g
oogle
test
-
color
-
test.py"
],
data
=
[
":g
oogle
test
-
color
-
test_"
],
deps
=
[
":gtest_test_utils"
],
)
cc_binary
(
name
=
"gtest
_
env
_
var
_
test_"
,
name
=
"g
oogle
test
-
env
-
var
-
test_"
,
testonly
=
1
,
srcs
=
[
"gtest
_
env
_
var
_
test_.cc"
],
srcs
=
[
"g
oogle
test
-
env
-
var
-
test_.cc"
],
deps
=
[
"//:gtest"
],
)
py_test
(
name
=
"gtest
_
env
_
var
_
test"
,
size
=
"
small
"
,
srcs
=
[
"gtest
_
env
_
var
_
test.py"
],
data
=
[
":gtest
_
env
_
var
_
test_"
],
name
=
"g
oogle
test
-
env
-
var
-
test"
,
size
=
"
medium
"
,
srcs
=
[
"g
oogle
test
-
env
-
var
-
test.py"
],
data
=
[
":g
oogle
test
-
env
-
var
-
test_"
],
deps
=
[
":gtest_test_utils"
],
)
cc_binary
(
name
=
"gtest
_
filter
_
unittest_"
,
name
=
"g
oogle
test
-
filter
-
unittest_"
,
testonly
=
1
,
srcs
=
[
"gtest
_
filter
_
unittest_.cc"
],
srcs
=
[
"g
oogle
test
-
filter
-
unittest_.cc"
],
deps
=
[
"//:gtest"
],
)
py_test
(
name
=
"gtest
_
filter
_
unittest"
,
size
=
"
small
"
,
srcs
=
[
"gtest
_
filter
_
unittest.py"
],
data
=
[
":gtest
_
filter
_
unittest_"
],
name
=
"g
oogle
test
-
filter
-
unittest"
,
size
=
"
medium
"
,
srcs
=
[
"g
oogle
test
-
filter
-
unittest.py"
],
data
=
[
":g
oogle
test
-
filter
-
unittest_"
],
deps
=
[
":gtest_test_utils"
],
)
cc_binary
(
name
=
"gtest
_
break
_
on
_
failure
_
unittest_"
,
name
=
"g
oogle
test
-
break
-
on
-
failure
-
unittest_"
,
testonly
=
1
,
srcs
=
[
"gtest
_
break
_
on
_
failure
_
unittest_.cc"
],
srcs
=
[
"g
oogle
test
-
break
-
on
-
failure
-
unittest_.cc"
],
deps
=
[
"//:gtest"
],
)
py_test
(
name
=
"gtest
_
break
_
on
_
failure
_
unittest"
,
name
=
"g
oogle
test
-
break
-
on
-
failure
-
unittest"
,
size
=
"small"
,
srcs
=
[
"gtest
_
break
_
on
_
failure
_
unittest.py"
],
data
=
[
":gtest
_
break
_
on
_
failure
_
unittest_"
],
srcs
=
[
"g
oogle
test
-
break
-
on
-
failure
-
unittest.py"
],
data
=
[
":g
oogle
test
-
break
-
on
-
failure
-
unittest_"
],
deps
=
[
":gtest_test_utils"
],
)
cc_test
(
name
=
"gtest_assert_by_exception_test"
,
size
=
"small"
,
...
...
@@ -262,72 +286,75 @@ cc_test(
deps
=
[
"//:gtest"
],
)
cc_binary
(
name
=
"gtest
_
throw
_
on
_
failure
_
test_"
,
name
=
"g
oogle
test
-
throw
-
on
-
failure
-
test_"
,
testonly
=
1
,
srcs
=
[
"gtest
_
throw
_
on
_
failure
_
test_.cc"
],
srcs
=
[
"g
oogle
test
-
throw
-
on
-
failure
-
test_.cc"
],
deps
=
[
"//:gtest"
],
)
py_test
(
name
=
"gtest
_
throw
_
on
_
failure
_
test"
,
name
=
"g
oogle
test
-
throw
-
on
-
failure
-
test"
,
size
=
"small"
,
srcs
=
[
"gtest
_
throw
_
on
_
failure
_
test.py"
],
data
=
[
":gtest
_
throw
_
on
_
failure
_
test_"
],
srcs
=
[
"g
oogle
test
-
throw
-
on
-
failure
-
test.py"
],
data
=
[
":g
oogle
test
-
throw
-
on
-
failure
-
test_"
],
deps
=
[
":gtest_test_utils"
],
)
cc_binary
(
name
=
"gtest
_
list
_
tests
_
unittest_"
,
name
=
"g
oogle
test
-
list
-
tests
-
unittest_"
,
testonly
=
1
,
srcs
=
[
"gtest
_
list
_
tests
_
unittest_.cc"
],
srcs
=
[
"g
oogle
test
-
list
-
tests
-
unittest_.cc"
],
deps
=
[
"//:gtest"
],
)
py_test
(
name
=
"gtest
_
list
_
tests
_
unittest"
,
name
=
"g
oogle
test
-
list
-
tests
-
unittest"
,
size
=
"small"
,
srcs
=
[
"gtest
_
list
_
tests
_
unittest.py"
],
data
=
[
":gtest
_
list
_
tests
_
unittest_"
],
srcs
=
[
"g
oogle
test
-
list
-
tests
-
unittest.py"
],
data
=
[
":g
oogle
test
-
list
-
tests
-
unittest_"
],
deps
=
[
":gtest_test_utils"
],
)
cc_binary
(
name
=
"gtest
_
shuffle
_
test_"
,
srcs
=
[
"gtest
_
shuffle
_
test_.cc"
],
name
=
"g
oogle
test
-
shuffle
-
test_"
,
srcs
=
[
"g
oogle
test
-
shuffle
-
test_.cc"
],
deps
=
[
"//:gtest"
],
)
py_test
(
name
=
"gtest
_
shuffle
_
test"
,
name
=
"g
oogle
test
-
shuffle
-
test"
,
size
=
"small"
,
srcs
=
[
"gtest
_
shuffle
_
test.py"
],
data
=
[
":gtest
_
shuffle
_
test_"
],
srcs
=
[
"g
oogle
test
-
shuffle
-
test.py"
],
data
=
[
":g
oogle
test
-
shuffle
-
test_"
],
deps
=
[
":gtest_test_utils"
],
)
cc_binary
(
name
=
"gtest
_
catch
_
exceptions
_
no
_
ex
_
test_"
,
name
=
"g
oogle
test
-
catch
-
exceptions
-
no
-
ex
-
test_"
,
testonly
=
1
,
srcs
=
[
"gtest
_
catch
_
exceptions
_
test_.cc"
],
srcs
=
[
"g
oogle
test
-
catch
-
exceptions
-
test_.cc"
],
deps
=
[
"//:gtest_main"
],
)
cc_binary
(
name
=
"gtest
_
catch
_
exceptions
_
ex
_
test_"
,
name
=
"g
oogle
test
-
catch
-
exceptions
-
ex
-
test_"
,
testonly
=
1
,
srcs
=
[
"gtest
_
catch
_
exceptions
_
test_.cc"
],
srcs
=
[
"g
oogle
test
-
catch
-
exceptions
-
test_.cc"
],
copts
=
[
"-fexceptions"
],
deps
=
[
"//:gtest_main"
],
)
py_test
(
name
=
"gtest
_
catch
_
exceptions
_
test"
,
name
=
"g
oogle
test
-
catch
-
exceptions
-
test"
,
size
=
"small"
,
srcs
=
[
"gtest
_
catch
_
exceptions
_
test.py"
],
srcs
=
[
"g
oogle
test
-
catch
-
exceptions
-
test.py"
],
data
=
[
":gtest
_
catch
_
exceptions
_
ex
_
test_"
,
":gtest
_
catch
_
exceptions
_
no
_
ex
_
test_"
,
":g
oogle
test
-
catch
-
exceptions
-
ex
-
test_"
,
":g
oogle
test
-
catch
-
exceptions
-
no
-
ex
-
test_"
,
],
deps
=
[
":gtest_test_utils"
],
)
...
...
@@ -395,17 +422,17 @@ py_test(
)
cc_binary
(
name
=
"gtest
_
uninitialized
_
test_"
,
name
=
"g
oogle
test
-
uninitialized
-
test_"
,
testonly
=
1
,
srcs
=
[
"gtest
_
uninitialized
_
test_.cc"
],
srcs
=
[
"g
oogle
test
-
uninitialized
-
test_.cc"
],
deps
=
[
"//:gtest"
],
)
py_test
(
name
=
"gtest
_
uninitialized
_
test"
,
name
=
"g
oogle
test
-
uninitialized
-
test"
,
size
=
"medium"
,
srcs
=
[
"gtest
_
uninitialized
_
test.py"
],
data
=
[
"
:
gtest
_
uninitialized
_
test_"
],
srcs
=
[
"g
oogle
test
-
uninitialized
-
test.py"
],
data
=
[
"g
oogle
test
-
uninitialized
-
test_"
],
deps
=
[
":gtest_test_utils"
],
)
...
...
@@ -424,3 +451,77 @@ 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"
],
)
py_test
(
name
=
"googletest-json-output-unittest"
,
size
=
"medium"
,
srcs
=
[
"googletest-json-output-unittest.py"
,
"gtest_json_test_utils.py"
,
],
data
=
[
# We invoke gtest_no_test_unittest to verify the JSON output
# when the test program contains no test definition.
":gtest_no_test_unittest"
,
":gtest_xml_output_unittest_"
,
],
args
=
select
({
":has_absl"
:
[],
"//conditions:default"
:
[
"--no_stacktrace_support"
],
}),
deps
=
[
":gtest_test_utils"
],
)
# Verifies interaction of death tests and exceptions.
cc_test
(
name
=
"googletest-death-test_ex_catch_test"
,
size
=
"medium"
,
srcs
=
[
"googletest-death-test_ex_test.cc"
],
copts
=
[
"-fexceptions"
],
defines
=
[
"GTEST_ENABLE_CATCH_EXCEPTIONS_=1"
],
deps
=
[
"//:gtest"
],
)
cc_binary
(
name
=
"googletest-param-test-invalid-name1-test_"
,
testonly
=
1
,
srcs
=
[
"googletest-param-test-invalid-name1-test_.cc"
],
deps
=
[
"//:gtest"
],
)
cc_binary
(
name
=
"googletest-param-test-invalid-name2-test_"
,
testonly
=
1
,
srcs
=
[
"googletest-param-test-invalid-name2-test_.cc"
],
deps
=
[
"//:gtest"
],
)
py_test
(
name
=
"googletest-param-test-invalid-name1-test"
,
size
=
"small"
,
srcs
=
[
"googletest-param-test-invalid-name1-test.py"
],
data
=
[
":googletest-param-test-invalid-name1-test_"
],
deps
=
[
":gtest_test_utils"
],
)
py_test
(
name
=
"googletest-param-test-invalid-name2-test"
,
size
=
"small"
,
srcs
=
[
"googletest-param-test-invalid-name2-test.py"
],
data
=
[
":googletest-param-test-invalid-name2-test_"
],
deps
=
[
":gtest_test_utils"
],
)
googletest/test/gtest
_
break
_
on
_
failure
_
unittest.py
→
googletest/test/g
oogle
test
-
break
-
on
-
failure
-
unittest.py
View file @
9d77e63e
...
...
@@ -34,12 +34,10 @@
A user can ask Google Test to seg-fault when an assertion fails, using
either the GTEST_BREAK_ON_FAILURE environment variable or the
--gtest_break_on_failure flag. This script tests such functionality
by invoking gtest
_
break
_
on
_
failure
_
unittest_ (a program written with
by invoking g
oogle
test
-
break
-
on
-
failure
-
unittest_ (a program written with
Google Test) with different environments and command line flags.
"""
__author__
=
'wan@google.com (Zhanyong Wan)'
import
os
import
gtest_test_utils
...
...
@@ -59,9 +57,9 @@ THROW_ON_FAILURE_ENV_VAR = 'GTEST_THROW_ON_FAILURE'
# The environment variable for enabling/disabling the catch-exceptions mode.
CATCH_EXCEPTIONS_ENV_VAR
=
'GTEST_CATCH_EXCEPTIONS'
# Path to the gtest
_
break
_
on
_
failure
_
unittest_ program.
# Path to the g
oogle
test
-
break
-
on
-
failure
-
unittest_ program.
EXE_PATH
=
gtest_test_utils
.
GetTestExecutablePath
(
'gtest
_
break
_
on
_
failure
_
unittest_'
)
'g
oogle
test
-
break
-
on
-
failure
-
unittest_'
)
environ
=
gtest_test_utils
.
environ
...
...
@@ -95,7 +93,7 @@ class GTestBreakOnFailureUnitTest(gtest_test_utils.TestCase):
"""
def
RunAndVerify
(
self
,
env_var_value
,
flag_value
,
expect_seg_fault
):
"""Runs gtest
_
break
_
on
_
failure
_
unittest_ and verifies that it does
"""Runs g
oogle
test
-
break
-
on
-
failure
-
unittest_ and verifies that it does
(or does not) have a seg-fault.
Args:
...
...
googletest/test/gtest
_
break
_
on
_
failure
_
unittest_.cc
→
googletest/test/g
oogle
test
-
break
-
on
-
failure
-
unittest_.cc
View file @
9d77e63e
...
...
@@ -26,8 +26,7 @@
// 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: wan@google.com (Zhanyong Wan)
// Unit test for Google Test's break-on-failure mode.
//
...
...
googletest/test/gtest
_
catch
_
exceptions
_
test.py
→
googletest/test/g
oogle
test
-
catch
-
exceptions
-
test.py
View file @
9d77e63e
...
...
@@ -30,13 +30,11 @@
"""Tests Google Test's exception catching behavior.
This script invokes gtest
_
catch
_
exceptions
_
test_ and
gtest
_
catch
_
exceptions
_
ex
_
test_ (programs written with
This script invokes g
oogle
test
-
catch
-
exceptions
-
test_ and
g
oogle
test
-
catch
-
exceptions
-
ex
-
test_ (programs written with
Google Test) and verifies their output.
"""
__author__
=
'vladl@google.com (Vlad Losev)'
import
gtest_test_utils
# Constants.
...
...
@@ -45,15 +43,15 @@ LIST_TESTS_FLAG = FLAG_PREFIX + 'list_tests'
NO_CATCH_EXCEPTIONS_FLAG
=
FLAG_PREFIX
+
'catch_exceptions=0'
FILTER_FLAG
=
FLAG_PREFIX
+
'filter'
# Path to the gtest
_
catch
_
exceptions
_
ex
_
test_ binary, compiled with
# Path to the g
oogle
test
-
catch
-
exceptions
-
ex
-
test_ binary, compiled with
# exceptions enabled.
EX_EXE_PATH
=
gtest_test_utils
.
GetTestExecutablePath
(
'gtest
_
catch
_
exceptions
_
ex
_
test_'
)
'g
oogle
test
-
catch
-
exceptions
-
ex
-
test_'
)
# Path to the gtest
_
catch
_
exceptions
_
test_ binary, compiled with
# Path to the g
oogle
test
-
catch
-
exceptions
-
test_ binary, compiled with
# exceptions disabled.
EXE_PATH
=
gtest_test_utils
.
GetTestExecutablePath
(
'gtest
_
catch
_
exceptions
_
no
_
ex
_
test_'
)
'g
oogle
test
-
catch
-
exceptions
-
no
-
ex
-
test_'
)
environ
=
gtest_test_utils
.
environ
SetEnvVar
=
gtest_test_utils
.
SetEnvVar
...
...
googletest/test/gtest
_
catch
_
exceptions
_
test_.cc
→
googletest/test/g
oogle
test
-
catch
-
exceptions
-
test_.cc
View file @
9d77e63e
...
...
@@ -26,17 +26,17 @@
// 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)
//
// Tests for Google Test itself. Tests in this file throw C++ or SEH
// exceptions, and the output is verified by gtest_catch_exceptions_test.py.
#include "gtest/gtest.h"
// exceptions, and the output is verified by
// googletest-catch-exceptions-test.py.
#include <stdio.h> // NOLINT
#include <stdlib.h> // For exit().
#include "gtest/gtest.h"
#if GTEST_HAS_SEH
# include <windows.h>
#endif
...
...
googletest/test/gtest
_
color
_
test.py
→
googletest/test/g
oogle
test
-
color
-
test.py
View file @
9d77e63e
...
...
@@ -31,8 +31,6 @@
"""Verifies that Google Test correctly determines whether to use colors."""
__author__
=
'wan@google.com (Zhanyong Wan)'
import
os
import
gtest_test_utils
...
...
@@ -40,7 +38,7 @@ IS_WINDOWS = os.name == 'nt'
COLOR_ENV_VAR
=
'GTEST_COLOR'
COLOR_FLAG
=
'gtest_color'
COMMAND
=
gtest_test_utils
.
GetTestExecutablePath
(
'gtest
_
color
_
test_'
)
COMMAND
=
gtest_test_utils
.
GetTestExecutablePath
(
'g
oogle
test
-
color
-
test_'
)
def
SetEnvVar
(
env_var
,
value
):
...
...
@@ -53,7 +51,7 @@ def SetEnvVar(env_var, value):
def
UsesColor
(
term
,
color_env_var
,
color_flag
):
"""Runs gtest
_
color
_
test_ and returns its exit code."""
"""Runs g
oogle
test
-
color
-
test_ and returns its exit code."""
SetEnvVar
(
'TERM'
,
term
)
SetEnvVar
(
COLOR_ENV_VAR
,
color_env_var
)
...
...
googletest/test/gtest
_
color
_
test_.cc
→
googletest/test/g
oogle
test
-
color
-
test_.cc
View file @
9d77e63e
...
...
@@ -26,8 +26,7 @@
// 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: wan@google.com (Zhanyong Wan)
// A helper program for testing how Google Test determines whether to use
// colors in the output. It prints "YES" and returns 1 if Google Test
...
...
Prev
1
2
3
4
5
6
7
8
9
10
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment