mirror of
https://github.com/google/googletest.git
synced 2024-12-29 03:33:40 +08:00
Merge pull request #2764 from kuzkry:googletest-output-test-dead-code
PiperOrigin-RevId: 303414597
This commit is contained in:
commit
01e4fbf5ca
@ -476,63 +476,6 @@ TEST(GtestFailAtTest, MessageContainsSpecifiedFileAndLineNumber) {
|
|||||||
GTEST_FAIL_AT("foo.cc", 42) << "Expected fatal failure in foo.cc";
|
GTEST_FAIL_AT("foo.cc", 42) << "Expected fatal failure in foo.cc";
|
||||||
}
|
}
|
||||||
|
|
||||||
#if GTEST_IS_THREADSAFE
|
|
||||||
|
|
||||||
// A unary function that may die.
|
|
||||||
void DieIf(bool should_die) {
|
|
||||||
GTEST_CHECK_(!should_die) << " - death inside DieIf().";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tests running death tests in a multi-threaded context.
|
|
||||||
|
|
||||||
// Used for coordination between the main and the spawn thread.
|
|
||||||
struct SpawnThreadNotifications {
|
|
||||||
SpawnThreadNotifications() {}
|
|
||||||
|
|
||||||
Notification spawn_thread_started;
|
|
||||||
Notification spawn_thread_ok_to_terminate;
|
|
||||||
|
|
||||||
private:
|
|
||||||
GTEST_DISALLOW_COPY_AND_ASSIGN_(SpawnThreadNotifications);
|
|
||||||
};
|
|
||||||
|
|
||||||
// The function to be executed in the thread spawn by the
|
|
||||||
// MultipleThreads test (below).
|
|
||||||
static void ThreadRoutine(SpawnThreadNotifications* notifications) {
|
|
||||||
// Signals the main thread that this thread has started.
|
|
||||||
notifications->spawn_thread_started.Notify();
|
|
||||||
|
|
||||||
// Waits for permission to finish from the main thread.
|
|
||||||
notifications->spawn_thread_ok_to_terminate.WaitForNotification();
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is a death-test test, but it's not named with a DeathTest
|
|
||||||
// suffix. It starts threads which might interfere with later
|
|
||||||
// death tests, so it must run after all other death tests.
|
|
||||||
class DeathTestAndMultiThreadsTest : public testing::Test {
|
|
||||||
protected:
|
|
||||||
// Starts a thread and waits for it to begin.
|
|
||||||
void SetUp() override {
|
|
||||||
thread_.reset(new ThreadWithParam<SpawnThreadNotifications*>(
|
|
||||||
&ThreadRoutine, ¬ifications_, nullptr));
|
|
||||||
notifications_.spawn_thread_started.WaitForNotification();
|
|
||||||
}
|
|
||||||
// Tells the thread to finish, and reaps it.
|
|
||||||
// Depending on the version of the thread library in use,
|
|
||||||
// a manager thread might still be left running that will interfere
|
|
||||||
// with later death tests. This is unfortunate, but this class
|
|
||||||
// cleans up after itself as best it can.
|
|
||||||
void TearDown() override {
|
|
||||||
notifications_.spawn_thread_ok_to_terminate.Notify();
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
SpawnThreadNotifications notifications_;
|
|
||||||
std::unique_ptr<ThreadWithParam<SpawnThreadNotifications*> > thread_;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // GTEST_IS_THREADSAFE
|
|
||||||
|
|
||||||
// The MixedUpTestSuiteTest test case verifies that Google Test will fail a
|
// The MixedUpTestSuiteTest test case verifies that Google Test will fail a
|
||||||
// test if it uses a different fixture class than what other tests in
|
// test if it uses a different fixture class than what other tests in
|
||||||
// the same test case use. It deliberately contains two fixture
|
// the same test case use. It deliberately contains two fixture
|
||||||
|
Loading…
x
Reference in New Issue
Block a user