Fixes death-test-related tests on Windows, by Vlad Losev.

This commit is contained in:
zhanyong.wan 2009-03-11 18:31:26 +00:00
parent 40e72a8a83
commit 44a041b711
6 changed files with 17 additions and 11 deletions

View File

@ -616,6 +616,7 @@ class TypedTestCasePState {
fprintf(stderr, "%s Test %s must be defined before "
"REGISTER_TYPED_TEST_CASE_P(%s, ...).\n",
FormatFileLocation(file, line).c_str(), test_name, case_name);
fflush(stderr);
abort();
}
defined_test_names_.insert(test_name);

View File

@ -198,7 +198,7 @@
// simple regex implementation instead.
#define GTEST_USES_SIMPLE_RE 1
#endif // GTEST_OS_LINUX
#endif // GTEST_OS_CYGWIN || GTEST_OS_LINUX || GTEST_OS_MAC
// Defines GTEST_HAS_EXCEPTIONS to 1 if exceptions are enabled, or 0
// otherwise.

View File

@ -49,16 +49,17 @@
#include <stddef.h>
#include <stdlib.h> // For strtoll/_strtoul64.
#include <string>
#include <gtest/internal/gtest-port.h>
#if GTEST_OS_WINDOWS
#include <windows.h> // For DWORD.
#endif // GTEST_OS_WINDOWS
#include <gtest/internal/gtest-port.h>
#include <gtest/gtest.h>
#include <gtest/gtest-spi.h>
#include <string>
namespace testing {
// Declares the flags.

View File

@ -85,6 +85,7 @@ const char* TypedTestCasePState::VerifyRegisteredTestNames(
if (errors_str != "") {
fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(),
errors_str.c_str());
fflush(stderr);
abort();
}

View File

@ -46,6 +46,7 @@
#include <limits.h>
#include <signal.h>
#include <stdio.h>
#include <gtest/gtest-spi.h>
// Indicates that this translation unit is part of Google Test's
@ -284,14 +285,16 @@ void DieWithEmbeddedNul() {
_exit(1);
}
#if GTEST_USES_PCRE
// Tests that EXPECT_DEATH and ASSERT_DEATH work when the error
// message has a NUL character in it.
TEST_F(TestForDeathTest, DISABLED_EmbeddedNulInMessage) {
TEST_F(TestForDeathTest, EmbeddedNulInMessage) {
// TODO(wan@google.com): <regex.h> doesn't support matching strings
// with embedded NUL characters - find a way to workaround it.
EXPECT_DEATH(DieWithEmbeddedNul(), "w.*ld");
ASSERT_DEATH(DieWithEmbeddedNul(), "w.*ld");
}
#endif // GTEST_USES_PCRE
// Tests that death test macros expand to code which interacts well with switch
// statements.
@ -594,7 +597,7 @@ void ExpectDebugDeathHelper(bool* aborted) {
}
#if GTEST_OS_WINDOWS
TEST(TestForPopUps, DoesNotShowPopUpOnAbort) {
TEST(PopUpDeathTest, DoesNotShowPopUpOnAbort) {
printf("This test should be considered failing if it shows "
"any pop-up dialogs.\n");
fflush(stdout);
@ -605,7 +608,7 @@ TEST(TestForPopUps, DoesNotShowPopUpOnAbort) {
}, "");
}
TEST(TestForPopUps, DoesNotShowPopUpOnThrow) {
TEST(PopUpDeathTest, DoesNotShowPopUpOnThrow) {
printf("This test should be considered failing if it shows "
"any pop-up dialogs.\n");
fflush(stdout);

View File

@ -205,19 +205,19 @@ typedef TypedTestCasePStateTest TypedTestCasePStateDeathTest;
TEST_F(TypedTestCasePStateDeathTest, DetectsDuplicates) {
EXPECT_DEATH(
state_.VerifyRegisteredTestNames("foo.cc", 1, "A, B, A, C"),
"foo\\.cc:1: Test A is listed more than once\\.");
"foo\\.cc.1.?: Test A is listed more than once\\.");
}
TEST_F(TypedTestCasePStateDeathTest, DetectsExtraTest) {
EXPECT_DEATH(
state_.VerifyRegisteredTestNames("foo.cc", 1, "A, B, C, D"),
"foo\\.cc:1: No test named D can be found in this test case\\.");
"foo\\.cc.1.?: No test named D can be found in this test case\\.");
}
TEST_F(TypedTestCasePStateDeathTest, DetectsMissedTest) {
EXPECT_DEATH(
state_.VerifyRegisteredTestNames("foo.cc", 1, "A, C"),
"foo\\.cc:1: You forgot to list test B\\.");
"foo\\.cc.1.?: You forgot to list test B\\.");
}
// Tests that defining a test for a parameterized test case generates
@ -226,7 +226,7 @@ TEST_F(TypedTestCasePStateDeathTest, DetectsTestAfterRegistration) {
state_.VerifyRegisteredTestNames("foo.cc", 1, "A, B, C");
EXPECT_DEATH(
state_.AddTestName("foo.cc", 2, "FooTest", "D"),
"foo\\.cc:2: Test D must be defined before REGISTER_TYPED_TEST_CASE_P"
"foo\\.cc.2.?: Test D must be defined before REGISTER_TYPED_TEST_CASE_P"
"\\(FooTest, \\.\\.\\.\\)\\.");
}