def test_project_list_path_not_found(self): """Warning is logged when projects_list file is not found, but exception is not raised. """ os.remove(self.projects_list) provider = GitwebProjectsRepositoryProvider(self.env) repositories = list(provider.get_repositories()) self.assertEqual([], repositories)
def do_upgrade(env, version, cursor): """Replace list of repositories in [trac] repository_sync_per_request with boolean values [repositories] <repos>.sync_per_request and a list of repositories in [gitweb-repositories] sync_per_request. Move and rename the Gitweb configuration options from the [git] section to the [gitweb-repositories] section. """ backup_config_file(env, '.db32.bak') repos_sync_per_request = \ env.config.getlist('trac', 'repository_sync_per_request', '(default)') for suffix in ('base', 'list', 'url'): option_name = 'projects_' + suffix env.config.set('gitweb-repositories', option_name, env.config.get('git', option_name)) env.config.remove('git', option_name) env.log.info("Moved [git] %s -> [gitweb-repositories] %s", option_name, option_name) rm = RepositoryManager(env) if repos_sync_per_request: for name, _ in rm.get_repositories(): sync_per_request = (name or '(default)') in repos_sync_per_request if sync_per_request: env.config.set('repositories', name + '.sync_per_request', 'true') env.log.info("Enabled sync_per_request for %s", name) gwrp = GitwebProjectsRepositoryProvider(env) gitweb_repo_names = [name for name, _ in gwrp.get_repositories()] sync_per_request = \ ', '.join(set(gitweb_repo_names) & set(repos_sync_per_request)) env.config.set('gitweb-repositories', 'sync_per_request', sync_per_request) env.log.info("Enabled sync_per_request for %s", sync_per_request) db_provider = DbRepositoryProvider(env) for name, _ in db_provider.get_repositories(): sync_per_request = (name or '(default)') in repos_sync_per_request changes = {'sync_per_request': sync_per_request} db_provider.modify_repository(name, changes) if sync_per_request: env.log.info("Enabled sync_per_request for %s", name) env.config.remove('trac', 'repository_sync_per_request') env.log.info("Removed [trac] repository_sync_per_request option") env.config.save() rm.reload_repositories()
def test_get_repositories(self): provider = GitwebProjectsRepositoryProvider(self.env) repositories = list(provider.get_repositories()) self.assertEqual(3, len(repositories)) self.assertEqual('repos1', repositories[0][0]) self.assertEqual('git', repositories[0][1]['type']) self.assertEqual(os.path.join(self.projects_base, 'repos1'), repositories[0][1]['dir']) self.assertEqual('https://example.com/repos1', repositories[0][1]['url']) self.assertEqual('repos2', repositories[1][0]) self.assertEqual('git', repositories[1][1]['type']) self.assertEqual(os.path.join(self.projects_base, 'repos2.git'), repositories[1][1]['dir']) self.assertEqual('https://example.com/repos2', repositories[1][1]['url']) self.assertEqual('repos3', repositories[2][0]) self.assertEqual('git', repositories[2][1]['type']) self.assertEqual(os.path.join(self.projects_base, 'repos3'), repositories[2][1]['dir']) self.assertEqual('https://example.com/repos3', repositories[2][1]['url'])