def test_project_url_for_no_exts_in_index(self): name = 'myext' with IndexPatch( {}), self.assertRaises(NoExtensionCandidatesError) as err: resolve_project_url_from_index(name) self.assertEqual(str(err.exception), "No extension found with name '{}'".format(name))
def test_project_url_for_ext_resolved(self): name = 'myext' index_data = { name: [mock_ext('myext-0.0.1-py2.py3-none-any.whl', '0.0.1')] } with IndexPatch(index_data): self.assertEqual( resolve_project_url_from_index(name), index_data[name][0]['metadata']['extensions']['python.details'] ['project_urls']['Home'])
def _get_extension_repo_url(ext_name, raw=False): _NEW_ISSUES_STR = '/issues/new' try: project_url = resolve_project_url_from_index(extension_name=ext_name) if _is_valid_github_project_url(url=project_url): raw_url = project_url.lower().strip('/') + _NEW_ISSUES_STR # Prettify the url for cli extensions repo if not raw and raw_url == _RAW_EXTENSIONS_ISSUES_URL: return _EXTENSIONS_ISSUES_URL return raw_url except (CLIError, NoExtensionCandidatesError) as ex: # since this is going to feedback let it fall back to the generic extensions repo logger.debug(ex) return _RAW_EXTENSIONS_ISSUES_URL if raw else _EXTENSIONS_ISSUES_URL