Make sure get_or_create_repository() and _get_repository_by_name_and_owner() return a Repository

This commit is contained in:
Nicola Soranzo
2023-10-24 12:51:11 +01:00
parent 45b2d75b65
commit 9dddbca965
7 changed files with 25 additions and 52 deletions
+9 -3
View File
@@ -905,7 +905,11 @@ class ShedTwillTestCase(ShedApiTestCase):
self.check_for_strings(strings_displayed, strings_not_displayed)
def check_repository_dependency(
self, repository: Repository, depends_on_repository, depends_on_changeset_revision=None, changeset_revision=None
self,
repository: Repository,
depends_on_repository: Repository,
depends_on_changeset_revision=None,
changeset_revision=None,
):
if not self.is_v2:
# v2 doesn't display repository repository dependencies, they are deprecated
@@ -1402,7 +1406,7 @@ class ShedTwillTestCase(ShedApiTestCase):
def get_or_create_repository(
self, category: Category, owner: str, name: str, strings_displayed=None, strings_not_displayed=None, **kwd
) -> Optional[Repository]:
) -> Repository:
# If not checking for a specific string, it should be safe to assume that
# we expect repository creation to be successful.
if strings_displayed is None:
@@ -1417,6 +1421,7 @@ class ShedTwillTestCase(ShedApiTestCase):
self.submit_form(button="create_repository_button", name=name, category_id=category_id, **kwd)
self.check_for_strings(strings_displayed, strings_not_displayed)
repository = self.populator.get_repository_for(owner, name)
assert repository
return repository
def get_repo_path(self, repository: Repository) -> str:
@@ -1495,10 +1500,11 @@ class ShedTwillTestCase(ShedApiTestCase):
for repository_metadata in self._db_repository(repository).metadata_revisions
]
def _get_repository_by_name_and_owner(self, name: str, owner: str) -> Optional[Repository]:
def _get_repository_by_name_and_owner(self, name: str, owner: str) -> Repository:
repo = self.populator.get_repository_for(owner, name)
if repo is None:
repo = self.populator.get_repository_for(owner, name, deleted="true")
assert repo
return repo
def get_repository_tip(self, repository: Repository) -> str:
@@ -1,5 +1,7 @@
import logging
import pytest
from ..base import common
from ..base.api import skip_if_api_v2
from ..base.twilltestcase import ShedTwillTestCase
@@ -157,7 +159,6 @@ class TestBasicRepositoryFeatures(ShedTwillTestCase):
def test_0050_display_repository_tip_file(self):
"""Display the contents of filtering.xml in the repository tip revision"""
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
assert repository
if self._browser.is_twill:
self.display_repository_file_contents(
repository=repository,
@@ -268,14 +269,15 @@ class TestBasicRepositoryFeatures(ShedTwillTestCase):
error_message = (
"The term 'repos' is a reserved word in the Tool Shed, so it cannot be used as a repository name."
)
self.get_or_create_repository(
name="repos",
description=repository_description,
long_description=repository_long_description,
owner=common.test_user_1_name,
category=category,
strings_displayed=[error_message],
)
with pytest.raises(AssertionError):
self.get_or_create_repository(
name="repos",
description=repository_description,
long_description=repository_long_description,
owner=common.test_user_1_name,
category=category,
strings_displayed=[error_message],
)
def test_0100_verify_reserved_username_handling(self):
"""Check that reserved usernames are handled correctly."""
@@ -51,7 +51,6 @@ class TestFreebayesRepository(ShedTwillTestCase):
category=category,
strings_displayed=[],
)
assert repository
strings_displayed = ["Metadata may have been defined", "This file requires an entry", "tool_data_table_conf"]
self.add_file_to_repository(repository, "freebayes/freebayes.xml", strings_displayed=strings_displayed)
if self.is_v2:
@@ -67,8 +67,6 @@ class TestRepositoryCircularDependenciesToNLevels(ShedTwillTestCase):
category=category,
strings_displayed=[],
)
assert repository
assert repository.id
self.commit_tar_to_repository(
repository,
"column_maker/column_maker.tar",
@@ -63,7 +63,6 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
owner=common.test_user_1_name,
category=category_0000,
)
assert repository
if self.repository_is_new(repository):
running_standalone = True
self.commit_tar_to_repository(
@@ -91,7 +90,6 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
strings_displayed=[],
)
if running_standalone:
assert repository
self.setup_freebayes_0010_repo(repository)
def test_0015_create_datatypes_0020_repository(self):
@@ -112,7 +110,6 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
category=category_0020,
strings_displayed=[],
)
assert repository
self.commit_tar_to_repository(
repository,
"column_maker/column_maker.tar",
@@ -137,7 +134,6 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
category=category_0020,
strings_displayed=[],
)
assert repository
self.commit_tar_to_repository(
repository,
"emboss/emboss.tar",
@@ -162,7 +158,6 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
category=category_0030,
strings_displayed=[],
)
assert column_maker_repository
self.commit_tar_to_repository(
column_maker_repository,
"column_maker/column_maker.tar",
@@ -187,7 +182,6 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
category=category_0030,
strings_displayed=[],
)
assert emboss_5_repository
self.commit_tar_to_repository(
emboss_5_repository,
"emboss/emboss.tar",
@@ -212,7 +206,6 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
category=category_0030,
strings_displayed=[],
)
assert emboss_6_repository
self.commit_tar_to_repository(
emboss_6_repository,
"emboss/emboss.tar",
@@ -237,7 +230,6 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
category=category_0030,
strings_displayed=[],
)
assert emboss_repository
self.commit_tar_to_repository(
emboss_repository,
"emboss/emboss.tar",
@@ -251,13 +243,9 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
column_maker_repository = self._get_repository_by_name_and_owner(
"column_maker_0030", common.test_user_1_name
)
assert column_maker_repository
emboss_repository = self._get_repository_by_name_and_owner("emboss_0030", common.test_user_1_name)
assert emboss_repository
emboss_5_repository = self._get_repository_by_name_and_owner("emboss_5_0030", common.test_user_1_name)
assert emboss_5_repository
emboss_6_repository = self._get_repository_by_name_and_owner("emboss_6_0030", common.test_user_1_name)
assert emboss_6_repository
repository_dependencies_path = self.generate_temp_path("test_0330", additional_paths=["emboss"])
column_maker_tuple = (
self.url,
@@ -311,7 +299,6 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
category=category_0040,
strings_displayed=[],
)
assert repository
if running_standalone:
self.commit_tar_to_repository(
repository,
@@ -337,7 +324,6 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
category=category_0040,
strings_displayed=[],
)
assert repository
self.commit_tar_to_repository(
repository,
"filtering/filtering_1.1.0.tar",
@@ -349,9 +335,7 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
global running_standalone
if running_standalone:
freebayes_repository = self._get_repository_by_name_and_owner("freebayes_0040", common.test_user_1_name)
assert freebayes_repository
filtering_repository = self._get_repository_by_name_and_owner("filtering_0040", common.test_user_1_name)
assert filtering_repository
repository_dependencies_path = self.generate_temp_path("test_0340", additional_paths=["dependencies"])
freebayes_tuple = (
self.url,
@@ -391,7 +375,6 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
category=category,
strings_displayed=[],
)
assert repository
self.commit_tar_to_repository(
repository,
"convert_chars/convert_chars.tar",
@@ -413,7 +396,6 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
category=category,
strings_displayed=[],
)
assert repository
self.commit_tar_to_repository(
repository,
"column_maker/column_maker.tar",
@@ -438,7 +420,6 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
category=category,
strings_displayed=[],
)
assert repository
self.commit_tar_to_repository(
repository,
"emboss/emboss.tar",
@@ -460,7 +441,6 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
category=category,
strings_displayed=[],
)
assert filtering_repository
self.commit_tar_to_repository(
filtering_repository,
"filtering/filtering_1.1.0.tar",
@@ -482,7 +462,6 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
category=category,
strings_displayed=[],
)
assert repository
self.commit_tar_to_repository(
repository,
"freebayes/freebayes.tar",
@@ -504,7 +483,6 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
category=category,
strings_displayed=[],
)
assert repository
self.user_populator().setup_bismark_repo(repository, end=1)
def test_0100_create_and_upload_dependency_definitions(self):
@@ -513,25 +491,19 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
if running_standalone:
self.login(email=common.test_user_1_email, username=common.test_user_1_name)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
assert column_repository
convert_repository = self._get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
assert convert_repository
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
assert emboss_repository
filtering_repository = self._get_repository_by_name_and_owner(
filtering_repository_name, common.test_user_1_name
)
assert filtering_repository
freebayes_repository = self._get_repository_by_name_and_owner(
freebayes_repository_name, common.test_user_1_name
)
assert freebayes_repository
bismark_repository = self._get_repository_by_name_and_owner(
bismark_repository_name, common.test_user_1_name
)
assert bismark_repository
dependency_xml_path = self.generate_temp_path("test_0050", additional_paths=["freebayes"])
# convert_chars depends on column_maker
# column_maker depends on convert_chars
@@ -56,7 +56,7 @@ class TestGetUpdatedMetadata(ShedTwillTestCase):
category = self.create_category(name=category_name, description=category_description)
self.login(email=common.test_user_1_email, username=common.test_user_1_name)
# Create a repository named package_freebayes_0550 owned by user1.
freebayes = self.get_or_create_repository(
freebayes_repository = self.get_or_create_repository(
name=repositories["freebayes"]["name"],
description=repositories["freebayes"]["description"],
long_description=repositories["freebayes"]["long_description"],
@@ -64,21 +64,20 @@ class TestGetUpdatedMetadata(ShedTwillTestCase):
category=category,
strings_displayed=[],
)
assert freebayes is not None, f"Error creating freebayes {repositories['freebayes']['name']}"
self.commit_tar_to_repository(
freebayes,
freebayes_repository,
"0550_files/package_freebayes_1_0550.tgz",
)
if not self.is_v2:
# Visit the manage repository page for package_freebayes_0_5_9_0100.
self.display_manage_repository_page(
freebayes, strings_displayed=["Tool dependencies", "will not be", "to this repository"]
freebayes_repository, strings_displayed=["Tool dependencies", "will not be", "to this repository"]
)
def test_0010_create_samtools_repository(self):
"""Create and populate the package_samtools_0550 repository."""
category = self.create_category(name=category_name, description=category_description)
samtools = self.get_or_create_repository(
samtools_repository = self.get_or_create_repository(
name=repositories["samtools"]["name"],
description=repositories["samtools"]["description"],
long_description=repositories["samtools"]["long_description"],
@@ -86,9 +85,8 @@ class TestGetUpdatedMetadata(ShedTwillTestCase):
category=category,
strings_displayed=[],
)
assert samtools is not None, f"Error creating samtools {repositories['samtools']['name']}"
self.commit_tar_to_repository(
samtools,
samtools_repository,
"0550_files/package_samtools_1_0550.tgz",
commit_message="Uploaded samtools 1.0.",
)
@@ -104,7 +102,6 @@ class TestGetUpdatedMetadata(ShedTwillTestCase):
category=category,
strings_displayed=[],
)
assert repository is not None, f"Error creating repository {repositories['filtering']['name']}"
self.commit_tar_to_repository(
repository,
"0550_files/filtering_1.0.tgz",
@@ -53,7 +53,6 @@ class TestDataManagers(ShedTwillTestCase):
category=category,
strings_displayed=[],
)
assert repository, "No repository created with name {commit_tar_to_repository}"
# Upload the data manager files to the repository.
self.commit_tar_to_repository(
repository,