Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
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 @@
...
@@ -26,8 +26,7 @@
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// 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
// This sample shows how to test common properties of multiple
// implementations of an interface (aka interface tests) using
// implementations of an interface (aka interface tests) using
...
...
googletest/samples/sample8_unittest.cc
View file @
9d77e63e
...
@@ -26,8 +26,7 @@
...
@@ -26,8 +26,7 @@
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// 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.
// This sample shows how to test code relying on some global flag variables.
// Combine() helps with generating all possible combinations of such flags,
// Combine() helps with generating all possible combinations of such flags,
...
...
googletest/samples/sample9_unittest.cc
View file @
9d77e63e
...
@@ -25,8 +25,7 @@
...
@@ -25,8 +25,7 @@
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// 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
// This sample shows how to use Google Test listener API to implement
// an alternative console output and how to use the UnitTest reflection API
// an alternative console output and how to use the UnitTest reflection API
...
...
googletest/src/gtest-all.cc
View file @
9d77e63e
...
@@ -26,8 +26,7 @@
...
@@ -26,8 +26,7 @@
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// 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)
// Google C++ Testing and Mocking Framework (Google Test)
//
//
...
...
googletest/src/gtest-death-test.cc
View file @
9d77e63e
...
@@ -26,8 +26,7 @@
...
@@ -26,8 +26,7 @@
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// 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.
// This file implements death tests.
...
@@ -67,6 +66,7 @@
...
@@ -67,6 +66,7 @@
# include <lib/fdio/spawn.h>
# include <lib/fdio/spawn.h>
# include <zircon/processargs.h>
# include <zircon/processargs.h>
# include <zircon/syscalls.h>
# include <zircon/syscalls.h>
# include <zircon/syscalls/port.h>
# endif // GTEST_OS_FUCHSIA
# endif // GTEST_OS_FUCHSIA
#endif // GTEST_HAS_DEATH_TEST
#endif // GTEST_HAS_DEATH_TEST
...
@@ -232,10 +232,16 @@ static std::string DeathTestThreadWarning(size_t thread_count) {
...
@@ -232,10 +232,16 @@ static std::string DeathTestThreadWarning(size_t thread_count) {
Message
msg
;
Message
msg
;
msg
<<
"Death tests use fork(), which is unsafe particularly"
msg
<<
"Death tests use fork(), which is unsafe particularly"
<<
" in a threaded context. For this test, "
<<
GTEST_NAME_
<<
" "
;
<<
" 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."
;
msg
<<
"couldn't detect the number of threads."
;
else
}
else
{
msg
<<
"detected "
<<
thread_count
<<
" threads."
;
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
();
return
msg
.
GetString
();
}
}
# endif // !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
# endif // !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
...
@@ -260,7 +266,7 @@ static const int kFuchsiaReadPipeFd = 3;
...
@@ -260,7 +266,7 @@ static const int kFuchsiaReadPipeFd = 3;
// statement, which is not allowed; THREW means that the test statement
// statement, which is not allowed; THREW means that the test statement
// returned control by throwing an exception. IN_PROGRESS means the test
// returned control by throwing an exception. IN_PROGRESS means the test
// has not yet concluded.
// 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.
// AbortReason, DeathTestOutcome, and flag characters above.
enum
DeathTestOutcome
{
IN_PROGRESS
,
DIED
,
LIVED
,
RETURNED
,
THREW
};
enum
DeathTestOutcome
{
IN_PROGRESS
,
DIED
,
LIVED
,
RETURNED
,
THREW
};
...
@@ -575,7 +581,6 @@ bool DeathTestImpl::Passed(bool status_ok) {
...
@@ -575,7 +581,6 @@ bool DeathTestImpl::Passed(bool status_ok) {
if
(
status_ok
)
{
if
(
status_ok
)
{
# if GTEST_USES_PCRE
# if GTEST_USES_PCRE
// PCRE regexes support embedded NULs.
// PCRE regexes support embedded NULs.
// GTEST_USES_PCRE is defined only in google3 mode
const
bool
matched
=
RE
::
PartialMatch
(
error_message
,
*
regex
());
const
bool
matched
=
RE
::
PartialMatch
(
error_message
,
*
regex
());
# else
# else
const
bool
matched
=
RE
::
PartialMatch
(
error_message
.
c_str
(),
*
regex
());
const
bool
matched
=
RE
::
PartialMatch
(
error_message
.
c_str
(),
*
regex
());
...
@@ -805,6 +810,12 @@ class FuchsiaDeathTest : public DeathTestImpl {
...
@@ -805,6 +810,12 @@ class FuchsiaDeathTest : public DeathTestImpl {
const
char
*
file
,
const
char
*
file
,
int
line
)
int
line
)
:
DeathTestImpl
(
a_statement
,
a_regex
),
file_
(
file
),
line_
(
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.
// All of these virtual functions are inherited from DeathTest.
virtual
int
Wait
();
virtual
int
Wait
();
...
@@ -816,7 +827,8 @@ class FuchsiaDeathTest : public DeathTestImpl {
...
@@ -816,7 +827,8 @@ class FuchsiaDeathTest : public DeathTestImpl {
// The line number on which the death test is located.
// The line number on which the death test is located.
const
int
line_
;
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.
// Utility class for accumulating command-line arguments.
...
@@ -863,16 +875,38 @@ int FuchsiaDeathTest::Wait() {
...
@@ -863,16 +875,38 @@ int FuchsiaDeathTest::Wait() {
if
(
!
spawned
())
if
(
!
spawned
())
return
0
;
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_status_t
status_zx
;
zx_signals_t
signals
;
status_zx
=
zx_object_wait_async
(
child_process_
,
status_zx
=
zx_object_wait_one
(
port_
,
child_process_
,
0
/* key */
,
ZX_PROCESS_TERMINATED
,
ZX_PROCESS_TERMINATED
,
ZX_TIME_INFINITE
,
ZX_WAIT_ASYNC_ONCE
);
&
signals
);
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
);
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
();
ReadAndInterpretStatusByte
();
zx_info_process_t
buffer
;
zx_info_process_t
buffer
;
...
@@ -936,13 +970,10 @@ DeathTest::TestRole FuchsiaDeathTest::AssumeRole() {
...
@@ -936,13 +970,10 @@ DeathTest::TestRole FuchsiaDeathTest::AssumeRole() {
set_read_fd
(
status
);
set_read_fd
(
status
);
// Set the pipe handle for the child.
// Set the pipe handle for the child.
fdio_spawn_action_t
add_handle_action
=
{
fdio_spawn_action_t
add_handle_action
=
{};
.
action
=
FDIO_SPAWN_ACTION_ADD_HANDLE
,
add_handle_action
.
action
=
FDIO_SPAWN_ACTION_ADD_HANDLE
;
.
h
=
{
add_handle_action
.
h
.
id
=
PA_HND
(
type
,
kFuchsiaReadPipeFd
);
.
id
=
PA_HND
(
type
,
kFuchsiaReadPipeFd
),
add_handle_action
.
h
.
handle
=
child_pipe_handle
;
.
handle
=
child_pipe_handle
}
};
// Spawn the child process.
// Spawn the child process.
status
=
fdio_spawn_etc
(
ZX_HANDLE_INVALID
,
FDIO_SPAWN_CLONE_ALL
,
status
=
fdio_spawn_etc
(
ZX_HANDLE_INVALID
,
FDIO_SPAWN_CLONE_ALL
,
...
@@ -950,6 +981,14 @@ DeathTest::TestRole FuchsiaDeathTest::AssumeRole() {
...
@@ -950,6 +981,14 @@ DeathTest::TestRole FuchsiaDeathTest::AssumeRole() {
&
add_handle_action
,
&
child_process_
,
nullptr
);
&
add_handle_action
,
&
child_process_
,
nullptr
);
GTEST_DEATH_TEST_CHECK_
(
status
==
ZX_OK
);
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
);
set_spawned
(
true
);
return
OVERSEE_TEST
;
return
OVERSEE_TEST
;
}
}
...
@@ -1419,7 +1458,7 @@ static int GetStatusFileDescriptor(unsigned int parent_process_id,
...
@@ -1419,7 +1458,7 @@ static int GetStatusFileDescriptor(unsigned int parent_process_id,
StreamableToString
(
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.
// compile-time assertion when available.
GTEST_CHECK_
(
sizeof
(
HANDLE
)
<=
sizeof
(
size_t
));
GTEST_CHECK_
(
sizeof
(
HANDLE
)
<=
sizeof
(
size_t
));
...
...
googletest/src/gtest-filepath.cc
View file @
9d77e63e
...
@@ -250,7 +250,7 @@ bool FilePath::DirectoryExists() const {
...
@@ -250,7 +250,7 @@ bool FilePath::DirectoryExists() const {
// root directory per disk drive.)
// root directory per disk drive.)
bool
FilePath
::
IsRootDirectory
()
const
{
bool
FilePath
::
IsRootDirectory
()
const
{
#if GTEST_OS_WINDOWS
#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
// \\server\share can be a root directory, although it cannot be the
// current directory. Handle this properly.
// current directory. Handle this properly.
return
pathname_
.
length
()
==
3
&&
IsAbsolutePath
();
return
pathname_
.
length
()
==
3
&&
IsAbsolutePath
();
...
@@ -350,7 +350,7 @@ FilePath FilePath::RemoveTrailingPathSeparator() const {
...
@@ -350,7 +350,7 @@ FilePath FilePath::RemoveTrailingPathSeparator() const {
// Removes any redundant separators that might be in the pathname.
// Removes any redundant separators that might be in the pathname.
// For example, "bar///foo" becomes "bar/foo". Does not eliminate other
// For example, "bar///foo" becomes "bar/foo". Does not eliminate other
// redundancies that might be in a pathname involving "." or "..".
// 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
()
{
void
FilePath
::
Normalize
()
{
if
(
pathname_
.
c_str
()
==
NULL
)
{
if
(
pathname_
.
c_str
()
==
NULL
)
{
pathname_
=
""
;
pathname_
=
""
;
...
...
googletest/src/gtest-internal-inl.h
View file @
9d77e63e
...
@@ -27,10 +27,7 @@
...
@@ -27,10 +27,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Utility functions and classes used by the Google C++ testing framework.
// Utility functions and classes used by the Google C++ testing framework.//
//
// Author: wan@google.com (Zhanyong Wan)
//
// This file contains purely Google Test's internal implementation. Please
// This file contains purely Google Test's internal implementation. Please
// DO NOT #INCLUDE IT IN A USER PROGRAM.
// DO NOT #INCLUDE IT IN A USER PROGRAM.
...
@@ -994,7 +991,7 @@ bool ParseNaturalNumber(const ::std::string& str, Integer* number) {
...
@@ -994,7 +991,7 @@ bool ParseNaturalNumber(const ::std::string& str, Integer* number) {
const
bool
parse_success
=
*
end
==
'\0'
&&
errno
==
0
;
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.
// available.
GTEST_CHECK_
(
sizeof
(
Integer
)
<=
sizeof
(
parsed
));
GTEST_CHECK_
(
sizeof
(
Integer
)
<=
sizeof
(
parsed
));
...
...
googletest/src/gtest-port.cc
View file @
9d77e63e
...
@@ -26,8 +26,7 @@
...
@@ -26,8 +26,7 @@
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Author: wan@google.com (Zhanyong Wan)
#include "gtest/internal/gtest-port.h"
#include "gtest/internal/gtest-port.h"
...
@@ -262,7 +261,7 @@ Mutex::Mutex()
...
@@ -262,7 +261,7 @@ Mutex::Mutex()
Mutex
::~
Mutex
()
{
Mutex
::~
Mutex
()
{
// Static mutexes are leaked intentionally. It is not thread-safe to try
// Static mutexes are leaked intentionally. It is not thread-safe to try
// to clean them up.
// 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.
// 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
// https://docs.microsoft.com/en-us/windows/desktop/Sync/slim-reader-writer--srw--locks
if
(
type_
==
kDynamic
)
{
if
(
type_
==
kDynamic
)
{
...
@@ -295,6 +294,43 @@ void Mutex::AssertHeld() {
...
@@ -295,6 +294,43 @@ void Mutex::AssertHeld() {
<<
"The current thread is not holding the mutex @"
<<
this
;
<<
"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.
// Initializes owner_thread_id_ and critical_section_ in static mutexes.
void
Mutex
::
ThreadSafeLazyInit
()
{
void
Mutex
::
ThreadSafeLazyInit
()
{
// Dynamic mutexes are initialized in the constructor.
// Dynamic mutexes are initialized in the constructor.
...
@@ -305,7 +341,11 @@ void Mutex::ThreadSafeLazyInit() {
...
@@ -305,7 +341,11 @@ void Mutex::ThreadSafeLazyInit() {
// If critical_section_init_phase_ was 0 before the exchange, we
// If critical_section_init_phase_ was 0 before the exchange, we
// are the first to test it and need to perform the initialization.
// are the first to test it and need to perform the initialization.
owner_thread_id_
=
0
;
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_
);
::
InitializeCriticalSection
(
critical_section_
);
// Updates the critical_section_init_phase_ to 2 to signal
// Updates the critical_section_init_phase_ to 2 to signal
// initialization complete.
// initialization complete.
...
@@ -344,7 +384,7 @@ class ThreadWithParamSupport : public ThreadWithParamBase {
...
@@ -344,7 +384,7 @@ class ThreadWithParamSupport : public ThreadWithParamBase {
Notification
*
thread_can_start
)
{
Notification
*
thread_can_start
)
{
ThreadMainParam
*
param
=
new
ThreadMainParam
(
runnable
,
thread_can_start
);
ThreadMainParam
*
param
=
new
ThreadMainParam
(
runnable
,
thread_can_start
);
DWORD
thread_id
;
DWORD
thread_id
;
//
TODO(yukawa)
: Consider to use _beginthreadex instead.
//
FIXME
: Consider to use _beginthreadex instead.
HANDLE
thread_handle
=
::
CreateThread
(
HANDLE
thread_handle
=
::
CreateThread
(
NULL
,
// Default security.
NULL
,
// Default security.
0
,
// Default stack size.
0
,
// Default stack size.
...
@@ -547,7 +587,8 @@ class ThreadLocalRegistryImpl {
...
@@ -547,7 +587,8 @@ class ThreadLocalRegistryImpl {
// Returns map of thread local instances.
// Returns map of thread local instances.
static
ThreadIdToThreadLocals
*
GetThreadLocalsMapLocked
()
{
static
ThreadIdToThreadLocals
*
GetThreadLocalsMapLocked
()
{
mutex_
.
AssertHeld
();
mutex_
.
AssertHeld
();
static
ThreadIdToThreadLocals
*
map
=
new
ThreadIdToThreadLocals
;
MemoryIsNotDeallocated
memory_is_not_deallocated
;
static
ThreadIdToThreadLocals
*
map
=
new
ThreadIdToThreadLocals
();
return
map
;
return
map
;
}
}
...
@@ -696,7 +737,7 @@ static std::string FormatRegexSyntaxError(const char* regex, int index) {
...
@@ -696,7 +737,7 @@ static std::string FormatRegexSyntaxError(const char* regex, int index) {
// otherwise returns true.
// otherwise returns true.
bool
ValidateRegex
(
const
char
*
regex
)
{
bool
ValidateRegex
(
const
char
*
regex
)
{
if
(
regex
==
NULL
)
{
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
// assertion failures to match where the regex is used in user
// code.
// code.
ADD_FAILURE
()
<<
"NULL is not a valid simple regular expression."
;
ADD_FAILURE
()
<<
"NULL is not a valid simple regular expression."
;
...
@@ -942,7 +983,7 @@ GTestLog::~GTestLog() {
...
@@ -942,7 +983,7 @@ GTestLog::~GTestLog() {
// Disable Microsoft deprecation warnings for POSIX functions called from
// Disable Microsoft deprecation warnings for POSIX functions called from
// this class (creat, dup, dup2, and close)
// this class (creat, dup, dup2, and close)
GTEST_DISABLE_MSC_
WARNINGS
_PUSH_
(
4996
)
GTEST_DISABLE_MSC_
DEPRECATED
_PUSH_
()
#if GTEST_HAS_STREAM_REDIRECTION
#if GTEST_HAS_STREAM_REDIRECTION
...
@@ -1026,7 +1067,7 @@ class CapturedStream {
...
@@ -1026,7 +1067,7 @@ class CapturedStream {
GTEST_DISALLOW_COPY_AND_ASSIGN_
(
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_stderr
=
NULL
;
static
CapturedStream
*
g_captured_stdout
=
NULL
;
static
CapturedStream
*
g_captured_stdout
=
NULL
;
...
...
googletest/src/gtest-printers.cc
View file @
9d77e63e
...
@@ -26,8 +26,7 @@
...
@@ -26,8 +26,7 @@
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// 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
// Google Test - The Google C++ Testing and Mocking Framework
//
//
...
@@ -90,7 +89,7 @@ void PrintBytesInObjectToImpl(const unsigned char* obj_bytes, size_t count,
...
@@ -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
// If the object size is bigger than kThreshold, we'll have to omit
// some details by printing only the first and the last kChunkSize
// some details by printing only the first and the last kChunkSize
// bytes.
// 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
)
{
if
(
count
<
kThreshold
)
{
PrintByteSegmentInObjectTo
(
obj_bytes
,
0
,
count
,
os
);
PrintByteSegmentInObjectTo
(
obj_bytes
,
0
,
count
,
os
);
}
else
{
}
else
{
...
...
googletest/src/gtest-test-part.cc
View file @
9d77e63e
...
@@ -26,8 +26,7 @@
...
@@ -26,8 +26,7 @@
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// 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)
// The Google C++ Testing and Mocking Framework (Google Test)
...
...
googletest/src/gtest-typed-test.cc
View file @
9d77e63e
...
@@ -26,8 +26,7 @@
...
@@ -26,8 +26,7 @@
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Author: wan@google.com (Zhanyong Wan)
#include "gtest/gtest-typed-test.h"
#include "gtest/gtest-typed-test.h"
...
...
googletest/src/gtest.cc
View file @
9d77e63e
...
@@ -26,8 +26,7 @@
...
@@ -26,8 +26,7 @@
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// 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)
// The Google C++ Testing and Mocking Framework (Google Test)
...
@@ -55,7 +54,7 @@
...
@@ -55,7 +54,7 @@
#if GTEST_OS_LINUX
#if GTEST_OS_LINUX
//
TODO(kenton@google.com)
: Use autoconf to detect availability of
//
FIXME
: Use autoconf to detect availability of
// gettimeofday().
// gettimeofday().
# define GTEST_HAS_GETTIMEOFDAY_ 1
# define GTEST_HAS_GETTIMEOFDAY_ 1
...
@@ -94,9 +93,9 @@
...
@@ -94,9 +93,9 @@
# if GTEST_OS_WINDOWS_MINGW
# if GTEST_OS_WINDOWS_MINGW
// MinGW has gettimeofday() but not _ftime64().
// MinGW has gettimeofday() but not _ftime64().
//
TODO(kenton@google.com)
: Use autoconf to detect availability of
//
FIXME
: Use autoconf to detect availability of
// gettimeofday().
// 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
// Windows, like GetTickCount() or GetSystemTimeAsFileTime(). MinGW
// supports these. consider using them instead.
// supports these. consider using them instead.
# define GTEST_HAS_GETTIMEOFDAY_ 1
# define GTEST_HAS_GETTIMEOFDAY_ 1
...
@@ -111,7 +110,7 @@
...
@@ -111,7 +110,7 @@
#else
#else
// Assume other platforms have gettimeofday().
// Assume other platforms have gettimeofday().
//
TODO(kenton@google.com)
: Use autoconf to detect availability of
//
FIXME
: Use autoconf to detect availability of
// gettimeofday().
// gettimeofday().
# define GTEST_HAS_GETTIMEOFDAY_ 1
# define GTEST_HAS_GETTIMEOFDAY_ 1
...
@@ -468,7 +467,7 @@ std::string UnitTestOptions::GetAbsolutePathToOutputFile() {
...
@@ -468,7 +467,7 @@ std::string UnitTestOptions::GetAbsolutePathToOutputFile() {
internal
::
FilePath
output_name
(
colon
+
1
);
internal
::
FilePath
output_name
(
colon
+
1
);
if
(
!
output_name
.
IsAbsolutePath
())
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
// path (as its meaning depends on the current drive), yet the
// following logic for turning it into an absolute path is wrong.
// following logic for turning it into an absolute path is wrong.
// Fix it.
// Fix it.
...
@@ -842,7 +841,7 @@ TimeInMillis GetTimeInMillis() {
...
@@ -842,7 +841,7 @@ TimeInMillis GetTimeInMillis() {
SYSTEMTIME
now_systime
;
SYSTEMTIME
now_systime
;
FILETIME
now_filetime
;
FILETIME
now_filetime
;
ULARGE_INTEGER
now_int64
;
ULARGE_INTEGER
now_int64
;
//
TODO(kenton@google.com)
: Shouldn't this just use
//
FIXME
: Shouldn't this just use
// GetSystemTimeAsFileTime()?
// GetSystemTimeAsFileTime()?
GetSystemTime
(
&
now_systime
);
GetSystemTime
(
&
now_systime
);
if
(
SystemTimeToFileTime
(
&
now_systime
,
&
now_filetime
))
{
if
(
SystemTimeToFileTime
(
&
now_systime
,
&
now_filetime
))
{
...
@@ -858,11 +857,11 @@ TimeInMillis GetTimeInMillis() {
...
@@ -858,11 +857,11 @@ TimeInMillis GetTimeInMillis() {
// MSVC 8 deprecates _ftime64(), so we want to suppress warning 4996
// MSVC 8 deprecates _ftime64(), so we want to suppress warning 4996
// (deprecated function) there.
// (deprecated function) there.
//
TODO(kenton@google.com)
: Use GetTickCount()? Or use
//
FIXME
: Use GetTickCount()? Or use
// SystemTimeToFileTime()
// SystemTimeToFileTime()
GTEST_DISABLE_MSC_
WARNINGS
_PUSH_
(
4996
)
GTEST_DISABLE_MSC_
DEPRECATED
_PUSH_
()
_ftime64
(
&
now
);
_ftime64
(
&
now
);
GTEST_DISABLE_MSC_
WARNINGS
_POP_
()
GTEST_DISABLE_MSC_
DEPRECATED
_POP_
()
return
static_cast
<
TimeInMillis
>
(
now
.
time
)
*
1000
+
now
.
millitm
;
return
static_cast
<
TimeInMillis
>
(
now
.
time
)
*
1000
+
now
.
millitm
;
#elif GTEST_HAS_GETTIMEOFDAY_
#elif GTEST_HAS_GETTIMEOFDAY_
...
@@ -1397,7 +1396,7 @@ AssertionResult DoubleNearPredFormat(const char* expr1,
...
@@ -1397,7 +1396,7 @@ AssertionResult DoubleNearPredFormat(const char* expr1,
const
double
diff
=
fabs
(
val1
-
val2
);
const
double
diff
=
fabs
(
val1
-
val2
);
if
(
diff
<=
abs_error
)
return
AssertionSuccess
();
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.
// already a literal.
return
AssertionFailure
()
return
AssertionFailure
()
<<
"The difference between "
<<
expr1
<<
" and "
<<
expr2
<<
"The difference between "
<<
expr1
<<
" and "
<<
expr2
...
@@ -3138,6 +3137,7 @@ void PrettyUnitTestResultPrinter::OnTestIterationStart(
...
@@ -3138,6 +3137,7 @@ void PrettyUnitTestResultPrinter::OnTestIterationStart(
"Note: Randomizing tests' orders with a seed of %d .
\n
"
,
"Note: Randomizing tests' orders with a seed of %d .
\n
"
,
unit_test
.
random_seed
());
unit_test
.
random_seed
());
}
}
ColoredPrintf
(
COLOR_GREEN
,
"[==========] "
);
ColoredPrintf
(
COLOR_GREEN
,
"[==========] "
);
printf
(
"Running %s from %s.
\n
"
,
printf
(
"Running %s from %s.
\n
"
,
FormatTestCount
(
unit_test
.
test_to_run_count
()).
c_str
(),
FormatTestCount
(
unit_test
.
test_to_run_count
()).
c_str
(),
...
@@ -3334,7 +3334,7 @@ void TestEventRepeater::Append(TestEventListener *listener) {
...
@@ -3334,7 +3334,7 @@ void TestEventRepeater::Append(TestEventListener *listener) {
listeners_
.
push_back
(
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
)
{
TestEventListener
*
TestEventRepeater
::
Release
(
TestEventListener
*
listener
)
{
for
(
size_t
i
=
0
;
i
<
listeners_
.
size
();
++
i
)
{
for
(
size_t
i
=
0
;
i
<
listeners_
.
size
();
++
i
)
{
if
(
listeners_
[
i
]
==
listener
)
{
if
(
listeners_
[
i
]
==
listener
)
{
...
@@ -3499,7 +3499,7 @@ void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
...
@@ -3499,7 +3499,7 @@ void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
xmlout
=
posix
::
FOpen
(
output_file_
.
c_str
(),
"w"
);
xmlout
=
posix
::
FOpen
(
output_file_
.
c_str
(),
"w"
);
}
}
if
(
xmlout
==
NULL
)
{
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:
// We don't do it for now as:
//
//
...
@@ -3528,7 +3528,7 @@ void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
...
@@ -3528,7 +3528,7 @@ void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
// module will consist of ordinary English text.
// module will consist of ordinary English text.
// If this module is ever modified to produce version 1.1 XML output,
// If this module is ever modified to produce version 1.1 XML output,
// most invalid characters can be retained using character references.
// 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.
// escaping scheme for invalid characters, rather than dropping them.
std
::
string
XmlUnitTestResultPrinter
::
EscapeXml
(
std
::
string
XmlUnitTestResultPrinter
::
EscapeXml
(
const
std
::
string
&
str
,
bool
is_attribute
)
{
const
std
::
string
&
str
,
bool
is_attribute
)
{
...
@@ -3589,6 +3589,7 @@ std::string XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(
...
@@ -3589,6 +3589,7 @@ std::string XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(
// The following routines generate an XML representation of a UnitTest
// The following routines generate an XML representation of a UnitTest
// object.
// object.
// GOOGLETEST_CM0009 DO NOT DELETE
//
//
// This is how Google Test concepts map to the DTD:
// This is how Google Test concepts map to the DTD:
//
//
...
@@ -3678,7 +3679,7 @@ void XmlUnitTestResultPrinter::OutputXmlAttribute(
...
@@ -3678,7 +3679,7 @@ void XmlUnitTestResultPrinter::OutputXmlAttribute(
}
}
// Prints an XML representation of a TestInfo object.
// 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
,
void
XmlUnitTestResultPrinter
::
OutputXmlTestInfo
(
::
std
::
ostream
*
stream
,
const
char
*
test_case_name
,
const
char
*
test_case_name
,
const
TestInfo
&
test_info
)
{
const
TestInfo
&
test_info
)
{
...
@@ -3905,7 +3906,7 @@ void JsonUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
...
@@ -3905,7 +3906,7 @@ void JsonUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
jsonout
=
posix
::
FOpen
(
output_file_
.
c_str
(),
"w"
);
jsonout
=
posix
::
FOpen
(
output_file_
.
c_str
(),
"w"
);
}
}
if
(
jsonout
==
NULL
)
{
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:
// We don't do it for now as:
//
//
...
@@ -4720,7 +4721,7 @@ int UnitTest::Run() {
...
@@ -4720,7 +4721,7 @@ int UnitTest::Run() {
// VC++ doesn't define _set_abort_behavior() prior to the version 8.0.
// 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
// Users of prior VC versions shall suffer the agony and pain of
// clicking through the countless debug dialogs.
// 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.
// debug mode when compiled with VC 7.1 or lower.
if
(
!
GTEST_FLAG
(
break_on_failure
))
if
(
!
GTEST_FLAG
(
break_on_failure
))
_set_abort_behavior
(
_set_abort_behavior
(
...
@@ -5614,7 +5615,7 @@ static bool HasGoogleTestFlagPrefix(const char* str) {
...
@@ -5614,7 +5615,7 @@ static bool HasGoogleTestFlagPrefix(const char* str) {
// @Y changes the color to yellow.
// @Y changes the color to yellow.
// @D changes to the default terminal text color.
// @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.
// capturing to Google Test.
static
void
PrintColorEncoded
(
const
char
*
str
)
{
static
void
PrintColorEncoded
(
const
char
*
str
)
{
GTestColor
color
=
COLOR_DEFAULT
;
// The current color.
GTestColor
color
=
COLOR_DEFAULT
;
// The current color.
...
...
googletest/src/gtest_main.cc
View file @
9d77e63e
...
@@ -26,7 +26,6 @@
...
@@ -26,7 +26,6 @@
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
#include <stdio.h>
#include <stdio.h>
#include "gtest/gtest.h"
#include "gtest/gtest.h"
...
...
googletest/test/BUILD.bazel
View file @
9d77e63e
...
@@ -49,31 +49,48 @@ config_setting(
...
@@ -49,31 +49,48 @@ config_setting(
values
=
{
"define"
:
"absl=1"
},
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
(
cc_test
(
name
=
"gtest_all_test"
,
name
=
"gtest_all_test"
,
size
=
"small"
,
size
=
"small"
,
srcs
=
glob
(
srcs
=
glob
(
include
=
[
include
=
[
"gtest-*.cc"
,
"gtest-*.cc"
,
"googletest-*.cc"
,
"*.h"
,
"*.h"
,
"googletest/include/gtest/**/*.h"
,
"googletest/include/gtest/**/*.h"
,
],
],
exclude
=
[
exclude
=
[
"gtest-unittest-api_test.cc"
,
"gtest-unittest-api_test.cc"
,
"gtest-tuple
_
test.cc"
,
"g
oogle
test-tuple
-
test.cc"
,
"googletest/src/gtest-all.cc"
,
"googletest/src/gtest-all.cc"
,
"gtest_all_test.cc"
,
"gtest_all_test.cc"
,
"gtest-death-test_ex_test.cc"
,
"gtest-death-test_ex_test.cc"
,
"gtest-listener_test.cc"
,
"gtest-listener_test.cc"
,
"gtest-unittest-api_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
({
)
+
select
({
"//:windows"
:
[],
"//:windows"
:
[],
"//:windows_msvc"
:
[],
"//:windows_msvc"
:
[],
"//conditions:default"
:
[
"//conditions:default"
:
[
"gtest-tuple
_
test.cc"
,
"g
oogle
test-tuple
-
test.cc"
,
],
],
}),
}),
copts
=
select
({
copts
=
select
({
...
@@ -98,6 +115,14 @@ cc_test(
...
@@ -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
(
cc_test
(
name
=
"gtest_test_macro_stack_footprint_test"
,
name
=
"gtest_test_macro_stack_footprint_test"
,
size
=
"small"
,
size
=
"small"
,
...
@@ -107,14 +132,10 @@ cc_test(
...
@@ -107,14 +132,10 @@ cc_test(
#These googletest tests have their own main()
#These googletest tests have their own main()
cc_test
(
cc_test
(
name
=
"gtest-listener
_
test"
,
name
=
"g
oogle
test-listener
-
test"
,
size
=
"small"
,
size
=
"small"
,
srcs
=
[
srcs
=
[
"googletest-listener-test.cc"
],
"gtest-listener_test.cc"
,
deps
=
[
"//:gtest_main"
],
],
deps
=
[
"//:gtest"
,
],
)
)
cc_test
(
cc_test
(
...
@@ -129,16 +150,14 @@ cc_test(
...
@@ -129,16 +150,14 @@ cc_test(
)
)
cc_test
(
cc_test
(
name
=
"gtest-param-test
_
test"
,
name
=
"g
oogle
test-param-test
-
test"
,
size
=
"small"
,
size
=
"small"
,
srcs
=
[
srcs
=
[
"gtest-param-test2_test.cc"
,
"googletest-param-test-test.cc"
,
"gtest-param-test_test.cc"
,
"googletest-param-test-test.h"
,
"gtest-param-test_test.h"
,
"googletest-param-test2-test.cc"
,
],
deps
=
[
"//:gtest"
,
],
],
deps
=
[
"//:gtest"
],
)
)
cc_test
(
cc_test
(
...
@@ -174,87 +193,92 @@ py_test(
...
@@ -174,87 +193,92 @@ py_test(
)
)
cc_binary
(
cc_binary
(
name
=
"gtest
_
output
_
test_"
,
name
=
"g
oogle
test
-
output
-
test_"
,
testonly
=
1
,
testonly
=
1
,
srcs
=
[
"gtest
_
output
_
test_.cc"
],
srcs
=
[
"g
oogle
test
-
output
-
test_.cc"
],
deps
=
[
"//:gtest"
],
deps
=
[
"//:gtest"
],
)
)
py_test
(
py_test
(
name
=
"gtest
_
output
_
test"
,
name
=
"g
oogle
test
-
output
-
test"
,
size
=
"small"
,
size
=
"small"
,
srcs
=
[
"gtest
_
output
_
test.py"
],
srcs
=
[
"g
oogle
test
-
output
-
test.py"
],
args
=
select
({
args
=
select
({
":has_absl"
:
[],
":has_absl"
:
[],
"//conditions:default"
:
[
"--no_stacktrace_support"
],
"//conditions:default"
:
[
"--no_stacktrace_support"
],
}),
}),
data
=
[
data
=
[
"gtest
_
output
_
test
_
golden
_
lin.txt"
,
"g
oogle
test
-
output
-
test
-
golden
-
lin.txt"
,
":gtest
_
output
_
test_"
,
":g
oogle
test
-
output
-
test_"
,
],
],
deps
=
[
":gtest_test_utils"
],
deps
=
[
":gtest_test_utils"
],
)
)
cc_binary
(
cc_binary
(
name
=
"gtest
_
color
_
test_"
,
name
=
"g
oogle
test
-
color
-
test_"
,
testonly
=
1
,
testonly
=
1
,
srcs
=
[
"gtest
_
color
_
test_.cc"
],
srcs
=
[
"g
oogle
test
-
color
-
test_.cc"
],
deps
=
[
"//:gtest"
],
deps
=
[
"//:gtest"
],
)
)
py_test
(
py_test
(
name
=
"gtest
_
color
_
test"
,
name
=
"g
oogle
test
-
color
-
test"
,
size
=
"small"
,
size
=
"small"
,
srcs
=
[
"gtest
_
color
_
test.py"
],
srcs
=
[
"g
oogle
test
-
color
-
test.py"
],
data
=
[
":gtest
_
color
_
test_"
],
data
=
[
":g
oogle
test
-
color
-
test_"
],
deps
=
[
":gtest_test_utils"
],
deps
=
[
":gtest_test_utils"
],
)
)
cc_binary
(
cc_binary
(
name
=
"gtest
_
env
_
var
_
test_"
,
name
=
"g
oogle
test
-
env
-
var
-
test_"
,
testonly
=
1
,
testonly
=
1
,
srcs
=
[
"gtest
_
env
_
var
_
test_.cc"
],
srcs
=
[
"g
oogle
test
-
env
-
var
-
test_.cc"
],
deps
=
[
"//:gtest"
],
deps
=
[
"//:gtest"
],
)
)
py_test
(
py_test
(
name
=
"gtest
_
env
_
var
_
test"
,
name
=
"g
oogle
test
-
env
-
var
-
test"
,
size
=
"
small
"
,
size
=
"
medium
"
,
srcs
=
[
"gtest
_
env
_
var
_
test.py"
],
srcs
=
[
"g
oogle
test
-
env
-
var
-
test.py"
],
data
=
[
":gtest
_
env
_
var
_
test_"
],
data
=
[
":g
oogle
test
-
env
-
var
-
test_"
],
deps
=
[
":gtest_test_utils"
],
deps
=
[
":gtest_test_utils"
],
)
)
cc_binary
(
cc_binary
(
name
=
"gtest
_
filter
_
unittest_"
,
name
=
"g
oogle
test
-
filter
-
unittest_"
,
testonly
=
1
,
testonly
=
1
,
srcs
=
[
"gtest
_
filter
_
unittest_.cc"
],
srcs
=
[
"g
oogle
test
-
filter
-
unittest_.cc"
],
deps
=
[
"//:gtest"
],
deps
=
[
"//:gtest"
],
)
)
py_test
(
py_test
(
name
=
"gtest
_
filter
_
unittest"
,
name
=
"g
oogle
test
-
filter
-
unittest"
,
size
=
"
small
"
,
size
=
"
medium
"
,
srcs
=
[
"gtest
_
filter
_
unittest.py"
],
srcs
=
[
"g
oogle
test
-
filter
-
unittest.py"
],
data
=
[
":gtest
_
filter
_
unittest_"
],
data
=
[
":g
oogle
test
-
filter
-
unittest_"
],
deps
=
[
":gtest_test_utils"
],
deps
=
[
":gtest_test_utils"
],
)
)
cc_binary
(
cc_binary
(
name
=
"gtest
_
break
_
on
_
failure
_
unittest_"
,
name
=
"g
oogle
test
-
break
-
on
-
failure
-
unittest_"
,
testonly
=
1
,
testonly
=
1
,
srcs
=
[
"gtest
_
break
_
on
_
failure
_
unittest_.cc"
],
srcs
=
[
"g
oogle
test
-
break
-
on
-
failure
-
unittest_.cc"
],
deps
=
[
"//:gtest"
],
deps
=
[
"//:gtest"
],
)
)
py_test
(
py_test
(
name
=
"gtest
_
break
_
on
_
failure
_
unittest"
,
name
=
"g
oogle
test
-
break
-
on
-
failure
-
unittest"
,
size
=
"small"
,
size
=
"small"
,
srcs
=
[
"gtest
_
break
_
on
_
failure
_
unittest.py"
],
srcs
=
[
"g
oogle
test
-
break
-
on
-
failure
-
unittest.py"
],
data
=
[
":gtest
_
break
_
on
_
failure
_
unittest_"
],
data
=
[
":g
oogle
test
-
break
-
on
-
failure
-
unittest_"
],
deps
=
[
":gtest_test_utils"
],
deps
=
[
":gtest_test_utils"
],
)
)
cc_test
(
cc_test
(
name
=
"gtest_assert_by_exception_test"
,
name
=
"gtest_assert_by_exception_test"
,
size
=
"small"
,
size
=
"small"
,
...
@@ -262,72 +286,75 @@ cc_test(
...
@@ -262,72 +286,75 @@ cc_test(
deps
=
[
"//:gtest"
],
deps
=
[
"//:gtest"
],
)
)
cc_binary
(
cc_binary
(
name
=
"gtest
_
throw
_
on
_
failure
_
test_"
,
name
=
"g
oogle
test
-
throw
-
on
-
failure
-
test_"
,
testonly
=
1
,
testonly
=
1
,
srcs
=
[
"gtest
_
throw
_
on
_
failure
_
test_.cc"
],
srcs
=
[
"g
oogle
test
-
throw
-
on
-
failure
-
test_.cc"
],
deps
=
[
"//:gtest"
],
deps
=
[
"//:gtest"
],
)
)
py_test
(
py_test
(
name
=
"gtest
_
throw
_
on
_
failure
_
test"
,
name
=
"g
oogle
test
-
throw
-
on
-
failure
-
test"
,
size
=
"small"
,
size
=
"small"
,
srcs
=
[
"gtest
_
throw
_
on
_
failure
_
test.py"
],
srcs
=
[
"g
oogle
test
-
throw
-
on
-
failure
-
test.py"
],
data
=
[
":gtest
_
throw
_
on
_
failure
_
test_"
],
data
=
[
":g
oogle
test
-
throw
-
on
-
failure
-
test_"
],
deps
=
[
":gtest_test_utils"
],
deps
=
[
":gtest_test_utils"
],
)
)
cc_binary
(
cc_binary
(
name
=
"gtest
_
list
_
tests
_
unittest_"
,
name
=
"g
oogle
test
-
list
-
tests
-
unittest_"
,
testonly
=
1
,
testonly
=
1
,
srcs
=
[
"gtest
_
list
_
tests
_
unittest_.cc"
],
srcs
=
[
"g
oogle
test
-
list
-
tests
-
unittest_.cc"
],
deps
=
[
"//:gtest"
],
deps
=
[
"//:gtest"
],
)
)
py_test
(
py_test
(
name
=
"gtest
_
list
_
tests
_
unittest"
,
name
=
"g
oogle
test
-
list
-
tests
-
unittest"
,
size
=
"small"
,
size
=
"small"
,
srcs
=
[
"gtest
_
list
_
tests
_
unittest.py"
],
srcs
=
[
"g
oogle
test
-
list
-
tests
-
unittest.py"
],
data
=
[
":gtest
_
list
_
tests
_
unittest_"
],
data
=
[
":g
oogle
test
-
list
-
tests
-
unittest_"
],
deps
=
[
":gtest_test_utils"
],
deps
=
[
":gtest_test_utils"
],
)
)
cc_binary
(
cc_binary
(
name
=
"gtest
_
shuffle
_
test_"
,
name
=
"g
oogle
test
-
shuffle
-
test_"
,
srcs
=
[
"gtest
_
shuffle
_
test_.cc"
],
srcs
=
[
"g
oogle
test
-
shuffle
-
test_.cc"
],
deps
=
[
"//:gtest"
],
deps
=
[
"//:gtest"
],
)
)
py_test
(
py_test
(
name
=
"gtest
_
shuffle
_
test"
,
name
=
"g
oogle
test
-
shuffle
-
test"
,
size
=
"small"
,
size
=
"small"
,
srcs
=
[
"gtest
_
shuffle
_
test.py"
],
srcs
=
[
"g
oogle
test
-
shuffle
-
test.py"
],
data
=
[
":gtest
_
shuffle
_
test_"
],
data
=
[
":g
oogle
test
-
shuffle
-
test_"
],
deps
=
[
":gtest_test_utils"
],
deps
=
[
":gtest_test_utils"
],
)
)
cc_binary
(
cc_binary
(
name
=
"gtest
_
catch
_
exceptions
_
no
_
ex
_
test_"
,
name
=
"g
oogle
test
-
catch
-
exceptions
-
no
-
ex
-
test_"
,
testonly
=
1
,
testonly
=
1
,
srcs
=
[
"gtest
_
catch
_
exceptions
_
test_.cc"
],
srcs
=
[
"g
oogle
test
-
catch
-
exceptions
-
test_.cc"
],
deps
=
[
"//:gtest_main"
],
deps
=
[
"//:gtest_main"
],
)
)
cc_binary
(
cc_binary
(
name
=
"gtest
_
catch
_
exceptions
_
ex
_
test_"
,
name
=
"g
oogle
test
-
catch
-
exceptions
-
ex
-
test_"
,
testonly
=
1
,
testonly
=
1
,
srcs
=
[
"gtest
_
catch
_
exceptions
_
test_.cc"
],
srcs
=
[
"g
oogle
test
-
catch
-
exceptions
-
test_.cc"
],
copts
=
[
"-fexceptions"
],
copts
=
[
"-fexceptions"
],
deps
=
[
"//:gtest_main"
],
deps
=
[
"//:gtest_main"
],
)
)
py_test
(
py_test
(
name
=
"gtest
_
catch
_
exceptions
_
test"
,
name
=
"g
oogle
test
-
catch
-
exceptions
-
test"
,
size
=
"small"
,
size
=
"small"
,
srcs
=
[
"gtest
_
catch
_
exceptions
_
test.py"
],
srcs
=
[
"g
oogle
test
-
catch
-
exceptions
-
test.py"
],
data
=
[
data
=
[
":gtest
_
catch
_
exceptions
_
ex
_
test_"
,
":g
oogle
test
-
catch
-
exceptions
-
ex
-
test_"
,
":gtest
_
catch
_
exceptions
_
no
_
ex
_
test_"
,
":g
oogle
test
-
catch
-
exceptions
-
no
-
ex
-
test_"
,
],
],
deps
=
[
":gtest_test_utils"
],
deps
=
[
":gtest_test_utils"
],
)
)
...
@@ -395,17 +422,17 @@ py_test(
...
@@ -395,17 +422,17 @@ py_test(
)
)
cc_binary
(
cc_binary
(
name
=
"gtest
_
uninitialized
_
test_"
,
name
=
"g
oogle
test
-
uninitialized
-
test_"
,
testonly
=
1
,
testonly
=
1
,
srcs
=
[
"gtest
_
uninitialized
_
test_.cc"
],
srcs
=
[
"g
oogle
test
-
uninitialized
-
test_.cc"
],
deps
=
[
"//:gtest"
],
deps
=
[
"//:gtest"
],
)
)
py_test
(
py_test
(
name
=
"gtest
_
uninitialized
_
test"
,
name
=
"g
oogle
test
-
uninitialized
-
test"
,
size
=
"medium"
,
size
=
"medium"
,
srcs
=
[
"gtest
_
uninitialized
_
test.py"
],
srcs
=
[
"g
oogle
test
-
uninitialized
-
test.py"
],
data
=
[
"
:
gtest
_
uninitialized
_
test_"
],
data
=
[
"g
oogle
test
-
uninitialized
-
test_"
],
deps
=
[
":gtest_test_utils"
],
deps
=
[
":gtest_test_utils"
],
)
)
...
@@ -424,3 +451,77 @@ py_test(
...
@@ -424,3 +451,77 @@ py_test(
data
=
[
":gtest_testbridge_test_"
],
data
=
[
":gtest_testbridge_test_"
],
deps
=
[
":gtest_test_utils"
],
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 @@
...
@@ -34,12 +34,10 @@
A user can ask Google Test to seg-fault when an assertion fails, using
A user can ask Google Test to seg-fault when an assertion fails, using
either the GTEST_BREAK_ON_FAILURE environment variable or the
either the GTEST_BREAK_ON_FAILURE environment variable or the
--gtest_break_on_failure flag. This script tests such functionality
--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.
Google Test) with different environments and command line flags.
"""
"""
__author__
=
'wan@google.com (Zhanyong Wan)'
import
os
import
os
import
gtest_test_utils
import
gtest_test_utils
...
@@ -59,9 +57,9 @@ THROW_ON_FAILURE_ENV_VAR = 'GTEST_THROW_ON_FAILURE'
...
@@ -59,9 +57,9 @@ THROW_ON_FAILURE_ENV_VAR = 'GTEST_THROW_ON_FAILURE'
# The environment variable for enabling/disabling the catch-exceptions mode.
# The environment variable for enabling/disabling the catch-exceptions mode.
CATCH_EXCEPTIONS_ENV_VAR
=
'GTEST_CATCH_EXCEPTIONS'
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
(
EXE_PATH
=
gtest_test_utils
.
GetTestExecutablePath
(
'gtest
_
break
_
on
_
failure
_
unittest_'
)
'g
oogle
test
-
break
-
on
-
failure
-
unittest_'
)
environ
=
gtest_test_utils
.
environ
environ
=
gtest_test_utils
.
environ
...
@@ -95,7 +93,7 @@ class GTestBreakOnFailureUnitTest(gtest_test_utils.TestCase):
...
@@ -95,7 +93,7 @@ class GTestBreakOnFailureUnitTest(gtest_test_utils.TestCase):
"""
"""
def
RunAndVerify
(
self
,
env_var_value
,
flag_value
,
expect_seg_fault
):
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.
(or does not) have a seg-fault.
Args:
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 @@
...
@@ -26,8 +26,7 @@
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// 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.
// 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 @@
...
@@ -30,13 +30,11 @@
"""Tests Google Test's exception catching behavior.
"""Tests Google Test's exception catching behavior.
This script invokes gtest
_
catch
_
exceptions
_
test_ and
This script invokes g
oogle
test
-
catch
-
exceptions
-
test_ and
gtest
_
catch
_
exceptions
_
ex
_
test_ (programs written with
g
oogle
test
-
catch
-
exceptions
-
ex
-
test_ (programs written with
Google Test) and verifies their output.
Google Test) and verifies their output.
"""
"""
__author__
=
'vladl@google.com (Vlad Losev)'
import
gtest_test_utils
import
gtest_test_utils
# Constants.
# Constants.
...
@@ -45,15 +43,15 @@ LIST_TESTS_FLAG = FLAG_PREFIX + 'list_tests'
...
@@ -45,15 +43,15 @@ LIST_TESTS_FLAG = FLAG_PREFIX + 'list_tests'
NO_CATCH_EXCEPTIONS_FLAG
=
FLAG_PREFIX
+
'catch_exceptions=0'
NO_CATCH_EXCEPTIONS_FLAG
=
FLAG_PREFIX
+
'catch_exceptions=0'
FILTER_FLAG
=
FLAG_PREFIX
+
'filter'
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.
# exceptions enabled.
EX_EXE_PATH
=
gtest_test_utils
.
GetTestExecutablePath
(
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.
# exceptions disabled.
EXE_PATH
=
gtest_test_utils
.
GetTestExecutablePath
(
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
environ
=
gtest_test_utils
.
environ
SetEnvVar
=
gtest_test_utils
.
SetEnvVar
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 @@
...
@@ -26,17 +26,17 @@
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// 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
// 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.
// exceptions, and the output is verified by
// googletest-catch-exceptions-test.py.
#include "gtest/gtest.h"
#include <stdio.h> // NOLINT
#include <stdio.h> // NOLINT
#include <stdlib.h> // For exit().
#include <stdlib.h> // For exit().
#include "gtest/gtest.h"
#if GTEST_HAS_SEH
#if GTEST_HAS_SEH
# include <windows.h>
# include <windows.h>
#endif
#endif
...
...
googletest/test/gtest
_
color
_
test.py
→
googletest/test/g
oogle
test
-
color
-
test.py
View file @
9d77e63e
...
@@ -31,8 +31,6 @@
...
@@ -31,8 +31,6 @@
"""Verifies that Google Test correctly determines whether to use colors."""
"""Verifies that Google Test correctly determines whether to use colors."""
__author__
=
'wan@google.com (Zhanyong Wan)'
import
os
import
os
import
gtest_test_utils
import
gtest_test_utils
...
@@ -40,7 +38,7 @@ IS_WINDOWS = os.name == 'nt'
...
@@ -40,7 +38,7 @@ IS_WINDOWS = os.name == 'nt'
COLOR_ENV_VAR
=
'GTEST_COLOR'
COLOR_ENV_VAR
=
'GTEST_COLOR'
COLOR_FLAG
=
'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
):
def
SetEnvVar
(
env_var
,
value
):
...
@@ -53,7 +51,7 @@ def SetEnvVar(env_var, value):
...
@@ -53,7 +51,7 @@ def SetEnvVar(env_var, value):
def
UsesColor
(
term
,
color_env_var
,
color_flag
):
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
(
'TERM'
,
term
)
SetEnvVar
(
COLOR_ENV_VAR
,
color_env_var
)
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 @@
...
@@ -26,8 +26,7 @@
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// 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
// 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
// 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