def test_get_content_version_devel_version_no_content_versions(): try: repository_version.get_repository_version({}, 'devel', [], None) except exceptions.GalaxyError: return assert False, 'Excepted a GalaxyError here since there are no content versions and "devel" is not in []'
def test_get_content_version_none(): req_spec_data = {'namespace': 'some_namespace', 'name': 'some_name', 'version': None} req_spec = RequirementSpec.from_dict(req_spec_data) with pytest.raises(exceptions.GalaxyError, match="The list of available versions for some_namespace.some_name is empty"): repository_version.get_repository_version({}, req_spec, [])
def test_get_latest_in_content_versions_1_0_0_v_and_no_v(): req_spec_data = {'namespace': 'some_namespace', 'name': 'some_name', 'version_spec': '*'} req_spec = RequirementSpec.from_dict(req_spec_data) with pytest.raises(exceptions.GalaxyClientError, match=""): repository_version.get_repository_version({}, req_spec, content_versions_1_0_v_and_no_v)
def test_get_latest_in_content_versions_1_0_0_v_and_no_v(): ret1 = repository_version.get_repository_version( {}, None, content_versions_1_0_v_and_no_v, 'some_content_name') log.debug('ret1: %s', ret1) # assert ret1 == '3.0.0' content_versions_1_0_v_and_no_v.reverse() ret2 = repository_version.get_repository_version( {}, None, content_versions_1_0_v_and_no_v, 'some_content_name') log.debug('ret2: %s', ret2) assert ret1 == ret2
def test_get_content_version_latest(latest_ver_data): log.debug('latest_ver_data: %s', latest_ver_data) res = repository_version.get_repository_version({}, None, latest_ver_data['vlist'], 'some_content_name') log.debug('res: %s', res) assert res == latest_ver_data['exp']
def test_get_content_version(ver_data): log.debug('ver_data: %s', ver_data) res = repository_version.get_repository_version({}, ver_data['ask'], ver_data['vlist'], 'some_content_name') log.debug('res: %s', res) assert res == ver_data['exp']
def test_get_content_version(ver_data): req_spec_data = {'namespace': 'some_namespace', 'name': 'some_name', 'version': ver_data['ask']} req_spec = RequirementSpec.from_dict(req_spec_data) res = repository_version.get_repository_version({}, req_spec, ver_data['vlist']) log.debug('res: %s', res) assert res == ver_data['exp']
def test_get_content_version_latest(latest_ver_data): log.debug('latest_ver_data: %s', latest_ver_data) req_spec_data = {'namespace': 'some_namespace', 'name': 'some_name', 'version_spec': '*'} req_spec = RequirementSpec.from_dict(req_spec_data) res = repository_version.get_repository_version({}, req_spec, latest_ver_data['vlist']) log.debug('res: %s', res) assert res == latest_ver_data['exp']
def test_get_content_version_devel_version_not_in_content_versions(): # FIXME: use pytest expect_exception stuff try: ret = repository_version.get_repository_version({}, 'devel', content_versions_147, 'some_content_name') log.debug('ret=%s', ret) except exceptions.GalaxyError as e: log.exception(e) return assert False is True, "should have raise an exception earlier"
def find(self): api = GalaxyAPI(self.galaxy_context) namespace = self.repository_spec.namespace repo_name = self.repository_spec.name log.debug('Querying %s for namespace=%s, name=%s', self.galaxy_context.server['url'], namespace, repo_name) # TODO: extract parsing of cli content sorta-url thing and add better tests # FIXME: exception handling repo_data = api.lookup_repo_by_name(namespace, repo_name) if not repo_data: raise exceptions.GalaxyClientError("- sorry, %s was not found on %s." % (self.repository_spec.label, api.api_server)) # FIXME - Need to update our API calls once Galaxy has them implemented related = repo_data.get('related', {}) repo_versions_url = related.get('versions', None) # FIXME: exception handling repoversions = api.fetch_content_related(repo_versions_url) content_repo_versions = [a.get('version') for a in repoversions if a.get('version', None)] # FIXME: mv to it's own method # FIXME: pass these to fetch() if it really needs it repo_version_best = repository_version.get_repository_version(repo_data, version=self.repository_spec.version, repository_versions=content_repo_versions, content_content_name=self.repository_spec.name) # get the RepositoryVersion obj (or its data anyway) _repoversion = select_repository_version(repoversions, repo_version_best) # external_url isnt specific, it could be something like github.com/alikins/some_collection # external_url is the third option after a 'download_url' provided by the galaxy rest API # (repo version specific download_url first if applicable, then the general download_url) # Note: download_url can point anywhere... external_url = repo_data.get('external_url', None) if not external_url: raise exceptions.GalaxyError('no external_url info on the Repository object from %s' % self.repository_spec.label) # The repo spec of the install candidate with potentially a different version potential_repository_spec = RepositorySpec(namespace=namespace, name=repo_name, version=_repoversion['version'], fetch_method=self.repository_spec.fetch_method, scm=self.repository_spec.scm, spec_string=self.repository_spec.spec_string, src=self.repository_spec.src) results = {'content': {'galaxy_namespace': namespace, 'repo_name': repo_name}, 'specified_content_version': self.repository_spec.version, 'specified_repository_spec': self.repository_spec, 'custom': {'content_repo_versions': content_repo_versions, 'external_url': external_url, 'galaxy_context': self.galaxy_context, 'related': related, 'repo_data': repo_data, 'repo_versions_url': repo_versions_url, 'repoversion': _repoversion, 'potential_repository_spec': potential_repository_spec}, } return results
def find(self): api = GalaxyAPI(self.galaxy_context) namespace = self.requirement_spec.namespace repo_name = self.requirement_spec.name log.debug('Querying %s for namespace=%s, name=%s', self.galaxy_context.server['url'], namespace, repo_name) # TODO: extract parsing of cli content sorta-url thing and add better tests # FIXME: exception handling repo_data = api.lookup_repo_by_name(namespace, repo_name) if not repo_data: raise exceptions.GalaxyClientError( "- sorry, %s was not found on %s." % (self.requirement_spec.label, api.api_server)) # FIXME - Need to update our API calls once Galaxy has them implemented related = repo_data.get('related', {}) repo_versions_url = related.get('versions', None) # FIXME: exception handling repoversions = api.fetch_content_related(repo_versions_url) content_repo_versions = [ a.get('version') for a in repoversions if a.get('version', None) ] repo_version_best = repository_version.get_repository_version( repo_data, requirement_spec=self.requirement_spec, repository_versions=content_repo_versions) # get the RepositoryVersion obj (or its data anyway) _repoversion = select_repository_version(repoversions, repo_version_best) # Note: download_url can point anywhere... external_url = repo_data.get('external_url', None) if not external_url: raise exceptions.GalaxyError( 'no external_url info on the Repository object from %s' % self.requirement_spec.label) results = { 'content': { 'galaxy_namespace': namespace, 'repo_name': repo_name, 'version': _repoversion.get('version') }, 'requirement_spec_version_spec': self.requirement_spec.version_spec, 'custom': { 'external_url': external_url, 'repo_data': repo_data, 'repoversion': _repoversion, }, } return results
def test_get_content_version_prod_version_in_content_versions(): ret = repository_version.get_repository_version({}, 'prod', content_versions_147, None) log.debug('ret=%s', ret) assert ret == 'prod'
def test_get_content_version_none(): ret = repository_version.get_repository_version({}, None, [], None) log.debug('ret=%s', ret) assert ret == 'master'