Skip to content

Commit

Permalink
Add get_resolved_spec and get_resolved_ref_url methods
Browse files Browse the repository at this point in the history
  • Loading branch information
Xarthisius committed Dec 8, 2019
1 parent b562b61 commit 8a0cee8
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 5 deletions.
18 changes: 18 additions & 0 deletions binderhub/repoproviders.py
Original file line number Diff line number Diff line change
Expand Up @@ -322,8 +322,26 @@ def get_resolved_ref(self):
major=resp["data"]["latestVersion"]["versionNumber"],
minor=resp["data"]["latestVersion"]["versionMinorNumber"],
)

# NOTE: data.protocol should be potentially prepended here
# {protocol}:{authority}/{identifier}
self.resolved_spec = "{authority}/{identifier}".format(
authority=resp["data"]["authority"],
identifier=resp["data"]["identifier"],
)
self.resolved_ref_url = resp["data"]["persistentUrl"]
return self.record_id

async def get_resolved_spec(self):
if not hasattr(self, 'resolved_spec'):
await self.get_resolved_ref()
return self.resolved_spec

async def get_resolved_ref_url(self):
if not hasattr(self, 'resolved_ref_url'):
await self.get_resolved_ref()
return self.resolved_ref_url

def get_repo_url(self):
# While called repo URL, the return value of this function is passed
# as argument to repo2docker, hence we return the spec as is.
Expand Down
20 changes: 15 additions & 5 deletions binderhub/tests/test_repoproviders.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,18 +99,28 @@ async def test_figshare(spec, resolved_spec, resolved_ref, resolved_ref_url, bui
assert spec == resolved_spec


async def test_dataverse():
spec = '10.7910/DVN/TJCLKP'

@pytest.mark.parametrize('spec,resolved_spec,resolved_ref,resolved_ref_url,build_slug', [
['10.7910/DVN/TJCLKP',
'10.7910/DVN/TJCLKP',
'3035124.v3.0',
'https://doi.org/10.7910/DVN/TJCLKP',
'dataverse-dvn-2ftjclkp'],
])
async def test_dataverse(spec, resolved_spec, resolved_ref, resolved_ref_url, build_slug):
provider = DataverseProvider(spec=spec)

# have to resolve the ref first
ref = await provider.get_resolved_ref()
assert ref == '3035124.v3.0'
assert ref == resolved_ref

slug = provider.get_build_slug()
assert slug == 'dataverse-dvn-2ftjclkp'
assert slug == build_slug
repo_url = provider.get_repo_url()
assert repo_url == spec
ref_url = await provider.get_resolved_ref_url()
assert ref_url == resolved_ref_url
spec = await provider.get_resolved_spec()
assert spec == resolved_spec


@pytest.mark.github_api
Expand Down

0 comments on commit 8a0cee8

Please sign in to comment.