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
172b233a
Commit
172b233a
authored
Mar 02, 2010
by
vladlosev
Browse files
Modifies gtest-death-test_test not to use core-dumping API calls.
parent
fe787609
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
25 additions
and
28 deletions
+25
-28
test/gtest-death-test_test.cc
test/gtest-death-test_test.cc
+25
-28
No files found.
test/gtest-death-test_test.cc
View file @
172b233a
...
...
@@ -103,6 +103,16 @@ class ReplaceDeathTestFactory {
}
// namespace internal
}
// namespace testing
void
DieInside
(
const
char
*
function
)
{
fprintf
(
stderr
,
"death inside %s()."
,
function
);
fflush
(
stderr
);
// We call _exit() instead of exit(), as the former is a direct
// system call and thus safer in the presence of threads. exit()
// will invoke user-defined exit-hooks, which may do dangerous
// things that conflict with death tests.
_exit
(
1
);
}
// Tests that death tests work.
class
TestForDeathTest
:
public
testing
::
Test
{
...
...
@@ -114,23 +124,12 @@ class TestForDeathTest : public testing::Test {
}
// A static member function that's expected to die.
static
void
StaticMemberFunction
()
{
fprintf
(
stderr
,
"%s"
,
"death inside StaticMemberFunction()."
);
fflush
(
stderr
);
// We call _exit() instead of exit(), as the former is a direct
// system call and thus safer in the presence of threads. exit()
// will invoke user-defined exit-hooks, which may do dangerous
// things that conflict with death tests.
_exit
(
1
);
}
static
void
StaticMemberFunction
()
{
DieInside
(
"StaticMemberFunction"
);
}
// A method of the test fixture that may die.
void
MemberFunction
()
{
if
(
should_die_
)
{
fprintf
(
stderr
,
"%s"
,
"death inside MemberFunction()."
);
fflush
(
stderr
);
_exit
(
1
);
}
if
(
should_die_
)
DieInside
(
"MemberFunction"
);
}
// True iff MemberFunction() should die.
...
...
@@ -145,9 +144,8 @@ class MayDie {
// A member function that may die.
void
MemberFunction
()
const
{
if
(
should_die_
)
{
GTEST_LOG_
(
FATAL
)
<<
"death inside MayDie::MemberFunction()."
;
}
if
(
should_die_
)
DieInside
(
"MayDie::MemberFunction"
);
}
private:
...
...
@@ -156,27 +154,24 @@ class MayDie {
};
// A global function that's expected to die.
void
GlobalFunction
()
{
GTEST_LOG_
(
FATAL
)
<<
"death inside GlobalFunction()."
;
}
void
GlobalFunction
()
{
DieInside
(
"GlobalFunction"
);
}
// A non-void function that's expected to die.
int
NonVoidFunction
()
{
GTEST_LOG_
(
FATAL
)
<<
"death i
nside
NonVoidFunction
().
"
;
DieI
nside
(
"
NonVoidFunction"
)
;
return
1
;
}
// A unary function that may die.
void
DieIf
(
bool
should_die
)
{
if
(
should_die
)
{
GTEST_LOG_
(
FATAL
)
<<
"death inside DieIf()."
;
}
if
(
should_die
)
DieInside
(
"DieIf"
);
}
// A binary function that may die.
bool
DieIfLessThan
(
int
x
,
int
y
)
{
if
(
x
<
y
)
{
GTEST_LOG_
(
FATAL
)
<<
"death i
nside
DieIfLessThan
().
"
;
DieI
nside
(
"
DieIfLessThan"
)
;
}
return
true
;
}
...
...
@@ -191,7 +186,7 @@ void DeathTestSubroutine() {
int
DieInDebugElse12
(
int
*
sideeffect
)
{
if
(
sideeffect
)
*
sideeffect
=
12
;
#ifndef NDEBUG
GTEST_LOG_
(
FATAL
)
<<
"debug death i
nside
DieInDebugElse12
()
"
;
DieI
nside
(
"
DieInDebugElse12"
)
;
#endif // NDEBUG
return
12
;
}
...
...
@@ -1111,8 +1106,10 @@ TEST(EnvironmentTest, HandleFitsIntoSizeT) {
// Tests that EXPECT_DEATH_IF_SUPPORTED/ASSERT_DEATH_IF_SUPPORTED trigger
// failures when death tests are available on the system.
TEST
(
ConditionalDeathMacrosDeathTest
,
ExpectsDeathWhenDeathTestsAvailable
)
{
EXPECT_DEATH_IF_SUPPORTED
(
GTEST_CHECK_
(
false
)
<<
"failure"
,
"false.*failure"
);
ASSERT_DEATH_IF_SUPPORTED
(
GTEST_CHECK_
(
false
)
<<
"failure"
,
"false.*failure"
);
EXPECT_DEATH_IF_SUPPORTED
(
DieInside
(
"CondDeathTestExpectMacro"
),
"death inside CondDeathTestExpectMacro"
);
ASSERT_DEATH_IF_SUPPORTED
(
DieInside
(
"CondDeathTestAssertMacro"
),
"death inside CondDeathTestAssertMacro"
);
// Empty statement will not crash, which must trigger a failure.
EXPECT_NONFATAL_FAILURE
(
EXPECT_DEATH_IF_SUPPORTED
(;,
""
),
""
);
...
...
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