Exemplo n.º 1
0
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 []'
Exemplo n.º 2
0
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, [])
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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']
Exemplo n.º 6
0
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']
Exemplo n.º 7
0
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']
Exemplo n.º 8
0
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']
Exemplo n.º 9
0
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"
Exemplo n.º 10
0
    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
Exemplo n.º 11
0
    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
Exemplo n.º 12
0
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'
Exemplo n.º 13
0
def test_get_content_version_none():
    ret = repository_version.get_repository_version({}, None, [], None)
    log.debug('ret=%s', ret)

    assert ret == 'master'