diff --git a/code/TestSessionController.php b/code/TestSessionController.php index 71135cc..c7cff5f 100644 --- a/code/TestSessionController.php +++ b/code/TestSessionController.php @@ -12,6 +12,8 @@ class TestSessionController extends Controller { 'clear', ); + private static $alternative_database_name = -1; + public function init() { parent::init(); @@ -37,6 +39,8 @@ class TestSessionController extends Controller { // Create a new one with a randomized name $dbname = SapphireTest::create_temp_db(); DB::set_alternative_database_name($dbname); + // Workaround for bug in Cookie::get(), fixed in 3.1-rc1 + self::$alternative_database_name = $dbname; } $this->setState($request->getVars()); @@ -44,6 +48,18 @@ class TestSessionController extends Controller { return $this->renderWith('TestSession_start'); } + public function DatabaseName() { + // Workaround for bug in Cookie::get(), fixed in 3.1-rc1 + if(self::$alternative_database_name != -1) { + return self::$alternative_database_name; + } else if ($dbname = DB::get_alternative_database_name()) { + return $dbname; + } else { + $db = DB::getConn(); + if(method_exists($db, 'currentDatabase')) return $db->currentDatabase(); + } + } + public function set($request) { if(!SapphireTest::using_temp_db()) { throw new LogicException( @@ -80,6 +96,8 @@ class TestSessionController extends Controller { SapphireTest::kill_temp_db(); DB::set_alternative_database_name(null); + // Workaround for bug in Cookie::get(), fixed in 3.1-rc1 + self::$alternative_database_name = null; Session::clear('testsession'); return $this->renderWith('TestSession_end'); @@ -125,6 +143,8 @@ class TestSessionController extends Controller { throw new InvalidArgumentException("Invalid database name format"); } DB::set_alternative_database_name($dbname); + // Workaround for bug in Cookie::get(), fixed in 3.1-rc1 + self::$alternative_database_name = $dbname; } // Fixtures diff --git a/templates/TestSession_start.ss b/templates/TestSession_start.ss index f7ffdf2..35f49f4 100644 --- a/templates/TestSession_start.ss +++ b/templates/TestSession_start.ss @@ -1,3 +1,4 @@ +

Started testing session. <% if Fixture %>Loaded fixture "$Fixture" into database.<% end_if %>