From 5dcf53c239b7ad7e9f18fb359ba9e259a07183b5 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Wed, 14 Apr 2010 03:49:06 +0000 Subject: [PATCH] BUGFIX: testing framework needs to be reset to a clean state after each test: now also nested urls and redirection state will be reverted (from r98944) git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@102815 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- dev/SapphireTest.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/dev/SapphireTest.php b/dev/SapphireTest.php index e4eede1a4..afdf9bf9a 100755 --- a/dev/SapphireTest.php +++ b/dev/SapphireTest.php @@ -34,6 +34,7 @@ class SapphireTest extends PHPUnit_Framework_TestCase { protected $originalRequirements; protected $originalIsRunningTest; protected $originalTheme; + protected $originalNestedURLsState; protected $mailer; @@ -109,6 +110,9 @@ class SapphireTest extends PHPUnit_Framework_TestCase { Controller::curr()->setSession(new Session(array())); $this->originalTheme = SSViewer::current_theme(); + + // Save nested_urls state, so we can restore it later + $this->originalNestedURLsState = SiteTree::nested_urls(); $className = get_class($this); $fixtureFile = eval("return {$className}::\$fixture_file;"); @@ -346,6 +350,21 @@ class SapphireTest extends PHPUnit_Framework_TestCase { // Reset mocked datetime SS_Datetime::clear_mock_now(); + + // Restore nested_urls state + if ( $this->originalNestedURLsState ) + SiteTree::enable_nested_urls(); + else + SiteTree::disable_nested_urls(); + + // Stop the redirection that might have been requested in the test. + // Note: Ideally a clean Controller should be created for each test. + // Now all tests executed in a batch share the same controller. + $controller = Controller::curr(); + if ( $controller && $controller->response && $controller->response->getHeader('Location') ) { + $controller->response->setStatusCode(200); + $controller->response->removeHeader('Location'); + } } /** * Clear the log of emails sent