public function setUp()
 {
     $this->old_cwd = getcwd();
     $this->system_command = new System_Command();
     parent::setUp();
     $this->old_sys_data_dir = isset($GLOBALS['sys_data_dir']) ? $GLOBALS['sys_data_dir'] : null;
     $GLOBALS['sys_data_dir'] = parent::getTmpDir();
     $GLOBALS['tmp_dir'] = dirname(__FILE__) . '/_fixtures/tmp';
     mkdir("{$GLOBALS['sys_data_dir']}/gitolite/admin/", 0777, true);
     mkdir("{$GLOBALS['sys_data_dir']}/gitolite/repositories/test_project", 0777, true);
     $sys_data_dir_arg = escapeshellarg($GLOBALS['sys_data_dir']);
     $this->system_command->exec("chmod -R 777 {$sys_data_dir_arg}/gitolite/repositories");
     ForgeConfig::store();
     $this->git_dao = new MyMockGitDao();
     $plugin_dao = mock('PluginDao');
     ProjectManager::clearInstance();
     $this->project_manager = ProjectManager::instance();
     $this->logger = mock('Logger');
     $this->git_plugin = new GitPlugin(1);
     $this->git_factory = new GitRepositoryFactory($this->git_dao, $this->project_manager);
     $this->git_systemeventmanager = mock('Git_SystemEventManager');
     $this->mirror_updater = mock('GitRepositoryMirrorUpdater');
     $this->mirror_data_mapper = mock('Git_Mirror_MirrorDataMapper');
     $this->git_manager = new GitRepositoryManager($this->git_factory, $this->git_systemeventmanager, $this->git_dao, parent::getTmpDir(), $this->mirror_updater, $this->mirror_data_mapper);
     $restricted_plugin_dao = mock('RestrictedPluginDao');
     $plugin_factory = new PluginFactory($plugin_dao, new PluginResourceRestrictor($restricted_plugin_dao));
     $plugin_manager = new PluginManager($plugin_factory, EventManager::instance(), new SiteCache($this->logger), new ForgeUpgradeConfig(new System_Command()));
     PluginManager::setInstance($plugin_manager);
     $this->ugroup_dao = mock('UGroupDao');
     $this->ugroup_manager = new UGroupManager($this->ugroup_dao, mock('EventManager'));
     $this->permission_dao = mock('PermissionsDAO');
     $permissions_manager = new PermissionsManager($this->permission_dao);
     $git_mirror_dao = mock('Git_Mirror_MirrorDao');
     $git_gitolite_driver = new Git_GitoliteDriver($this->logger, $this->git_systemeventmanager, mock('Git_GitRepositoryUrlManager'), $this->git_dao, $git_mirror_dao, $this->git_plugin, null, null, mock('Git_Gitolite_ConfigPermissionsSerializer'), null, null, mock('Git_Mirror_MirrorDataMapper'));
     $gitolite = new Git_Backend_Gitolite($git_gitolite_driver, $this->logger);
     $this->importer = new GitXmlImporter($this->logger, $this->git_manager, $this->git_factory, $gitolite, $this->git_systemeventmanager, $permissions_manager, $this->ugroup_manager);
     $this->temp_project_dir = parent::getTmpDir() . DIRECTORY_SEPARATOR . 'test_project';
     $userManager = mock('UserManager');
     stub($userManager)->getUserById()->returns(new PFUser());
     UserManager::setInstance($userManager);
     stub($this->permission_dao)->clearPermission()->returns(true);
     stub($this->permission_dao)->addPermission()->returns(true);
     stub($this->git_dao)->getProjectRepositoryList()->returns(array());
     copy(__DIR__ . '/_fixtures/stable_repo_one_commit.bundle', parent::getTmpDir() . DIRECTORY_SEPARATOR . 'stable.bundle');
     $this->project = $this->project_manager->getProjectFromDbRow(array('group_id' => 123, 'unix_group_name' => 'test_project', 'access' => Project::ACCESS_PUBLIC));
 }