}
    foreach ($args as $arg) {
        if (strpos($arg, '=') == false) {
            $_GET['args'][] = $arg;
        } else {
            $newItems = array();
            parse_str(substr($arg, 0, 2) == '--' ? substr($arg, 2) : $arg, $newItems);
            $_GET = array_merge($_GET, $newItems);
        }
    }
    $_REQUEST = array_merge($_REQUEST, $_GET);
}
// Connect to database
require_once $frameworkPath . '/core/Core.php';
require_once $frameworkPath . '/tests/FakeController.php';
global $databaseConfig;
DB::connect($databaseConfig);
// Now set a fake REQUEST_URI
$_SERVER['REQUEST_URI'] = BASE_URL . '/dev';
// Fake a session
$_SESSION = null;
// Prepare manifest autoloader
$controller = new FakeController();
// Get test manifest
TestRunner::use_test_manifest();
SapphireTest::set_is_running_test(true);
// Remove the error handler so that PHPUnit can add its own
restore_error_handler();
if (!isset($_GET['flush']) || !$_GET['flush']) {
    Debug::message("WARNING: Manifest not flushed. " . "Add flush=1 as an argument to discover new classes or files.\n", false);
}
 /**
  * Cleans up the test session state by restoring the normal database connect (for the rest of this request, if any)
  * and removes the {@link self::$test_state_file} so that future requests don't use this test state.
  *
  * Can be extended by implementing either onBeforeEndTestSession() or onAfterEndTestSession().
  *
  * This should implement itself cleanly in case it is called twice (e.g. don't throw errors when the state file
  * doesn't exist anymore because it's already been cleaned up etc.) This is because during behat test runs where
  * a queueing system (e.g. silverstripe-resque) is used, the behat module may call this first, and then the forked
  * worker will call it as well - but there is only one state file that is created.
  */
 public function endTestSession()
 {
     $this->extend('onBeforeEndTestSession');
     if (SapphireTest::using_temp_db()) {
         $state = $this->getState();
         $dbConn = DB::getConn();
         $dbExists = $dbConn->databaseExists($state->database);
         if ($dbExists) {
             // Clean up temp database
             $dbConn->dropDatabase();
             file_put_contents('php://stdout', "Deleted temp database: {$state->database}" . PHP_EOL);
         }
         // End test session mode
         $this->resetDatabaseName();
         SapphireTest::set_is_running_test(false);
     }
     $this->removeStateFile();
     $this->extend('onAfterEndTestSession');
 }
 /**
  * Cleans up the test session state by restoring the normal database connect (for the rest of this request, if any)
  * and removes the {@link self::$test_state_file} so that future requests don't use this test state.
  *
  * Can be extended by implementing either onBeforeEndTestSession() or onAfterEndTestSession().
  *
  * This should implement itself cleanly in case it is called twice (e.g. don't throw errors when the state file
  * doesn't exist anymore because it's already been cleaned up etc.) This is because during behat test runs where
  * a queueing system (e.g. silverstripe-resque) is used, the behat module may call this first, and then the forked
  * worker will call it as well - but there is only one state file that is created.
  */
 public function endTestSession()
 {
     $this->extend('onBeforeEndTestSession');
     if (SapphireTest::using_temp_db()) {
         $this->resetDatabaseName();
         SapphireTest::set_is_running_test(false);
     }
     $this->removeStateFile();
     $this->extend('onAfterEndTestSession');
 }