diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-19 09:11:39 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-19 09:11:39 +0000 |
commit | 4ea927b886af2654b5a193278c0bfb6c25b56fc7 (patch) | |
tree | 81c0a1916e2b683b687ed6538386fcdbc9261c11 /base/at_exit_unittest.cc | |
parent | d10852ddcea9285a2808a1fa0caeddf4c5e221e0 (diff) | |
download | chromium_src-4ea927b886af2654b5a193278c0bfb6c25b56fc7.zip chromium_src-4ea927b886af2654b5a193278c0bfb6c25b56fc7.tar.gz chromium_src-4ea927b886af2654b5a193278c0bfb6c25b56fc7.tar.bz2 |
Isolate tests by running AtExit callbacks between them.
For now, this is only for base_unittests. The plan is to enable
it for all unit tests. This should finally fix mysterious
problems cause by Singletons surviving after one test etc.
This change also adapts LazyInstance so that it can be reused
after being destroyed. It is used very frequently, for example
each time a MessageLoop is used. It is also worth noting that
we had some problems in the past related to the MessageLoop
being destroyed and re-instantiated in the same test executable.
This patch should also fix that.
TEST=none
BUG=12710
Review URL: http://codereview.chromium.org/372057
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32507 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/at_exit_unittest.cc')
-rw-r--r-- | base/at_exit_unittest.cc | 24 |
1 files changed, 9 insertions, 15 deletions
diff --git a/base/at_exit_unittest.cc b/base/at_exit_unittest.cc index 50dec04..2fbed25 100644 --- a/base/at_exit_unittest.cc +++ b/base/at_exit_unittest.cc @@ -8,13 +8,6 @@ namespace { -// Don't test the global AtExitManager, because asking it to process its -// AtExit callbacks can ruin the global state that other tests may depend on. -class ShadowingAtExitManager : public base::AtExitManager { - public: - ShadowingAtExitManager() : AtExitManager(true) {} -}; - int g_test_counter_1 = 0; int g_test_counter_2 = 0; @@ -45,9 +38,14 @@ void ExpectParamIsCounter(void* param) { } // namespace -TEST(AtExitTest, Basic) { - ShadowingAtExitManager shadowing_at_exit_manager; +class AtExitTest : public testing::Test { + private: + // Don't test the global AtExitManager, because asking it to process its + // AtExit callbacks can ruin the global state that other tests may depend on. + base::ShadowingAtExitManager exit_manager_; +}; +TEST_F(AtExitTest, Basic) { ZeroTestCounters(); base::AtExitManager::RegisterCallback(&IncrementTestCounter1, NULL); base::AtExitManager::RegisterCallback(&IncrementTestCounter2, NULL); @@ -60,9 +58,7 @@ TEST(AtExitTest, Basic) { EXPECT_EQ(1, g_test_counter_2); } -TEST(AtExitTest, LIFOOrder) { - ShadowingAtExitManager shadowing_at_exit_manager; - +TEST_F(AtExitTest, LIFOOrder) { ZeroTestCounters(); base::AtExitManager::RegisterCallback(&IncrementTestCounter1, NULL); base::AtExitManager::RegisterCallback(&ExpectCounter1IsZero, NULL); @@ -75,9 +71,7 @@ TEST(AtExitTest, LIFOOrder) { EXPECT_EQ(1, g_test_counter_2); } -TEST(AtExitTest, Param) { - ShadowingAtExitManager shadowing_at_exit_manager; - +TEST_F(AtExitTest, Param) { base::AtExitManager::RegisterCallback(&ExpectParamIsNull, NULL); base::AtExitManager::RegisterCallback(&ExpectParamIsCounter, &g_test_counter_1); |