40#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
41#define GOOGLETEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
43#include "gtest/internal/gtest-death-test-internal.h"
50GTEST_DECLARE_string_(death_test_style);
54#if GTEST_HAS_DEATH_TEST
63GTEST_API_
bool InDeathTestChild();
173#define ASSERT_EXIT(statement, predicate, matcher) \
174 GTEST_DEATH_TEST_(statement, predicate, matcher, GTEST_FATAL_FAILURE_)
178#define EXPECT_EXIT(statement, predicate, matcher) \
179 GTEST_DEATH_TEST_(statement, predicate, matcher, GTEST_NONFATAL_FAILURE_)
184#define ASSERT_DEATH(statement, matcher) \
185 ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, matcher)
189#define EXPECT_DEATH(statement, matcher) \
190 EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, matcher)
195class GTEST_API_ ExitedWithCode {
197 explicit ExitedWithCode(
int exit_code);
198 ExitedWithCode(
const ExitedWithCode&) =
default;
199 void operator=(
const ExitedWithCode& other) =
delete;
200 bool operator()(
int exit_status)
const;
203 const int exit_code_;
206#if !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
209class GTEST_API_ KilledBySignal {
211 explicit KilledBySignal(
int signum);
212 bool operator()(
int exit_status)
const;
264#define EXPECT_DEBUG_DEATH(statement, regex) \
265 GTEST_EXECUTE_STATEMENT_(statement, regex)
267#define ASSERT_DEBUG_DEATH(statement, regex) \
268 GTEST_EXECUTE_STATEMENT_(statement, regex)
272#define EXPECT_DEBUG_DEATH(statement, regex) EXPECT_DEATH(statement, regex)
274#define ASSERT_DEBUG_DEATH(statement, regex) ASSERT_DEATH(statement, regex)
314#define GTEST_UNSUPPORTED_DEATH_TEST(statement, regex, terminator) \
315 GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
316 if (::testing::internal::AlwaysTrue()) { \
317 GTEST_LOG_(WARNING) << "Death tests are not supported on this platform.\n" \
318 << "Statement '" #statement "' cannot be verified."; \
319 } else if (::testing::internal::AlwaysFalse()) { \
320 ::testing::internal::RE::PartialMatch(".*", (regex)); \
321 GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
331#if GTEST_HAS_DEATH_TEST
332#define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
333 EXPECT_DEATH(statement, regex)
334#define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
335 ASSERT_DEATH(statement, regex)
337#define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
338 GTEST_UNSUPPORTED_DEATH_TEST(statement, regex, )
339#define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
340 GTEST_UNSUPPORTED_DEATH_TEST(statement, regex, return)