From 4e7395b4167738538b51f4884cc7c2eacf226752 Mon Sep 17 00:00:00 2001 From: "phajdan.jr@chromium.org" Date: Mon, 16 Aug 2010 20:38:42 +0000 Subject: Remove test isolation enforcement code. I think it was a failed experiment, and it only ever worked for base_unittests. This removes some potentially risky code from LazyInstance that was only needed for the test isolation. The lesson from this experiment is that removing singletons works better than trying to make tests work fine even when singletons are overused. TEST=none BUG=12710 Review URL: http://codereview.chromium.org/3127012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56229 0039d316-1c4b-4281-b951-d872f2087c98 --- base/lazy_instance.cc | 11 ----------- base/lazy_instance.h | 4 ---- base/test/run_all_unittests.cc | 4 +--- base/test/test_suite.h | 26 -------------------------- net/base/run_all_unittests.cc | 1 - 5 files changed, 1 insertion(+), 45 deletions(-) diff --git a/base/lazy_instance.cc b/base/lazy_instance.cc index f98ba3f..957482c 100644 --- a/base/lazy_instance.cc +++ b/base/lazy_instance.cc @@ -36,19 +36,8 @@ void LazyInstanceHelper::CompleteInstance(void* instance, void (*dtor)(void*)) { // Instance is created, go from CREATING to CREATED. base::subtle::Release_Store(&state_, STATE_CREATED); - // Allow reusing the LazyInstance (reset it to the initial state). This - // makes possible calling all AtExit callbacks between tests. Assumes that - // no other threads execute when AtExit callbacks are processed. - base::AtExitManager::RegisterCallback(&LazyInstanceHelper::ResetState, - this); - // Make sure that the lazily instantiated object will get destroyed at exit. base::AtExitManager::RegisterCallback(dtor, instance); } -// static -void LazyInstanceHelper::ResetState(void* helper) { - reinterpret_cast(helper)->state_ = STATE_EMPTY; -} - } // namespace base diff --git a/base/lazy_instance.h b/base/lazy_instance.h index 57f8aeb5..52a5124 100644 --- a/base/lazy_instance.h +++ b/base/lazy_instance.h @@ -81,10 +81,6 @@ class LazyInstanceHelper { base::subtle::Atomic32 state_; private: - // Resets state of |helper| to STATE_EMPTY so that it can be reused. - // Not thread safe. - static void ResetState(void* helper); - DISALLOW_COPY_AND_ASSIGN(LazyInstanceHelper); }; diff --git a/base/test/run_all_unittests.cc b/base/test/run_all_unittests.cc index 7b90358..841b353 100644 --- a/base/test/run_all_unittests.cc +++ b/base/test/run_all_unittests.cc @@ -5,7 +5,5 @@ #include "base/test/test_suite.h" int main(int argc, char** argv) { - TestSuite test_suite(argc, argv); - test_suite.EnforceTestIsolation(); - return test_suite.Run(); + return TestSuite(argc, argv).Run(); } diff --git a/base/test/test_suite.h b/base/test/test_suite.h index 3cfc7ec..c0a2891 100644 --- a/base/test/test_suite.h +++ b/base/test/test_suite.h @@ -37,25 +37,6 @@ const char kStrictFailureHandling[] = "strict_failure_handling"; // Match function used by the GetTestCount method. typedef bool (*TestMatch)(const testing::TestInfo&); -// By setting up a shadow AtExitManager, this test event listener ensures that -// no state is carried between tests (like singletons, lazy instances, etc). -// Of course it won't help if the code under test corrupts memory. -class TestIsolationEnforcer : public testing::EmptyTestEventListener { - public: - virtual void OnTestStart(const testing::TestInfo& test_info) { - ASSERT_FALSE(exit_manager_.get()); - exit_manager_.reset(new base::ShadowingAtExitManager()); - } - - virtual void OnTestEnd(const testing::TestInfo& test_info) { - ASSERT_TRUE(exit_manager_.get()); - exit_manager_.reset(); - } - - private: - scoped_ptr exit_manager_; -}; - class TestSuite { public: TestSuite(int argc, char** argv); @@ -111,13 +92,6 @@ class TestSuite { return count; } - // TODO(phajdan.jr): Enforce isolation for all tests once it's stable. - void EnforceTestIsolation() { - testing::TestEventListeners& listeners = - testing::UnitTest::GetInstance()->listeners(); - listeners.Append(new TestIsolationEnforcer); - } - void CatchMaybeTests() { testing::TestEventListeners& listeners = testing::UnitTest::GetInstance()->listeners(); diff --git a/net/base/run_all_unittests.cc b/net/base/run_all_unittests.cc index 85bda7d..cd11350 100644 --- a/net/base/run_all_unittests.cc +++ b/net/base/run_all_unittests.cc @@ -23,6 +23,5 @@ int main(int argc, char** argv) { base::EnsureNSPRInit(); #endif - // TODO(phajdan.jr): Enforce test isolation, http://crbug.com/12710. return test_suite.Run(); } -- cgit v1.1