Use API repository object instead of database object in dozens of spots in tool shed functional tests.

This commit is contained in:
John Chilton
2022-09-24 08:42:23 -04:00
parent 32f34fa917
commit 808eca05bd
53 changed files with 610 additions and 852 deletions
+5 -2
View File
@@ -1,7 +1,10 @@
import logging
import os
import subprocess
from typing import Optional
from typing import (
Optional,
Tuple,
)
from galaxy.tool_shed.util import basic_util
from galaxy.util import unicodify
@@ -11,7 +14,7 @@ log = logging.getLogger(__name__)
INITIAL_CHANGELOG_HASH = "000000000000"
def clone_repository(repository_clone_url, repository_file_dir, ctx_rev=None):
def clone_repository(repository_clone_url: str, repository_file_dir: str, ctx_rev=None) -> Tuple[bool, Optional[str]]:
"""
Clone the repository up to the specified changeset_revision. No subsequent revisions will be
present in the cloned repository.
+9 -8
View File
@@ -18,14 +18,14 @@ from tool_shed_client.schema import (
GetOrderedInstallableRevisionsRequest,
OrderedInstallableRevisions,
Repository,
RepositoryIndexRequest,
RepositoryIndexResponse,
RepositoryMetadata,
RepositorySearchRequest,
RepositorySearchResults,
RepositoryUpdate,
ResetMetadataOnRepositoryRequest,
ResetMetadataOnRepositoryResponse,
RepositoryIndexRequest,
RepositoryIndexResponse,
ToolSearchRequest,
ToolSearchResults,
)
@@ -148,24 +148,25 @@ class ToolShedPopulator:
api_asserts.assert_status_code_is_ok(revisions_response)
return OrderedInstallableRevisions(__root__=revisions_response.json())
def get_repository_for(self, owner: str, name: str) -> Optional[Repository]:
def get_repository_for(self, owner: str, name: str, deleted: str = "false") -> Optional[Repository]:
request = RepositoryIndexRequest(
owner=owner,
name=name,
deleted=deleted,
)
index = self.repository_index(request)
return index.__root__[0] if index.__root__ else None
def repository_index(self, request: Optional[RepositoryIndexRequest]) -> RepositoryIndexResponse:
repository_response = self._api_interactor.get(
"repositories", params=(request.dict() if request else {})
)
repository_response = self._api_interactor.get("repositories", params=(request.dict() if request else {}))
api_asserts.assert_status_code_is_ok(repository_response)
return RepositoryIndexResponse(__root__=repository_response.json())
def get_metadata(self, repository: HasRepositoryId) -> RepositoryMetadata:
def get_metadata(self, repository: HasRepositoryId, downloadable_only=True) -> RepositoryMetadata:
repository_id = self._repository_id(repository)
metadata_response = self._api_interactor.get(f"repositories/{repository_id}/metadata")
metadata_response = self._api_interactor.get(
f"repositories/{repository_id}/metadata?downloadable_only={downloadable_only}"
)
api_asserts.assert_status_code_is_ok(metadata_response)
return RepositoryMetadata(__root__=metadata_response.json())
+5 -1
View File
@@ -1,4 +1,5 @@
import logging
from typing import Optional
from sqlalchemy import (
and_,
@@ -128,7 +129,10 @@ def get_repository_downloadable_revisions(repository_id):
return revisions
def get_repository_metadata_for_changeset_revision(repository_id, changeset_revision):
def get_repository_metadata_for_changeset_revision(
repository_id: int, changeset_revision: Optional[str]
) -> model.RepositoryMetadata:
assert sa_session
repository_metadata = (
sa_session.query(model.RepositoryMetadata)
.filter(
+135 -84
View File
@@ -5,7 +5,10 @@ import string
import tempfile
import time
from json import loads
from typing import List
from typing import (
List,
Optional,
)
from urllib.parse import (
quote_plus,
urlencode,
@@ -35,7 +38,12 @@ from tool_shed.util import (
hgweb_config,
xml_util,
)
from tool_shed_client.schema import Category
from tool_shed.webapp.model import Repository as DbRepository
from tool_shed_client.schema import (
Category,
Repository,
RepositoryMetadata,
)
from . import (
common,
test_db_util,
@@ -239,11 +247,11 @@ class ShedTwillTestCase(ShedBaseTestCase):
fh.write(smart_str(content))
return fh.name
def assign_admin_role(self, repository, user):
def assign_admin_role(self, repository: Repository, user):
# As elsewhere, twill limits the possibility of submitting the form, this time due to not executing the javascript
# attached to the role selection form. Visit the action url directly with the necessary parameters.
params = {
"id": self.security.encode_id(repository.id),
"id": repository.id,
"in_users": user.id,
"manage_role_associations_button": "Save",
}
@@ -259,8 +267,8 @@ class ShedTwillTestCase(ShedBaseTestCase):
self.visit_url("/repository/browse_valid_categories", params=params)
self.check_for_strings(strings_displayed, strings_not_displayed)
def browse_repository(self, repository, strings_displayed=None, strings_not_displayed=None):
params = {"id": self.security.encode_id(repository.id)}
def browse_repository(self, repository: Repository, strings_displayed=None, strings_not_displayed=None):
params = {"id": repository.id}
self.visit_url("/repository/browse_repository", params=params)
self.check_for_strings(strings_displayed, strings_not_displayed)
@@ -284,7 +292,7 @@ class ShedTwillTestCase(ShedBaseTestCase):
self.visit_url(url)
self.check_for_strings(strings_displayed, strings_not_displayed)
def check_count_of_metadata_revisions_associated_with_repository(self, repository, metadata_count):
def check_count_of_metadata_revisions_associated_with_repository(self, repository: Repository, metadata_count):
self.check_repository_changelog(repository)
self.check_string_count_in_page("Repository metadata is associated with this change set.", metadata_count)
@@ -332,22 +340,22 @@ class ShedTwillTestCase(ShedBaseTestCase):
tool_panel_section == expected_tool_panel_section
), f"Expected to find tool panel section *{expected_tool_panel_section}*, but instead found *{tool_panel_section}*\nMetadata: {metadata}\n"
def check_repository_changelog(self, repository, strings_displayed=None, strings_not_displayed=None):
params = {"id": self.security.encode_id(repository.id)}
def check_repository_changelog(self, repository: Repository, strings_displayed=None, strings_not_displayed=None):
params = {"id": repository.id}
self.visit_url("/repository/view_changelog", params=params)
self.check_for_strings(strings_displayed, strings_not_displayed)
def check_repository_dependency(
self, repository, depends_on_repository, depends_on_changeset_revision=None, changeset_revision=None
self, repository: Repository, depends_on_repository, depends_on_changeset_revision=None, changeset_revision=None
):
strings_displayed = [depends_on_repository.name, depends_on_repository.user.username]
strings_displayed = [depends_on_repository.name, depends_on_repository.owner]
if depends_on_changeset_revision:
strings_displayed.append(depends_on_changeset_revision)
self.display_manage_repository_page(
repository, changeset_revision=changeset_revision, strings_displayed=strings_displayed
)
def check_repository_metadata(self, repository, tip_only=True):
def check_repository_metadata(self, repository: Repository, tip_only=True):
if tip_only:
assert (
self.tip_has_metadata(repository) and len(self.get_repository_metadata_revisions(repository)) == 1
@@ -361,14 +369,19 @@ class ShedTwillTestCase(ShedBaseTestCase):
)
def check_repository_tools_for_changeset_revision(
self, repository, changeset_revision, tool_metadata_strings_displayed=None, tool_page_strings_displayed=None
self,
repository: Repository,
changeset_revision,
tool_metadata_strings_displayed=None,
tool_page_strings_displayed=None,
):
"""
Loop through each tool dictionary in the repository metadata associated with the received changeset_revision.
For each of these, check for a tools attribute, and load the tool metadata page if it exists, then display that tool's page.
"""
test_db_util.refresh(repository)
repository_metadata = self.get_repository_metadata_by_changeset_revision(repository, changeset_revision)
db_repository = self._db_repository(repository)
test_db_util.refresh(db_repository)
repository_metadata = self.get_repository_metadata_by_changeset_revision(db_repository.id, changeset_revision)
metadata = repository_metadata.metadata
if "tools" not in metadata:
raise AssertionError(f"No tools in {repository.name} revision {changeset_revision}.")
@@ -376,7 +389,7 @@ class ShedTwillTestCase(ShedBaseTestCase):
tool_id = tool_dict["id"]
tool_xml = tool_dict["tool_config"]
params = {
"repository_id": self.security.encode_id(repository.id),
"repository_id": repository.id,
"changeset_revision": changeset_revision,
"tool_id": tool_id,
}
@@ -391,10 +404,11 @@ class ShedTwillTestCase(ShedBaseTestCase):
)
def check_repository_invalid_tools_for_changeset_revision(
self, repository, changeset_revision, strings_displayed=None, strings_not_displayed=None
self, repository: Repository, changeset_revision, strings_displayed=None, strings_not_displayed=None
):
"""Load the invalid tool page for each invalid tool associated with this changeset revision and verify the received error messages."""
repository_metadata = self.get_repository_metadata_by_changeset_revision(repository, changeset_revision)
db_repository = self._db_repository(repository)
repository_metadata = self.get_repository_metadata_by_changeset_revision(db_repository.id, changeset_revision)
metadata = repository_metadata.metadata
assert (
"invalid_tools" in metadata
@@ -428,8 +442,8 @@ class ShedTwillTestCase(ShedBaseTestCase):
)
raise AssertionError(errmsg)
def clone_repository(self, repository, destination_path):
url = f"{self.url}/repos/{repository.user.username}/{repository.name}"
def clone_repository(self, repository: Repository, destination_path: str) -> None:
url = f"{self.url}/repos/{repository.owner}/{repository.name}"
success, message = hg_util.clone_repository(url, destination_path, self.get_repository_tip(repository))
assert success is True, message
@@ -460,7 +474,7 @@ class ShedTwillTestCase(ShedBaseTestCase):
def create_repository_dependency(
self,
repository=None,
repository: Optional[Repository] = None,
repository_tuples=None,
filepath=None,
prior_installation_required=False,
@@ -470,6 +484,7 @@ class ShedTwillTestCase(ShedBaseTestCase):
strings_displayed=None,
strings_not_displayed=None,
):
assert repository
repository_tuples = repository_tuples or []
repository_names = []
if complex:
@@ -528,7 +543,7 @@ class ShedTwillTestCase(ShedBaseTestCase):
assert response.status_code != 403, response.content
def delete_files_from_repository(
self, repository, filenames=None, strings_displayed=None, strings_not_displayed=None
self, repository: Repository, filenames=None, strings_displayed=None, strings_not_displayed=None
):
filenames = filenames or []
files_to_delete = []
@@ -545,13 +560,13 @@ class ShedTwillTestCase(ShedBaseTestCase):
tc.submit("select_files_to_delete_button")
self.check_for_strings(strings_displayed, strings_not_displayed)
def delete_repository(self, repository):
repository_id = self.security.encode_id(repository.id)
def delete_repository(self, repository: Repository) -> None:
repository_id = repository.id
self.visit_url("/admin/browse_repositories")
params = {"operation": "Delete", "id": repository_id}
self.visit_url("/admin/browse_repositories", params=params)
strings_displayed = ["Deleted 1 repository", repository.name]
strings_not_displayed = []
strings_not_displayed: List[str] = []
self.check_for_strings(strings_displayed, strings_not_displayed)
def display_galaxy_browse_repositories_page(self, strings_displayed=None, strings_not_displayed=None):
@@ -592,9 +607,9 @@ class ShedTwillTestCase(ShedBaseTestCase):
self.check_for_strings(strings_displayed, strings_not_displayed)
def display_manage_repository_page(
self, repository, changeset_revision=None, strings_displayed=None, strings_not_displayed=None
self, repository: Repository, changeset_revision=None, strings_displayed=None, strings_not_displayed=None
):
params = {"id": self.security.encode_id(repository.id)}
params = {"id": repository.id}
if changeset_revision:
params["changeset_revision"] = changeset_revision
self.visit_url("/repository/manage_repository", params=params)
@@ -608,7 +623,7 @@ class ShedTwillTestCase(ShedBaseTestCase):
self.check_for_strings(strings_displayed, strings_not_displayed)
def display_repository_file_contents(
self, repository, filename, filepath=None, strings_displayed=None, strings_not_displayed=None
self, repository: Repository, filename, filepath=None, strings_displayed=None, strings_not_displayed=None
):
"""Find a file in the repository and display the contents."""
basepath = self.get_repo_path(repository)
@@ -621,19 +636,17 @@ class ShedTwillTestCase(ShedBaseTestCase):
repository=repository, base_path=relative_path, current_path=None
)
assert filename in repository_file_list, f"File {filename} not found in the repository under {relative_path}."
params = dict(
file_path=os.path.join(relative_path, filename), repository_id=self.security.encode_id(repository.id)
)
params = dict(file_path=os.path.join(relative_path, filename), repository_id=repository.id)
url = "/repository/get_file_contents"
self.visit_url(url, params=params)
self.check_for_strings(strings_displayed, strings_not_displayed)
def edit_repository_categories(
self, repository, categories_to_add=None, categories_to_remove=None, restore_original=True
):
self, repository: Repository, categories_to_add=None, categories_to_remove=None, restore_original=True
) -> None:
categories_to_add = categories_to_add or []
categories_to_remove = categories_to_remove or []
params = {"id": self.security.encode_id(repository.id)}
params = {"id": repository.id}
self.visit_url("/repository/manage_repository", params=params)
strings_displayed = []
strings_not_displayed = []
@@ -657,11 +670,14 @@ class ShedTwillTestCase(ShedBaseTestCase):
tc.submit("manage_categories_button")
self.check_for_strings(strings_displayed, strings_not_displayed)
def edit_repository_information(self, repository, revert=True, **kwd):
params = {"id": self.security.encode_id(repository.id)}
def edit_repository_information(self, repository: Repository, revert=True, **kwd):
params = {"id": repository.id}
self.visit_url("/repository/manage_repository", params=params)
db_repository = self._db_repository(repository)
original_information = dict(
repo_name=repository.name, description=repository.description, long_description=repository.long_description
repo_name=db_repository.name,
description=db_repository.description,
long_description=db_repository.long_description,
)
strings_displayed = []
for input_elem_name in ["repo_name", "description", "long_description", "repository_type"]:
@@ -678,8 +694,8 @@ class ShedTwillTestCase(ShedBaseTestCase):
tc.submit("edit_repository_button")
self.check_for_strings(strings_displayed)
def enable_email_alerts(self, repository, strings_displayed=None, strings_not_displayed=None):
repository_id = self.security.encode_id(repository.id)
def enable_email_alerts(self, repository: Repository, strings_displayed=None, strings_not_displayed=None) -> None:
repository_id = repository.id
params = dict(operation="Receive email alerts", id=repository_id)
self.visit_url("/repository/browse_repositories", params)
self.check_for_strings(strings_displayed)
@@ -699,8 +715,8 @@ class ShedTwillTestCase(ShedBaseTestCase):
f"Repository <b>{name}</b> has been created",
]
def fetch_repository_metadata(self, repository, strings_displayed=None, strings_not_displayed=None):
url = f"/api/repositories/{self.security.encode_id(repository.id)}/metadata"
def fetch_repository_metadata(self, repository: Repository, strings_displayed=None, strings_not_displayed=None):
url = f"/api/repositories/{repository.id}/metadata"
self.visit_url(url)
self.check_for_strings(strings_displayed, strings_not_displayed)
@@ -823,26 +839,27 @@ class ShedTwillTestCase(ShedBaseTestCase):
def get_or_create_repository(
self, category: Category, owner=None, strings_displayed=None, strings_not_displayed=None, **kwd
):
) -> Optional[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:
strings_displayed = ["Repository", kwd["name"], "has been created"]
if strings_not_displayed is None:
strings_not_displayed = []
repository = test_db_util.get_repository_by_name_and_owner(kwd["name"], owner)
name = kwd["name"]
repository = self.populator.get_repository_for(owner, name)
category_id = category.id
assert category_id
if repository is None:
self.visit_url("/repository/create_repository")
self.submit_form(button="create_repository_button", category_id=category_id, **kwd)
self.check_for_strings(strings_displayed, strings_not_displayed)
repository = test_db_util.get_repository_by_name_and_owner(kwd["name"], owner)
repository = self.populator.get_repository_for(owner, name)
return repository
def get_repo_path(self, repository):
def get_repo_path(self, repository: Repository) -> str:
# An entry in the hgweb.config file looks something like: repos/test/mira_assembler = database/community_files/000/repo_123
lhs = f"repos/{repository.user.username}/{repository.name}"
lhs = f"repos/{repository.owner}/{repository.name}"
try:
return self.hgweb_config_manager.get_entry(lhs)
except Exception:
@@ -858,14 +875,14 @@ class ShedTwillTestCase(ShedBaseTestCase):
changelog_tuples.append((ctx.rev(), ctx))
return changelog_tuples
def get_repository_file_list(self, repository, base_path, current_path=None):
def get_repository_file_list(self, repository: Repository, base_path: str, current_path=None) -> List[str]:
"""Recursively load repository folder contents and append them to a list. Similar to os.walk but via /repository/open_folder."""
if current_path is None:
request_param_path = base_path
else:
request_param_path = os.path.join(base_path, current_path)
# Get the current folder's contents.
params = dict(folder_path=request_param_path, repository_id=self.security.encode_id(repository.id))
params = dict(folder_path=request_param_path, repository_id=repository.id)
url = "/repository/open_folder"
self.visit_url(url, params=params)
file_list = loads(self.last_page())
@@ -896,19 +913,40 @@ class ShedTwillTestCase(ShedBaseTestCase):
returned_file_list.append(file_dict["title"])
return returned_file_list
def get_repository_metadata(self, repository):
def _db_repository(self, repository: Repository) -> DbRepository:
return self.test_db_util.get_repository_by_name_and_owner(repository.name, repository.owner)
def get_repository_metadata(self, repository: Repository):
return self.get_repository_metadata_for_db_object(self._db_repository(repository))
def get_repository_metadata_for_db_object(self, repository: DbRepository):
return [metadata_revision for metadata_revision in repository.metadata_revisions]
def get_repository_metadata_by_changeset_revision(self, repository, changeset_revision):
return test_db_util.get_repository_metadata_for_changeset_revision(repository.id, changeset_revision)
def get_repository_metadata_by_changeset_revision(self, repository_id: int, changeset_revision):
return test_db_util.get_repository_metadata_for_changeset_revision(
repository_id, changeset_revision
) or test_db_util.get_repository_metadata_for_changeset_revision(repository_id, None)
def get_repository_metadata_revisions(self, repository):
return [str(repository_metadata.changeset_revision) for repository_metadata in repository.metadata_revisions]
def get_repository_metadata_revisions(self, repository: Repository) -> List[str]:
return [
str(repository_metadata.changeset_revision)
for repository_metadata in self._db_repository(repository).metadata_revisions
]
def get_repository_tip(self, repository):
def _get_repository_by_name_and_owner(self, name: str, owner: str) -> Optional[Repository]:
repo = self.populator.get_repository_for(owner, name)
if repo is None:
repo = self.populator.get_repository_for(owner, name, deleted="true")
return repo
def get_repository_tip(self, repository: Repository) -> str:
repo = self.get_hg_repo(self.get_repo_path(repository))
return str(repo[repo.changelog.tip()])
def _get_metadata_revision_count(self, repository: Repository) -> int:
repostiory_metadata: RepositoryMetadata = self.populator.get_metadata(repository, downloadable_only=False)
return len(repostiory_metadata.__root__)
def get_tools_from_repository_metadata(self, repository, include_invalid=False):
"""Get a list of valid and (optionally) invalid tool dicts from the repository metadata."""
valid_tools = []
@@ -977,7 +1015,7 @@ class ShedTwillTestCase(ShedBaseTestCase):
def grant_write_access(
self,
repository,
repository: Repository,
usernames=None,
strings_displayed=None,
strings_not_displayed=None,
@@ -1043,8 +1081,8 @@ class ShedTwillTestCase(ShedBaseTestCase):
self.browse_tool_shed(url=self.url)
self.browse_category(self.populator.get_category_with_name(category_name))
self.preview_repository_in_tool_shed(name, owner, strings_displayed=preview_strings_displayed)
repository = test_db_util.get_repository_by_name_and_owner(name, owner)
repository_id = self.security.encode_id(repository.id)
repository = self._get_repository_by_name_and_owner(name, owner)
repository_id = repository.id
if changeset_revision is None:
changeset_revision = self.get_repository_tip(repository)
params = {
@@ -1130,6 +1168,7 @@ class ShedTwillTestCase(ShedBaseTestCase):
def load_changeset_in_tool_shed(
self, repository_id, changeset_revision, strings_displayed=None, strings_not_displayed=None
):
# Only used in 0000
params = {"ctx_str": changeset_revision, "id": repository_id}
self.visit_url("/repository/view_changeset", params=params)
self.check_for_strings(strings_displayed, strings_not_displayed)
@@ -1147,10 +1186,15 @@ class ShedTwillTestCase(ShedBaseTestCase):
self.check_for_strings(strings_displayed, strings_not_displayed)
def load_display_tool_page(
self, repository, tool_xml_path, changeset_revision, strings_displayed=None, strings_not_displayed=None
self,
repository: Repository,
tool_xml_path,
changeset_revision,
strings_displayed=None,
strings_not_displayed=None,
):
params = {
"repository_id": self.security.encode_id(repository.id),
"repository_id": repository.id,
"tool_config": tool_xml_path,
"changeset_revision": changeset_revision,
}
@@ -1158,10 +1202,10 @@ class ShedTwillTestCase(ShedBaseTestCase):
self.check_for_strings(strings_displayed, strings_not_displayed)
def load_invalid_tool_page(
self, repository, tool_xml, changeset_revision, strings_displayed=None, strings_not_displayed=None
self, repository: Repository, tool_xml, changeset_revision, strings_displayed=None, strings_not_displayed=None
):
params = {
"repository_id": self.security.encode_id(repository.id),
"repository_id": repository.id,
"tool_config": tool_xml,
"changeset_revision": changeset_revision,
}
@@ -1169,12 +1213,18 @@ class ShedTwillTestCase(ShedBaseTestCase):
self.check_for_strings(strings_displayed, strings_not_displayed)
def preview_repository_in_tool_shed(
self, name, owner, changeset_revision=None, strings_displayed=None, strings_not_displayed=None
self,
name: str,
owner: str,
changeset_revision: Optional[str] = None,
strings_displayed=None,
strings_not_displayed=None,
):
repository = test_db_util.get_repository_by_name_and_owner(name, owner)
repository = self._get_repository_by_name_and_owner(name, owner)
assert repository
if not changeset_revision:
changeset_revision = self.get_repository_tip(repository)
params = {"repository_id": self.security.encode_id(repository.id), "changeset_revision": changeset_revision}
params = {"repository_id": repository.id, "changeset_revision": changeset_revision}
self.visit_url("/repository/preview_tools_in_changeset", params=params)
self.check_for_strings(strings_displayed, strings_not_displayed)
@@ -1223,7 +1273,7 @@ class ShedTwillTestCase(ShedBaseTestCase):
# Finally, wait until all repositories are in a final state (either Error or Installed) before returning.
self.wait_for_repository_installation(repository_ids)
def repository_is_new(self, repository):
def repository_is_new(self, repository: Repository) -> bool:
repo = self.get_hg_repo(self.get_repo_path(repository))
tip_ctx = repo[repo.changelog.tip()]
return tip_ctx.rev() < 0
@@ -1253,12 +1303,12 @@ class ShedTwillTestCase(ShedBaseTestCase):
assert response.status_code != 403, response.content
def reset_repository_metadata(self, repository):
params = {"id": self.security.encode_id(repository.id)}
params = {"id": repository.id}
self.visit_url("/repository/reset_all_metadata", params=params)
self.check_for_strings(["All repository metadata has been reset."])
def revoke_write_access(self, repository, username):
params = {"user_access_button": "Remove", "id": self.security.encode_id(repository.id), "remove_auth": username}
params = {"user_access_button": "Remove", "id": repository.id, "remove_auth": username}
self.visit_url("/repository/manage_repository", params=params)
def search_for_valid_tools(
@@ -1282,14 +1332,14 @@ class ShedTwillTestCase(ShedBaseTestCase):
def send_message_to_repository_owner(
self,
repository,
message,
repository: Repository,
message: str,
strings_displayed=None,
strings_not_displayed=None,
post_submit_strings_displayed=None,
post_submit_strings_not_displayed=None,
):
params = {"id": self.security.encode_id(repository.id)}
) -> None:
params = {"id": repository.id}
self.visit_url("/repository/contact_owner", params=params)
self.check_for_strings(strings_displayed, strings_not_displayed)
tc.fv(1, "message", message)
@@ -1314,29 +1364,30 @@ class ShedTwillTestCase(ShedBaseTestCase):
return kwd
def set_repository_deprecated(
self, repository, set_deprecated=True, strings_displayed=None, strings_not_displayed=None
self, repository: Repository, set_deprecated=True, strings_displayed=None, strings_not_displayed=None
):
params = {"id": self.security.encode_id(repository.id), "mark_deprecated": set_deprecated}
params = {"id": repository.id, "mark_deprecated": set_deprecated}
self.visit_url("/repository/deprecate", params=params)
self.check_for_strings(strings_displayed, strings_not_displayed)
def set_repository_malicious(
self, repository, set_malicious=True, strings_displayed=None, strings_not_displayed=None
):
self, repository: Repository, set_malicious=True, strings_displayed=None, strings_not_displayed=None
) -> None:
self.display_manage_repository_page(repository)
tc.fv("malicious", "malicious", set_malicious)
tc.submit("malicious_button")
self.check_for_strings(strings_displayed, strings_not_displayed)
def tip_has_metadata(self, repository):
def tip_has_metadata(self, repository: Repository) -> bool:
tip = self.get_repository_tip(repository)
return test_db_util.get_repository_metadata_by_repository_id_changeset_revision(repository.id, tip)
db_repository = self._db_repository(repository)
return test_db_util.get_repository_metadata_by_repository_id_changeset_revision(db_repository.id, tip)
def undelete_repository(self, repository):
params = {"operation": "Undelete", "id": self.security.encode_id(repository.id)}
def undelete_repository(self, repository: Repository) -> None:
params = {"operation": "Undelete", "id": repository.id}
self.visit_url("/admin/browse_repositories", params=params)
strings_displayed = ["Undeleted 1 repository", repository.name]
strings_not_displayed = []
strings_not_displayed: List[str] = []
self.check_for_strings(strings_displayed, strings_not_displayed)
def uninstall_repository(self, installed_repository, strings_displayed=None, strings_not_displayed=None):
@@ -1369,7 +1420,7 @@ class ShedTwillTestCase(ShedBaseTestCase):
def upload_file(
self,
repository,
repository: Repository,
filename,
filepath,
valid_tools_only,
@@ -1391,7 +1442,7 @@ class ShedTwillTestCase(ShedBaseTestCase):
else:
if removed_message not in strings_not_displayed:
strings_not_displayed.append(removed_message)
params = {"repository_id": self.security.encode_id(repository.id)}
params = {"repository_id": repository.id}
self.visit_url("/upload/upload", params=params)
if valid_tools_only:
strings_displayed.extend(["has been successfully", "uploaded to the repository."])
@@ -1440,7 +1491,7 @@ class ShedTwillTestCase(ShedBaseTestCase):
else:
if removed_message not in strings_not_displayed:
strings_not_displayed.append(removed_message)
params = {"repository_id": self.security.encode_id(repository.id)}
params = {"repository_id": repository.id}
self.visit_url("/upload/upload", params=params)
if valid_tools_only:
strings_displayed.extend(["has been successfully", "uploaded to the repository."])
@@ -1556,7 +1607,7 @@ class ShedTwillTestCase(ShedBaseTestCase):
self.visit_galaxy_url(url, params)
self.check_for_strings(strings, strings_not_displayed)
def verify_unchanged_repository_metadata(self, repository):
def verify_unchanged_repository_metadata(self, repository: Repository):
old_metadata = dict()
new_metadata = dict()
for metadata in self.get_repository_metadata(repository):
+2 -1
View File
@@ -36,8 +36,9 @@ for deletion instead of writing new tests and modernizing the API.
| get_ordered_installable_revisions | NO | NO | YES | YES | NO | used by complete_repo_information in ephemeris for shed_tools |
| reset_metadata_on_repository | NO | NO | NO | YES | NO | Bjoern said it was a thing that is done via the UI still |
| GET repositories/{repository_id}/metadata| Yes (getRepository in client?) | NO? | NO? | YES | NO | |
| tool search | NO | NO | NO | YES | NO | Community contributed - used by tool dog or something? |
/github.com/galaxyproject/galaxy/pull/14672#pullrequestreview-1116016874) |
| repo search (Get repositories + q param) | YES | NO | NO | YES | NO | Used by the Vue tool shed install interface. |
| repositories/{repository_id}/changeset_revision | NO | YES | NO | YES | NO | |
| POST repositories | NO | YES | NO | YES | NO | |
| GET repositories (without search query) | ? | ? |? | True | True | |
@@ -52,7 +52,7 @@ class TestBasicRepositoryFeatures(ShedTwillTestCase):
def test_0020_edit_repository(self):
"""Edit the repository name, description, and long description"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
new_name = "renamed_filtering"
new_description = "Edited filtering tool"
new_long_description = "Edited long description"
@@ -62,7 +62,7 @@ class TestBasicRepositoryFeatures(ShedTwillTestCase):
def test_0025_change_repository_category(self):
"""Change the categories associated with the filtering repository"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.edit_repository_categories(
repository,
categories_to_add=["Test 0000 Basic Repository Features 2"],
@@ -71,13 +71,13 @@ class TestBasicRepositoryFeatures(ShedTwillTestCase):
def test_0030_grant_write_access(self):
"""Grant write access to another user"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.grant_write_access(repository, usernames=[common.test_user_2_name])
self.revoke_write_access(repository, common.test_user_2_name)
def test_0035_upload_filtering_1_1_0(self):
"""Upload filtering_1.1.0.tar to the repository"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.upload_file(
repository,
filename="filtering/filtering_1.1.0.tar",
@@ -92,7 +92,7 @@ class TestBasicRepositoryFeatures(ShedTwillTestCase):
def test_0040_verify_repository(self):
"""Display basic repository pages"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
latest_changeset_revision = self.get_repository_tip(repository)
self.check_for_valid_tools(repository, strings_displayed=["Filter1"])
self.check_count_of_metadata_revisions_associated_with_repository(repository, metadata_count=1)
@@ -124,7 +124,7 @@ class TestBasicRepositoryFeatures(ShedTwillTestCase):
def test_0045_alter_repository_states(self):
"""Test toggling the malicious and deprecated repository flags."""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.login(email=common.admin_email, username=common.admin_username)
self.set_repository_malicious(
repository, set_malicious=True, strings_displayed=["The repository tip has been defined as malicious."]
@@ -151,7 +151,8 @@ class TestBasicRepositoryFeatures(ShedTwillTestCase):
def test_0050_display_repository_tip_file(self):
"""Display the contents of filtering.xml in the repository tip revision"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
assert repository
self.display_repository_file_contents(
repository=repository,
filename="filtering.xml",
@@ -162,7 +163,7 @@ class TestBasicRepositoryFeatures(ShedTwillTestCase):
def test_0055_upload_filtering_txt_file(self):
"""Upload filtering.txt file associated with tool version 1.1.0."""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.upload_file(
repository,
filename="filtering/filtering_0000.txt",
@@ -180,7 +181,7 @@ class TestBasicRepositoryFeatures(ShedTwillTestCase):
def test_0060_upload_filtering_test_data(self):
"""Upload filtering test data."""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.upload_file(
repository,
filename="filtering/filtering_test_data.tar",
@@ -203,7 +204,7 @@ class TestBasicRepositoryFeatures(ShedTwillTestCase):
def test_0065_upload_filtering_2_2_0(self):
"""Upload filtering version 2.2.0"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.upload_file(
repository,
filename="filtering/filtering_2.2.0.tar",
@@ -218,7 +219,7 @@ class TestBasicRepositoryFeatures(ShedTwillTestCase):
def test_0070_verify_filtering_repository(self):
"""Verify the new tool versions and repository metadata."""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
tip = self.get_repository_tip(repository)
self.check_for_valid_tools(repository)
strings_displayed = ["Select a revision"]
@@ -243,7 +244,7 @@ class TestBasicRepositoryFeatures(ShedTwillTestCase):
def test_0075_upload_readme_txt_file(self):
"""Upload readme.txt file associated with tool version 2.2.0."""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.upload_file(
repository,
filename="readme.txt",
@@ -269,7 +270,7 @@ class TestBasicRepositoryFeatures(ShedTwillTestCase):
def test_0080_delete_readme_txt_file(self):
"""Delete the readme.txt file."""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.delete_files_from_repository(repository, filenames=["readme.txt"])
self.check_count_of_metadata_revisions_associated_with_repository(repository, metadata_count=2)
self.display_manage_repository_page(
@@ -278,7 +279,7 @@ class TestBasicRepositoryFeatures(ShedTwillTestCase):
def test_0085_search_for_valid_filter_tool(self):
"""Search for the filtering tool by tool ID, name, and version."""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
tip_changeset = self.get_repository_tip(repository)
search_fields = dict(tool_id="Filter1", tool_name="filter", tool_version="2.2.0")
self.search_for_valid_tools(
@@ -287,7 +288,7 @@ class TestBasicRepositoryFeatures(ShedTwillTestCase):
def test_0090_verify_repository_metadata(self):
"""Verify that resetting the metadata does not change it."""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.verify_unchanged_repository_metadata(repository)
def test_0095_verify_reserved_repository_name_handling(self):
@@ -324,7 +325,7 @@ class TestBasicRepositoryFeatures(ShedTwillTestCase):
the email is the last step in the process, this will verify functional correctness of all preceding steps.
"""
self.login(email=common.test_user_2_email, username=common.test_user_2_name)
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
message = "This is a test message."
strings_displayed = [
"Contact the owner of the repository named",
@@ -341,41 +342,41 @@ class TestBasicRepositoryFeatures(ShedTwillTestCase):
def test_0110_delete_filtering_repository(self):
"""Delete the filtering_0000 repository and verify that it no longer has any downloadable revisions."""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.login(email=common.admin_email, username=common.admin_username)
self.delete_repository(repository)
# Explicitly reload all metadata revisions from the database, to ensure that we have the current status of the downloadable flag.
for metadata_revision in repository.metadata_revisions:
self.test_db_util.refresh(metadata_revision)
# for metadata_revision in repository.metadata_revisions:
# self.test_db_util.refresh(metadata_revision)
# Marking a repository as deleted should result in no metadata revisions being downloadable.
assert True not in [metadata.downloadable for metadata in repository.metadata_revisions]
assert True not in [metadata.downloadable for metadata in self._db_repository(repository).metadata_revisions]
def test_0115_undelete_filtering_repository(self):
"""Undelete the filtering_0000 repository and verify that it now has two downloadable revisions."""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.login(email=common.admin_email, username=common.admin_username)
self.undelete_repository(repository)
# Explicitly reload all metadata revisions from the database, to ensure that we have the current status of the downloadable flag.
for metadata_revision in repository.metadata_revisions:
self.test_db_util.refresh(metadata_revision)
# for metadata_revision in repository.metadata_revisions:
# self.test_db_util.refresh(metadata_revision)
# Marking a repository as undeleted should result in all previously downloadable metadata revisions being downloadable again.
# In this case, there should be two downloadable revisions, one for filtering 1.1.0 and one for filtering 2.2.0.
assert True in [metadata.downloadable for metadata in repository.metadata_revisions]
assert len(repository.downloadable_revisions) == 2
assert True in [metadata.downloadable for metadata in self._db_repository(repository).metadata_revisions]
assert len(self._db_repository(repository).downloadable_revisions) == 2
def test_0120_enable_email_notifications(self):
"""Enable email notifications for test user 2 on filtering_0000."""
# Log in as test_user_2
self.login(email=common.test_user_2_email, username=common.test_user_2_name)
# Get the repository, so we can pass the encoded repository id and browse_repositories method to the set_email_alerts method.
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
strings_displayed = ["Total alerts added: 1, total alerts removed: 0"]
self.enable_email_alerts(repository, strings_displayed=strings_displayed)
def test_0125_upload_new_readme_file(self):
"""Upload a new readme file to the filtering_0000 repository and verify that there is no error."""
self.login(email=common.test_user_1_email, username=common.test_user_1_name)
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
# Upload readme.txt to the filtering_0000 repository and verify that it is now displayed.
self.upload_file(
repository,
@@ -394,9 +395,9 @@ class TestBasicRepositoryFeatures(ShedTwillTestCase):
def test_0130_verify_handling_of_invalid_characters(self):
"""Load the above changeset in the change log and confirm that there is no server error displayed."""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
changeset_revision = self.get_repository_tip(repository)
repository_id = self.security.encode_id(repository.id)
repository_id = repository.id
changelog_tuples = self.get_repository_changelog_tuples(repository)
revision_number = -1
revision_hash = "000000000000"
@@ -426,8 +427,8 @@ class TestBasicRepositoryFeatures(ShedTwillTestCase):
def test_0140_view_invalid_changeset(self):
"""View repository using an invalid changeset"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
encoded_repository_id = self.security.encode_id(repository.id)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
encoded_repository_id = repository.id
strings_displayed = ["Invalid+changeset+revision"]
self.visit_url(
f"/repository/view_repository?id={encoded_repository_id}&changeset_revision=nonsensical_changeset"
@@ -52,6 +52,7 @@ class TestFreebayesRepository(ShedTwillTestCase):
category=category,
strings_displayed=[],
)
assert repository
self.upload_file(
repository,
filename="freebayes/freebayes.xml",
@@ -76,7 +77,7 @@ class TestFreebayesRepository(ShedTwillTestCase):
We are at step 2 - Upload the tool_data_table_conf.xml.sample file.
Uploading the tool_data_table_conf.xml.sample alone should not make the tool valid, but the error message should change.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.upload_file(
repository,
filename="freebayes/tool_data_table_conf.xml.sample",
@@ -101,7 +102,7 @@ class TestFreebayesRepository(ShedTwillTestCase):
We are at step 3 - Upload the tool_data_table_conf.xml.sample file.
Uploading the tool_data_table_conf.xml.sample alone should not make the tool valid, but the error message should change.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.upload_file(
repository,
filename="freebayes/sam_fa_indices.loc.sample",
@@ -120,7 +121,7 @@ class TestFreebayesRepository(ShedTwillTestCase):
We are at step 4 - Upload a tool_dependencies.xml file that should not parse correctly.
Upload a tool_dependencies.xml file that contains <> in the text of the readme tag. This should show an error message about malformed xml.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.upload_file(
repository,
filename=os.path.join("freebayes", "malformed_tool_dependencies", "tool_dependencies.xml"),
@@ -139,7 +140,7 @@ class TestFreebayesRepository(ShedTwillTestCase):
We are at step 5 - Upload a tool_dependencies.xml file that specifies a version that does not match the tool's requirements.
This should result in a message about the tool dependency configuration not matching the tool's requirements.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.upload_file(
repository,
filename=os.path.join("freebayes", "invalid_tool_dependencies", "tool_dependencies.xml"),
@@ -160,7 +161,7 @@ class TestFreebayesRepository(ShedTwillTestCase):
We are at step 6 - Upload a valid tool_dependencies.xml file.
At this stage, there should be no errors on the upload page, as every missing or invalid file has been corrected.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.upload_file(
repository,
filename=os.path.join("freebayes", "tool_dependencies.xml"),
@@ -179,7 +180,7 @@ class TestFreebayesRepository(ShedTwillTestCase):
We are at step 7 - Check for the appropriate strings on the manage repository page.
Verify that the manage repository page now displays the valid tool dependencies, and that there are no invalid tools shown on the manage page.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
strings_displayed = ["freebayes", "0.9.4_9696d0ce8a9", "samtools", "0.1.18", "Valid tools", "package"]
strings_not_displayed = ["Invalid tools"]
self.display_manage_repository_page(
@@ -75,15 +75,15 @@ class TestBasicRepositoryDependencies(ShedTwillTestCase):
def test_0025_generate_and_upload_repository_dependencies_xml(self):
"""Generate and upload the repository_dependencies.xml file"""
repository = self.test_db_util.get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
column_maker_repository = self.test_db_util.get_repository_by_name_and_owner(
repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
column_maker_repository = self._get_repository_by_name_and_owner(
column_maker_repository_name, common.test_user_1_name
)
repository_dependencies_path = self.generate_temp_path("test_0020", additional_paths=["emboss", "5"])
repository_tuple = (
self.url,
column_maker_repository.name,
column_maker_repository.user.username,
column_maker_repository.owner,
self.get_repository_tip(column_maker_repository),
)
self.create_repository_dependency(
@@ -92,8 +92,8 @@ class TestBasicRepositoryDependencies(ShedTwillTestCase):
def test_0030_verify_emboss_5_dependencies(self):
"""Verify that the emboss_5 repository now depends on the emboss_datatypes repository with correct name, owner, and changeset revision."""
repository = self.test_db_util.get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
column_maker_repository = self.test_db_util.get_repository_by_name_and_owner(
repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
column_maker_repository = self._get_repository_by_name_and_owner(
column_maker_repository_name, common.test_user_1_name
)
changeset_revision = self.get_repository_tip(column_maker_repository)
@@ -110,10 +110,8 @@ class TestBasicRepositoryDependencies(ShedTwillTestCase):
def test_0040_verify_repository_metadata(self):
"""Verify that resetting the metadata does not change it."""
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
column_maker_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
column_maker_repository = self._get_repository_by_name_and_owner(
column_maker_repository_name, common.test_user_1_name
)
self.verify_unchanged_repository_metadata(emboss_repository)
@@ -123,17 +123,15 @@ class TestRepositoryDependencyRevisions(ShedTwillTestCase):
def test_0030_generate_repository_dependencies_for_emboss_5(self):
"""Generate a repository_dependencies.xml file specifying emboss_datatypes and upload it to the emboss_5 repository."""
column_maker_repository = self.test_db_util.get_repository_by_name_and_owner(
column_maker_repository = self._get_repository_by_name_and_owner(
column_maker_repository_name, common.test_user_1_name
)
emboss_5_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_5_repository_name, common.test_user_1_name
)
emboss_5_repository = self._get_repository_by_name_and_owner(emboss_5_repository_name, common.test_user_1_name)
repository_dependencies_path = self.generate_temp_path("test_0030", additional_paths=["emboss5"])
column_maker_tuple = (
self.url,
column_maker_repository.name,
column_maker_repository.user.username,
column_maker_repository.owner,
self.get_repository_tip(column_maker_repository),
)
self.create_repository_dependency(
@@ -144,17 +142,15 @@ class TestRepositoryDependencyRevisions(ShedTwillTestCase):
def test_0035_generate_repository_dependencies_for_emboss_6(self):
"""Generate a repository_dependencies.xml file specifying emboss_datatypes and upload it to the emboss_6 repository."""
emboss_6_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_6_repository_name, common.test_user_1_name
)
column_maker_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_6_repository = self._get_repository_by_name_and_owner(emboss_6_repository_name, common.test_user_1_name)
column_maker_repository = self._get_repository_by_name_and_owner(
column_maker_repository_name, common.test_user_1_name
)
repository_dependencies_path = self.generate_temp_path("test_0030", additional_paths=["emboss6"])
column_maker_tuple = (
self.url,
column_maker_repository.name,
column_maker_repository.user.username,
column_maker_repository.owner,
self.get_repository_tip(column_maker_repository),
)
self.create_repository_dependency(
@@ -165,17 +161,13 @@ class TestRepositoryDependencyRevisions(ShedTwillTestCase):
def test_0040_generate_repository_dependency_on_emboss_5(self):
"""Create and upload repository_dependencies.xml for the emboss_5_0030 repository."""
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
emboss_5_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_5_repository_name, common.test_user_1_name
)
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
emboss_5_repository = self._get_repository_by_name_and_owner(emboss_5_repository_name, common.test_user_1_name)
repository_dependencies_path = self.generate_temp_path("test_0030", additional_paths=["emboss", "5"])
emboss_tuple = (
self.url,
emboss_5_repository.name,
emboss_5_repository.user.username,
emboss_5_repository.owner,
self.get_repository_tip(emboss_5_repository),
)
self.create_repository_dependency(
@@ -184,17 +176,13 @@ class TestRepositoryDependencyRevisions(ShedTwillTestCase):
def test_0045_generate_repository_dependency_on_emboss_6(self):
"""Create and upload repository_dependencies.xml for the emboss_6_0030 repository."""
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
emboss_6_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_6_repository_name, common.test_user_1_name
)
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
emboss_6_repository = self._get_repository_by_name_and_owner(emboss_6_repository_name, common.test_user_1_name)
repository_dependencies_path = self.generate_temp_path("test_0030", additional_paths=["emboss", "5"])
emboss_tuple = (
self.url,
emboss_6_repository.name,
emboss_6_repository.user.username,
emboss_6_repository.owner,
self.get_repository_tip(emboss_6_repository),
)
self.create_repository_dependency(
@@ -203,11 +191,11 @@ class TestRepositoryDependencyRevisions(ShedTwillTestCase):
def test_0050_verify_repository_dependency_revisions(self):
"""Verify that different metadata revisions of the emboss repository have different repository dependencies."""
repository = self.test_db_util.get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
repository_metadata = [
(metadata.metadata, metadata.changeset_revision) for metadata in self.get_repository_metadata(repository)
]
column_maker_repository = self.test_db_util.get_repository_by_name_and_owner(
column_maker_repository = self._get_repository_by_name_and_owner(
column_maker_repository_name, common.test_user_1_name
)
column_maker_tip = self.get_repository_tip(column_maker_repository)
@@ -223,16 +211,10 @@ class TestRepositoryDependencyRevisions(ShedTwillTestCase):
def test_0055_verify_repository_metadata(self):
"""Verify that resetting the metadata does not change it."""
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
emboss_5_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_5_repository_name, common.test_user_1_name
)
emboss_6_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_6_repository_name, common.test_user_1_name
)
column_maker_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
emboss_5_repository = self._get_repository_by_name_and_owner(emboss_5_repository_name, common.test_user_1_name)
emboss_6_repository = self._get_repository_by_name_and_owner(emboss_6_repository_name, common.test_user_1_name)
column_maker_repository = self._get_repository_by_name_and_owner(
column_maker_repository_name, common.test_user_1_name
)
for repository in [emboss_repository, emboss_5_repository, emboss_6_repository, column_maker_repository]:
@@ -84,14 +84,12 @@ class TestRepositoryCircularDependencies(ShedTwillTestCase):
# Filtering revision 0 -> freebayes revision 0.
# Freebayes revision 0 -> filtering revision 1.
# Filtering will have two revisions, one with just the filtering tool, and one with the filtering tool and a dependency on freebayes.
repository = self.test_db_util.get_repository_by_name_and_owner(
freebayes_repository_name, common.test_user_1_name
)
filtering_repository = self.test_db_util.get_repository_by_name_and_owner(
repository = self._get_repository_by_name_and_owner(freebayes_repository_name, common.test_user_1_name)
filtering_repository = self._get_repository_by_name_and_owner(
filtering_repository_name, common.test_user_1_name
)
repository_dependencies_path = self.generate_temp_path("test_0040", additional_paths=["filtering"])
repository_tuple = (self.url, repository.name, repository.user.username, self.get_repository_tip(repository))
repository_tuple = (self.url, repository.name, repository.owner, self.get_repository_tip(repository))
self.create_repository_dependency(
repository=filtering_repository, repository_tuples=[repository_tuple], filepath=repository_dependencies_path
)
@@ -102,24 +100,22 @@ class TestRepositoryCircularDependencies(ShedTwillTestCase):
# Filtering revision 0 -> freebayes revision 0.
# Freebayes revision 0 -> filtering revision 1.
# Filtering will have two revisions, one with just the filtering tool, and one with the filtering tool and a dependency on freebayes.
repository = self.test_db_util.get_repository_by_name_and_owner(
filtering_repository_name, common.test_user_1_name
)
freebayes_repository = self.test_db_util.get_repository_by_name_and_owner(
repository = self._get_repository_by_name_and_owner(filtering_repository_name, common.test_user_1_name)
freebayes_repository = self._get_repository_by_name_and_owner(
freebayes_repository_name, common.test_user_1_name
)
repository_dependencies_path = self.generate_temp_path("test_0040", additional_paths=["freebayes"])
repository_tuple = (self.url, repository.name, repository.user.username, self.get_repository_tip(repository))
repository_tuple = (self.url, repository.name, repository.owner, self.get_repository_tip(repository))
self.create_repository_dependency(
repository=freebayes_repository, repository_tuples=[repository_tuple], filepath=repository_dependencies_path
)
def test_0030_verify_repository_dependencies(self):
"""Verify that each repository can depend on the other without causing an infinite loop."""
filtering_repository = self.test_db_util.get_repository_by_name_and_owner(
filtering_repository = self._get_repository_by_name_and_owner(
filtering_repository_name, common.test_user_1_name
)
freebayes_repository = self.test_db_util.get_repository_by_name_and_owner(
freebayes_repository = self._get_repository_by_name_and_owner(
freebayes_repository_name, common.test_user_1_name
)
# The dependency structure should look like:
@@ -136,10 +132,10 @@ class TestRepositoryCircularDependencies(ShedTwillTestCase):
def test_0035_verify_repository_metadata(self):
"""Verify that resetting the metadata does not change it."""
freebayes_repository = self.test_db_util.get_repository_by_name_and_owner(
freebayes_repository = self._get_repository_by_name_and_owner(
freebayes_repository_name, common.test_user_1_name
)
filtering_repository = self.test_db_util.get_repository_by_name_and_owner(
filtering_repository = self._get_repository_by_name_and_owner(
filtering_repository_name, common.test_user_1_name
)
for repository in [freebayes_repository, filtering_repository]:
@@ -147,9 +143,7 @@ class TestRepositoryCircularDependencies(ShedTwillTestCase):
def test_0040_verify_tool_dependencies(self):
"""Verify that freebayes displays tool dependencies."""
repository = self.test_db_util.get_repository_by_name_and_owner(
freebayes_repository_name, common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner(freebayes_repository_name, common.test_user_1_name)
self.display_manage_repository_page(
repository,
strings_displayed=["freebayes", "0.9.4_9696d0ce8a9", "samtools", "0.1.18", "Valid tools", "package"],
@@ -183,24 +183,16 @@ class TestRepositoryCircularDependenciesToNLevels(ShedTwillTestCase):
)
def test_0040_create_and_upload_dependency_definitions(self):
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
filtering_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
convert_repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
filtering_repository = self._get_repository_by_name_and_owner(
filtering_repository_name, common.test_user_1_name
)
freebayes_repository = self.test_db_util.get_repository_by_name_and_owner(
freebayes_repository = self._get_repository_by_name_and_owner(
freebayes_repository_name, common.test_user_1_name
)
bismark_repository = self.test_db_util.get_repository_by_name_and_owner(
bismark_repository_name, common.test_user_1_name
)
bismark_repository = self._get_repository_by_name_and_owner(bismark_repository_name, common.test_user_1_name)
dependency_xml_path = self.generate_temp_path("test_0050", additional_paths=["freebayes"])
# convert_chars depends on column_maker
# column_maker depends on convert_chars
@@ -211,31 +203,31 @@ class TestRepositoryCircularDependenciesToNLevels(ShedTwillTestCase):
column_tuple = (
self.url,
column_repository.name,
column_repository.user.username,
column_repository.owner,
self.get_repository_tip(column_repository),
)
convert_tuple = (
self.url,
convert_repository.name,
convert_repository.user.username,
convert_repository.owner,
self.get_repository_tip(convert_repository),
)
freebayes_tuple = (
self.url,
freebayes_repository.name,
freebayes_repository.user.username,
freebayes_repository.owner,
self.get_repository_tip(freebayes_repository),
)
emboss_tuple = (
self.url,
emboss_repository.name,
emboss_repository.user.username,
emboss_repository.owner,
self.get_repository_tip(emboss_repository),
)
bismark_tuple = (
self.url,
bismark_repository.name,
bismark_repository.user.username,
bismark_repository.owner,
self.get_repository_tip(bismark_repository),
)
self.create_repository_dependency(
@@ -275,24 +267,16 @@ class TestRepositoryCircularDependenciesToNLevels(ShedTwillTestCase):
id: 7 key: http://toolshed.local:10001__ESEP__emboss_5__ESEP__test__ESEP__8de5fe0d7b04
['http://toolshed.local:10001', 'emboss_datatypes', 'test', 'dbd4f68bf507']
"""
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
filtering_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
filtering_repository = self._get_repository_by_name_and_owner(
filtering_repository_name, common.test_user_1_name
)
freebayes_repository = self.test_db_util.get_repository_by_name_and_owner(
freebayes_repository = self._get_repository_by_name_and_owner(
freebayes_repository_name, common.test_user_1_name
)
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
bismark_repository = self.test_db_util.get_repository_by_name_and_owner(
bismark_repository_name, common.test_user_1_name
)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
convert_repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
bismark_repository = self._get_repository_by_name_and_owner(bismark_repository_name, common.test_user_1_name)
self.check_repository_dependency(convert_repository, column_repository)
self.check_repository_dependency(column_repository, convert_repository)
self.check_repository_dependency(emboss_repository, bismark_repository)
@@ -304,12 +288,10 @@ class TestRepositoryCircularDependenciesToNLevels(ShedTwillTestCase):
def test_0050_verify_tool_dependencies(self):
"""Check that freebayes and emboss display tool dependencies."""
freebayes_repository = self.test_db_util.get_repository_by_name_and_owner(
freebayes_repository = self._get_repository_by_name_and_owner(
freebayes_repository_name, common.test_user_1_name
)
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
self.display_manage_repository_page(
freebayes_repository,
strings_displayed=["freebayes", "0.9.4_9696d0ce8a9", "samtools", "0.1.18", "Tool dependencies", "package"],
@@ -320,13 +302,11 @@ class TestRepositoryCircularDependenciesToNLevels(ShedTwillTestCase):
def test_0055_verify_repository_metadata(self):
"""Verify that resetting the metadata does not change it."""
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
filtering_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
filtering_repository = self._get_repository_by_name_and_owner(
filtering_repository_name, common.test_user_1_name
)
freebayes_repository = self.test_db_util.get_repository_by_name_and_owner(
freebayes_repository = self._get_repository_by_name_and_owner(
freebayes_repository_name, common.test_user_1_name
)
for repository in [emboss_repository, freebayes_repository, filtering_repository]:
@@ -55,7 +55,6 @@ class TestBismarkRepository(ShedTwillTestCase):
strings_not_displayed=[],
)
valid_revision = self.get_repository_tip(repository)
self.test_db_util.refresh(repository)
tool_guid = f"{self.url.replace('http://', '').rstrip('/')}/repos/user1/bismark_0070/bismark_methylation_extractor/0.7.7.3"
tool_metadata_strings_displayed = [
tool_guid,
@@ -74,17 +74,13 @@ class TestRepositoryCircularDependencies(ShedTwillTestCase):
def test_0020_create_repository_dependencies(self):
"""Upload a repository_dependencies.xml file that specifies the current revision of convert_chars_0080 to the column_maker_0080 repository."""
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
repository_dependencies_path = self.generate_temp_path("test_0080", additional_paths=["convert"])
repository_tuple = (
self.url,
convert_repository.name,
convert_repository.user.username,
convert_repository.owner,
self.get_repository_tip(convert_repository),
)
self.create_repository_dependency(
@@ -93,17 +89,13 @@ class TestRepositoryCircularDependencies(ShedTwillTestCase):
def test_0025_create_dependency_on_filtering(self):
"""Upload a repository_dependencies.xml file that specifies the current revision of filtering to the freebayes_0040 repository."""
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
repository_dependencies_path = self.generate_temp_path("test_0080", additional_paths=["convert"])
repository_tuple = (
self.url,
column_repository.name,
column_repository.user.username,
column_repository.owner,
self.get_repository_tip(column_repository),
)
self.create_repository_dependency(
@@ -112,12 +104,8 @@ class TestRepositoryCircularDependencies(ShedTwillTestCase):
def test_0030_verify_repository_dependencies(self):
"""Verify that each repository can depend on the other without causing an infinite loop."""
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
self.check_repository_dependency(
convert_repository, column_repository, self.get_repository_tip(column_repository)
)
@@ -127,11 +115,7 @@ class TestRepositoryCircularDependencies(ShedTwillTestCase):
def test_0035_verify_repository_metadata(self):
"""Verify that resetting the metadata does not change it."""
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
convert_repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
for repository in [column_repository, convert_repository]:
self.verify_unchanged_repository_metadata(repository)
@@ -154,38 +154,34 @@ class TestRepositoryCircularDependenciesAgain(ShedTwillTestCase):
def test_0035_create_and_upload_dependency_definitions(self):
"""Create and upload repository dependency definitions."""
bwa_color_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_color_repository = self._get_repository_by_name_and_owner(
bwa_color_repository_name, common.test_user_1_name
)
bwa_base_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_base_repository_name, common.test_user_1_name
)
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
filtering_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_base_repository = self._get_repository_by_name_and_owner(bwa_base_repository_name, common.test_user_1_name)
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
filtering_repository = self._get_repository_by_name_and_owner(
filtering_repository_name, common.test_user_1_name
)
freebayes_repository = self.test_db_util.get_repository_by_name_and_owner(
freebayes_repository = self._get_repository_by_name_and_owner(
freebayes_repository_name, common.test_user_1_name
)
dependency_xml_path = self.generate_temp_path("test_0090", additional_paths=["freebayes"])
freebayes_tuple = (
self.url,
freebayes_repository.name,
freebayes_repository.user.username,
freebayes_repository.owner,
self.get_repository_tip(freebayes_repository),
)
emboss_tuple = (
self.url,
emboss_repository.name,
emboss_repository.user.username,
emboss_repository.owner,
self.get_repository_tip(emboss_repository),
)
filtering_tuple = (
self.url,
filtering_repository.name,
filtering_repository.user.username,
filtering_repository.owner,
self.get_repository_tip(filtering_repository),
)
self.create_repository_dependency(
@@ -200,19 +196,15 @@ class TestRepositoryCircularDependenciesAgain(ShedTwillTestCase):
def test_0040_verify_repository_dependencies(self):
"""Verify the generated dependency structure."""
bwa_color_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_color_repository = self._get_repository_by_name_and_owner(
bwa_color_repository_name, common.test_user_1_name
)
bwa_base_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_base_repository_name, common.test_user_1_name
)
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
filtering_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_base_repository = self._get_repository_by_name_and_owner(bwa_base_repository_name, common.test_user_1_name)
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
filtering_repository = self._get_repository_by_name_and_owner(
filtering_repository_name, common.test_user_1_name
)
freebayes_repository = self.test_db_util.get_repository_by_name_and_owner(
freebayes_repository = self._get_repository_by_name_and_owner(
freebayes_repository_name, common.test_user_1_name
)
self.check_repository_dependency(filtering_repository, freebayes_repository)
@@ -89,13 +89,9 @@ class TestComplexRepositoryDependencies(ShedTwillTestCase):
"""Generate and upload a complex repository definition that specifies an invalid tool shed URL."""
dependency_path = self.generate_temp_path("test_0100", additional_paths=["complex", "invalid"])
# The repository named bwa_base_repository_0100 is the dependent repository.
base_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_base_repository_name, common.test_user_1_name
)
base_repository = self._get_repository_by_name_and_owner(bwa_base_repository_name, common.test_user_1_name)
# The repository named package_bwa_0_5_9_0100 is the required repository.
tool_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_package_repository_name, common.test_user_1_name
)
tool_repository = self._get_repository_by_name_and_owner(bwa_package_repository_name, common.test_user_1_name)
url = "http://http://this is not an url!"
name = "package_bwa_0_5_9_0100"
owner = "user1"
@@ -117,13 +113,9 @@ class TestComplexRepositoryDependencies(ShedTwillTestCase):
"""Generate and upload a complex repository definition that specifies an invalid repository name."""
dependency_path = self.generate_temp_path("test_0100", additional_paths=["complex", "invalid"])
# The base_repository named bwa_base_repository_0100 is the dependent repository.
base_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_base_repository_name, common.test_user_1_name
)
base_repository = self._get_repository_by_name_and_owner(bwa_base_repository_name, common.test_user_1_name)
# The repository named package_bwa_0_5_9_0100 is the required repository.
tool_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_package_repository_name, common.test_user_1_name
)
tool_repository = self._get_repository_by_name_and_owner(bwa_package_repository_name, common.test_user_1_name)
url = self.url
name = "invalid_repository!?"
owner = "user1"
@@ -145,13 +137,9 @@ class TestComplexRepositoryDependencies(ShedTwillTestCase):
"""Generate and upload a complex repository definition that specifies an invalid owner."""
dependency_path = self.generate_temp_path("test_0100", additional_paths=["complex", "invalid"])
# The base_repository named bwa_base_repository_0100 is the dependent repository.
base_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_base_repository_name, common.test_user_1_name
)
base_repository = self._get_repository_by_name_and_owner(bwa_base_repository_name, common.test_user_1_name)
# The repository named package_bwa_0_5_9_0100 is the required repository.
tool_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_package_repository_name, common.test_user_1_name
)
tool_repository = self._get_repository_by_name_and_owner(bwa_package_repository_name, common.test_user_1_name)
url = self.url
name = "package_bwa_0_5_9_0100"
owner = "invalid_owner!?"
@@ -172,9 +160,7 @@ class TestComplexRepositoryDependencies(ShedTwillTestCase):
"""Generate and upload a complex repository definition that specifies an invalid changeset revision."""
dependency_path = self.generate_temp_path("test_0100", additional_paths=["complex", "invalid"])
# The base_repository named bwa_base_repository_0100 is the dependent repository.
base_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_base_repository_name, common.test_user_1_name
)
base_repository = self._get_repository_by_name_and_owner(bwa_base_repository_name, common.test_user_1_name)
# The repository named package_bwa_0_5_9_0100 is the required repository.
url = self.url
name = "package_bwa_0_5_9_0100"
@@ -195,13 +181,9 @@ class TestComplexRepositoryDependencies(ShedTwillTestCase):
def test_0035_generate_complex_repository_dependency(self):
"""Generate and upload a valid tool_dependencies.xml file that specifies package_bwa_0_5_9_0100."""
# The base_repository named bwa_base_repository_0100 is the dependent repository.
base_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_base_repository_name, common.test_user_1_name
)
base_repository = self._get_repository_by_name_and_owner(bwa_base_repository_name, common.test_user_1_name)
# The repository named package_bwa_0_5_9_0100 is the required repository.
tool_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_package_repository_name, common.test_user_1_name
)
tool_repository = self._get_repository_by_name_and_owner(bwa_package_repository_name, common.test_user_1_name)
dependency_path = self.generate_temp_path("test_0100", additional_paths=["complex"])
url = self.url
name = "package_bwa_0_5_9_0100"
@@ -224,13 +206,9 @@ class TestComplexRepositoryDependencies(ShedTwillTestCase):
def test_0040_generate_tool_dependency(self):
"""Generate and upload a new tool_dependencies.xml file that specifies an arbitrary file on the filesystem, and verify that bwa_base depends on the new changeset revision."""
# The base_repository named bwa_base_repository_0100 is the dependent repository.
base_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_base_repository_name, common.test_user_1_name
)
base_repository = self._get_repository_by_name_and_owner(bwa_base_repository_name, common.test_user_1_name)
# The repository named package_bwa_0_5_9_0100 is the required repository.
tool_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_package_repository_name, common.test_user_1_name
)
tool_repository = self._get_repository_by_name_and_owner(bwa_package_repository_name, common.test_user_1_name)
previous_changeset = self.get_repository_tip(tool_repository)
old_tool_dependency = self.get_filename(os.path.join("bwa", "complex", "readme", "tool_dependencies.xml"))
new_tool_dependency_path = self.generate_temp_path("test_1100", additional_paths=["tool_dependency"])
@@ -77,15 +77,13 @@ class TestBasicRepositoryDependencies(ShedTwillTestCase):
def test_0025_generate_repository_dependency_with_invalid_url(self):
"""Generate a repository dependency for emboss 5 with an invalid URL."""
dependency_path = self.generate_temp_path("test_0110", additional_paths=["simple"])
column_maker_repository = self.test_db_util.get_repository_by_name_and_owner(
column_maker_repository = self._get_repository_by_name_and_owner(
column_maker_repository_name, common.test_user_1_name
)
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
url = "http://http://this is not an url!"
name = column_maker_repository.name
owner = column_maker_repository.user.username
owner = column_maker_repository.owner
changeset_revision = self.get_repository_tip(column_maker_repository)
strings_displayed = ["Repository dependencies are currently supported only within the same tool shed"]
repository_tuple = (url, name, owner, changeset_revision)
@@ -100,15 +98,11 @@ class TestBasicRepositoryDependencies(ShedTwillTestCase):
def test_0030_generate_repository_dependency_with_invalid_name(self):
"""Generate a repository dependency for emboss 5 with an invalid name."""
dependency_path = self.generate_temp_path("test_0110", additional_paths=["simple"])
repository = self.test_db_util.get_repository_by_name_and_owner(
column_maker_repository_name, common.test_user_1_name
)
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner(column_maker_repository_name, common.test_user_1_name)
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
url = self.url
name = "!?invalid?!"
owner = repository.user.username
owner = repository.owner
changeset_revision = self.get_repository_tip(repository)
strings_displayed = ["because the name is invalid."]
repository_tuple = (url, name, owner, changeset_revision)
@@ -123,12 +117,8 @@ class TestBasicRepositoryDependencies(ShedTwillTestCase):
def test_0035_generate_repository_dependency_with_invalid_owner(self):
"""Generate a repository dependency for emboss 5 with an invalid owner."""
dependency_path = self.generate_temp_path("test_0110", additional_paths=["simple"])
repository = self.test_db_util.get_repository_by_name_and_owner(
column_maker_repository_name, common.test_user_1_name
)
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner(column_maker_repository_name, common.test_user_1_name)
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
url = self.url
name = repository.name
owner = "!?invalid?!"
@@ -146,15 +136,11 @@ class TestBasicRepositoryDependencies(ShedTwillTestCase):
def test_0040_generate_repository_dependency_with_invalid_changeset_revision(self):
"""Generate a repository dependency for emboss 5 with an invalid changeset revision."""
dependency_path = self.generate_temp_path("test_0110", additional_paths=["simple", "invalid"])
repository = self.test_db_util.get_repository_by_name_and_owner(
column_maker_repository_name, common.test_user_1_name
)
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner(column_maker_repository_name, common.test_user_1_name)
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
url = self.url
name = repository.name
owner = repository.user.username
owner = repository.owner
changeset_revision = "!?invalid?!"
strings_displayed = ["because the changeset revision is invalid."]
repository_tuple = (url, name, owner, changeset_revision)
@@ -70,9 +70,7 @@ class TestRepositoryMultipleOwners(ShedTwillTestCase):
Check for appropriate strings, most importantly BlastXml, BlastNucDb, and BlastProtDb,
the datatypes that are defined in datatypes_conf.xml.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(
datatypes_repository_name, common.test_user_2_name
)
repository = self._get_repository_by_name_and_owner(datatypes_repository_name, common.test_user_2_name)
strings_displayed = [
"BlastXml",
"BlastNucDb",
@@ -120,7 +118,7 @@ class TestRepositoryMultipleOwners(ShedTwillTestCase):
We are at step 2a.
Check for appropriate strings, such as tool name, description, and version.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(tool_repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(tool_repository_name, common.test_user_1_name)
strings_displayed = ["blastxml_to_top_descr_0120", "BLAST top hit descriptions", "Make a table from BLAST XML"]
strings_displayed.extend(["0.0.1", "Valid tools"])
self.display_manage_repository_page(repository, strings_displayed=strings_displayed)
@@ -131,17 +129,15 @@ class TestRepositoryMultipleOwners(ShedTwillTestCase):
We are at step 3.
Create a simple repository dependency for blastxml_to_top_descr_0120 that defines a dependency on blast_datatypes_0120.
"""
datatypes_repository = self.test_db_util.get_repository_by_name_and_owner(
datatypes_repository = self._get_repository_by_name_and_owner(
datatypes_repository_name, common.test_user_2_name
)
tool_repository = self.test_db_util.get_repository_by_name_and_owner(
tool_repository_name, common.test_user_1_name
)
tool_repository = self._get_repository_by_name_and_owner(tool_repository_name, common.test_user_1_name)
dependency_xml_path = self.generate_temp_path("test_0120", additional_paths=["dependencies"])
datatypes_tuple = (
self.url,
datatypes_repository.name,
datatypes_repository.user.username,
datatypes_repository.owner,
self.get_repository_tip(datatypes_repository),
)
self.create_repository_dependency(
@@ -154,10 +150,8 @@ class TestRepositoryMultipleOwners(ShedTwillTestCase):
We are at step 3a.
Check the newly created repository dependency to ensure that it was defined and displays correctly.
"""
datatypes_repository = self.test_db_util.get_repository_by_name_and_owner(
datatypes_repository = self._get_repository_by_name_and_owner(
datatypes_repository_name, common.test_user_2_name
)
tool_repository = self.test_db_util.get_repository_by_name_and_owner(
tool_repository_name, common.test_user_1_name
)
tool_repository = self._get_repository_by_name_and_owner(tool_repository_name, common.test_user_1_name)
self.check_repository_dependency(tool_repository, datatypes_repository)
@@ -71,15 +71,15 @@ class TestToolHelpImages(ShedTwillTestCase):
src="/repository/static/images/<id>/count_modes.png"
"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
# Get the repository tip.
changeset_revision = self.get_repository_tip(repository)
self.display_manage_repository_page(repository)
# Generate the image path.
image_path = f'src="/repository/static/images/{self.security.encode_id(repository.id)}/count_modes.png"'
image_path = f'src="/repository/static/images/{repository.id}/count_modes.png"'
# The repository uploaded in this test should only have one metadata revision, with one tool defined, which
# should be the tool that contains a link to the image.
repository_metadata = repository.metadata_revisions[0].metadata
repository_metadata = self._db_repository(repository).metadata_revisions[0].metadata
tool_path = repository_metadata["tools"][0]["tool_config"]
self.load_display_tool_page(
repository, tool_path, changeset_revision, strings_displayed=[image_path], strings_not_displayed=[]
@@ -90,17 +90,13 @@ class TestSimplePriorInstallation(ShedTwillTestCase):
Column maker repository dependency:
<repository toolshed="self.url" name="convert_chars" owner="test" changeset_revision="<tip>" prior_installation_required="True" />
"""
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
convert_repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
dependency_xml_path = self.generate_temp_path("test_0150", additional_paths=["column"])
convert_tuple = (
self.url,
convert_repository.name,
convert_repository.user.username,
convert_repository.owner,
self.get_repository_tip(convert_repository),
)
self.create_repository_dependency(
@@ -112,12 +108,8 @@ class TestSimplePriorInstallation(ShedTwillTestCase):
def test_0020_verify_repository_dependency(self):
"""Verify that the previously generated repositiory dependency displays correctly."""
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
convert_repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
self.check_repository_dependency(
repository=column_repository,
depends_on_repository=convert_repository,
@@ -111,22 +111,16 @@ class TestSimplePriorInstallation(ShedTwillTestCase):
Each of the three repositories should depend on the other two, to make this as circular as possible.
"""
filter_repository = self.test_db_util.get_repository_by_name_and_owner(
filter_repository_name, common.test_user_1_name
)
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
filter_repository = self._get_repository_by_name_and_owner(filter_repository_name, common.test_user_1_name)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
convert_repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
dependency_xml_path = self.generate_temp_path("test_0160", additional_paths=["column"])
filter_revision = self.get_repository_tip(filter_repository)
column_revision = self.get_repository_tip(column_repository)
convert_revision = self.get_repository_tip(convert_repository)
column_tuple = (self.url, column_repository.name, column_repository.user.username, column_revision)
convert_tuple = (self.url, convert_repository.name, convert_repository.user.username, convert_revision)
filter_tuple = (self.url, filter_repository.name, filter_repository.user.username, filter_revision)
column_tuple = (self.url, column_repository.name, column_repository.owner, column_revision)
convert_tuple = (self.url, convert_repository.name, convert_repository.owner, convert_revision)
filter_tuple = (self.url, filter_repository.name, filter_repository.owner, filter_revision)
self.create_repository_dependency(
repository=column_repository,
repository_tuples=[convert_tuple, filter_tuple],
@@ -148,15 +142,9 @@ class TestSimplePriorInstallation(ShedTwillTestCase):
def test_0025_verify_repository_dependency(self):
"""Verify that the previously generated repositiory dependency displays correctly."""
filter_repository = self.test_db_util.get_repository_by_name_and_owner(
filter_repository_name, common.test_user_1_name
)
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
filter_repository = self._get_repository_by_name_and_owner(filter_repository_name, common.test_user_1_name)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
convert_repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
self.check_repository_dependency(
repository=column_repository,
depends_on_repository=convert_repository,
@@ -99,10 +99,8 @@ class TestComplexPriorInstallation(ShedTwillTestCase):
set to True. When matplotlib is selected for installation, the result should be that numpy is compiled
and installed first.
"""
numpy_repository = self.test_db_util.get_repository_by_name_and_owner(
numpy_repository_name, common.test_user_1_name
)
matplotlib_repository = self.test_db_util.get_repository_by_name_and_owner(
numpy_repository = self._get_repository_by_name_and_owner(numpy_repository_name, common.test_user_1_name)
matplotlib_repository = self._get_repository_by_name_and_owner(
matplotlib_repository_name, common.test_user_1_name
)
# Generate the new dependency XML. Normally, the create_repository_dependency method would be used for this, but
@@ -114,7 +112,7 @@ class TestComplexPriorInstallation(ShedTwillTestCase):
new_xml += " </package>\n"
url = self.url
name = numpy_repository.name
owner = numpy_repository.user.username
owner = numpy_repository.owner
changeset_revision = self.get_repository_tip(numpy_repository)
processed_xml = new_xml % (url, name, owner, changeset_revision)
original_xml = open(self.get_filename("package_matplotlib/tool_dependencies.xml")).read()
@@ -142,10 +140,8 @@ class TestComplexPriorInstallation(ShedTwillTestCase):
'Inherited' in this case means that matplotlib should show a package tool dependency on numpy version 1.7, and a repository
dependency on the latest revision of package_numpy_1_7_0170.
"""
numpy_repository = self.test_db_util.get_repository_by_name_and_owner(
numpy_repository_name, common.test_user_1_name
)
matplotlib_repository = self.test_db_util.get_repository_by_name_and_owner(
numpy_repository = self._get_repository_by_name_and_owner(numpy_repository_name, common.test_user_1_name)
matplotlib_repository = self._get_repository_by_name_and_owner(
matplotlib_repository_name, common.test_user_1_name
)
changeset_revision = self.get_repository_tip(numpy_repository)
@@ -335,35 +335,29 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
"""Create the dependency structure for test 0030."""
global running_standalone
if running_standalone:
column_maker_repository = self.test_db_util.get_repository_by_name_and_owner(
column_maker_repository = self._get_repository_by_name_and_owner(
"column_maker_0030", common.test_user_1_name
)
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
"emboss_0030", common.test_user_1_name
)
emboss_5_repository = self.test_db_util.get_repository_by_name_and_owner(
"emboss_5_0030", common.test_user_1_name
)
emboss_6_repository = self.test_db_util.get_repository_by_name_and_owner(
"emboss_6_0030", common.test_user_1_name
)
emboss_repository = self._get_repository_by_name_and_owner("emboss_0030", common.test_user_1_name)
emboss_5_repository = self._get_repository_by_name_and_owner("emboss_5_0030", common.test_user_1_name)
emboss_6_repository = self._get_repository_by_name_and_owner("emboss_6_0030", common.test_user_1_name)
repository_dependencies_path = self.generate_temp_path("test_0330", additional_paths=["emboss"])
column_maker_tuple = (
self.url,
column_maker_repository.name,
column_maker_repository.user.username,
column_maker_repository.owner,
self.get_repository_tip(column_maker_repository),
)
emboss_5_tuple = (
self.url,
emboss_5_repository.name,
emboss_5_repository.user.username,
emboss_5_repository.owner,
self.get_repository_tip(emboss_5_repository),
)
emboss_6_tuple = (
self.url,
emboss_6_repository.name,
emboss_6_repository.user.username,
emboss_6_repository.owner,
self.get_repository_tip(emboss_6_repository),
)
self.create_repository_dependency(
@@ -447,23 +441,19 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
"""Create the dependency structure for test 0040."""
global running_standalone
if running_standalone:
freebayes_repository = self.test_db_util.get_repository_by_name_and_owner(
"freebayes_0040", common.test_user_1_name
)
filtering_repository = self.test_db_util.get_repository_by_name_and_owner(
"filtering_0040", common.test_user_1_name
)
freebayes_repository = self._get_repository_by_name_and_owner("freebayes_0040", common.test_user_1_name)
filtering_repository = self._get_repository_by_name_and_owner("filtering_0040", common.test_user_1_name)
repository_dependencies_path = self.generate_temp_path("test_0340", additional_paths=["dependencies"])
freebayes_tuple = (
self.url,
freebayes_repository.name,
freebayes_repository.user.username,
freebayes_repository.owner,
self.get_repository_tip(freebayes_repository),
)
filtering_tuple = (
self.url,
filtering_repository.name,
filtering_repository.user.username,
filtering_repository.owner,
self.get_repository_tip(filtering_repository),
)
self.create_repository_dependency(
@@ -647,22 +637,18 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
global running_standalone
if running_standalone:
self.login(email=common.test_user_1_email, username=common.test_user_1_name)
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
convert_repository = self._get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
filtering_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
filtering_repository = self._get_repository_by_name_and_owner(
filtering_repository_name, common.test_user_1_name
)
freebayes_repository = self.test_db_util.get_repository_by_name_and_owner(
freebayes_repository = self._get_repository_by_name_and_owner(
freebayes_repository_name, common.test_user_1_name
)
bismark_repository = self.test_db_util.get_repository_by_name_and_owner(
bismark_repository = self._get_repository_by_name_and_owner(
bismark_repository_name, common.test_user_1_name
)
dependency_xml_path = self.generate_temp_path("test_0050", additional_paths=["freebayes"])
@@ -675,31 +661,31 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
column_tuple = (
self.url,
column_repository.name,
column_repository.user.username,
column_repository.owner,
self.get_repository_tip(column_repository),
)
convert_tuple = (
self.url,
convert_repository.name,
convert_repository.user.username,
convert_repository.owner,
self.get_repository_tip(convert_repository),
)
freebayes_tuple = (
self.url,
freebayes_repository.name,
freebayes_repository.user.username,
freebayes_repository.owner,
self.get_repository_tip(freebayes_repository),
)
emboss_tuple = (
self.url,
emboss_repository.name,
emboss_repository.user.username,
emboss_repository.owner,
self.get_repository_tip(emboss_repository),
)
bismark_tuple = (
self.url,
bismark_repository.name,
bismark_repository.user.username,
bismark_repository.owner,
self.get_repository_tip(bismark_repository),
)
self.create_repository_dependency(
@@ -728,12 +714,12 @@ class TestResetAllRepositoryMetadata(ShedTwillTestCase):
repositories = self.test_db_util.get_all_repositories()
for repository in repositories:
old_metadata[self.security.encode_id(repository.id)] = dict()
for metadata in self.get_repository_metadata(repository):
for metadata in self.get_repository_metadata_for_db_object(repository):
old_metadata[self.security.encode_id(repository.id)][metadata.changeset_revision] = metadata.metadata
self.reset_metadata_on_selected_repositories(list(old_metadata.keys()))
for repository in repositories:
new_metadata[self.security.encode_id(repository.id)] = dict()
for metadata in self.get_repository_metadata(repository):
for metadata in self.get_repository_metadata_for_db_object(repository):
new_metadata[self.security.encode_id(repository.id)][metadata.changeset_revision] = metadata.metadata
if (
old_metadata[self.security.encode_id(repository.id)]
@@ -87,7 +87,7 @@ class TestHgWebFeatures(ShedTwillTestCase):
test-data/filter1_test3.sam
test-data/filter1_test4.bed
"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
clone_path = self.generate_temp_path("test_0310", additional_paths=["filtering_0310", "user2"])
self.clone_repository(repository, clone_path)
files_in_repository = os.listdir(clone_path)
@@ -80,7 +80,7 @@ class TestRepositoryCitableURLs(ShedTwillTestCase):
Add valid change set revision 1.
The repository should now contain two changeset revisions, 0:<revision hash> and 1:<revision hash>.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.upload_file(
repository,
filename="readme.txt",
@@ -124,10 +124,10 @@ class TestRepositoryCitableURLs(ShedTwillTestCase):
Visit the following url and check for strings: ``<tool shed base url>/view/user1/filtering_0420`` .
The resulting page should contain change set revision 1
"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
test_user_1 = self.test_db_util.get_user(common.test_user_1_email)
encoded_user_id = self.security.encode_id(test_user_1.id)
encoded_repository_id = self.security.encode_id(repository.id)
encoded_repository_id = repository.id
# Since twill does not load the contents of an iframe, we need to check that the iframe has been generated correctly,
# then directly load the url that the iframe should be loading and check for the expected strings.
# The iframe should point to /repository/bview_repository?id=<encoded repository ID>
@@ -154,10 +154,10 @@ class TestRepositoryCitableURLs(ShedTwillTestCase):
The resulting page should not contain change set revision 1, but should contain change set revision 0.
"""
global first_changeset_hash
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
test_user_1 = self.test_db_util.get_user(common.test_user_1_email)
encoded_user_id = self.security.encode_id(test_user_1.id)
encoded_repository_id = self.security.encode_id(repository.id)
encoded_repository_id = repository.id
# Since twill does not load the contents of an iframe, we need to check that the iframe has been generated correctly,
# then directly load the url that the iframe should be loading and check for the expected strings.
# The iframe should point to /repository/view_repository?id=<encoded repository ID>
@@ -184,10 +184,10 @@ class TestRepositoryCitableURLs(ShedTwillTestCase):
def test_0030_load_sharable_url_with_invalid_changeset_revision(self):
"""Load a citable url with an invalid changeset revision specified."""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
test_user_1 = self.test_db_util.get_user(common.test_user_1_email)
encoded_user_id = self.security.encode_id(test_user_1.id)
encoded_repository_id = self.security.encode_id(repository.id)
encoded_repository_id = repository.id
invalid_changeset_hash = "invalid"
# Since twill does not load the contents of an iframe, we need to check that the iframe has been generated correctly,
# then directly load the url that the iframe should be loading and check for the expected strings.
@@ -103,7 +103,7 @@ class TestToolShedBrowseUtilities(ShedTwillTestCase):
We are at step 3.
Verify the existence of emboss tools in the browse tools page.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
changeset_revision = self.get_repository_tip(repository)
strings_displayed = ["EMBOSS", "antigenic1", "5.0.0", changeset_revision, "user1", "emboss_0430"]
self.browse_tools(strings_displayed=strings_displayed)
@@ -114,7 +114,7 @@ class TestToolShedBrowseUtilities(ShedTwillTestCase):
We are at step 4.
Verify that the browse tool dependencies page shows the correct dependencies defined for freebayes_0430.
"""
freebayes_repository = self.test_db_util.get_repository_by_name_and_owner(
freebayes_repository = self._get_repository_by_name_and_owner(
freebayes_repository_name, common.test_user_1_name
)
freebayes_changeset_revision = self.get_repository_tip(freebayes_repository)
@@ -1,3 +1,4 @@
from tool_shed_client.schema import Repository
from ..base.twilltestcase import (
common,
ShedTwillTestCase,
@@ -128,17 +129,13 @@ class TestDeletedDependencies(ShedTwillTestCase):
We are at simple repository dependencies, step 3 - Add a valid simple repository_dependencies.xml to
convert_chars_0440 that points to the installable revision of column_maker_0440.
"""
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
dependency_xml_path = self.generate_temp_path("test_0440", additional_paths=["dependencies"])
column_tuple = (
self.url,
column_repository.name,
column_repository.user.username,
column_repository.owner,
self.get_repository_tip(column_repository),
)
# After this, convert_chars_0440 should depend on column_maker_0440.
@@ -156,18 +153,16 @@ class TestDeletedDependencies(ShedTwillTestCase):
We are at simple repository dependencies, step 4 - Make sure the installable revision of convert_chars_0440 is now
revision 1 (the tip) instead of revision 0.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
tip = self.get_repository_tip(repository)
metadata_record = self.get_repository_metadata_by_changeset_revision(repository, tip)
metadata_record = self._get_repository_metadata_by_changeset_revision(repository, tip)
# Make sure that the new tip is now downloadable, and that there are no other downloadable revisions.
assert metadata_record.downloadable, "Tip is not downloadable."
assert (
len(repository.downloadable_revisions) == 1
len(self._db_repository(repository).downloadable_revisions) == 1
), "Repository %s has %d downloadable revisions, expected 1." % (
repository.name,
len(repository.downloadable_revisions),
len(self._db_repository(repository).downloadable_revisions),
)
def test_0025_delete_repository_dependency(self):
@@ -176,33 +171,29 @@ class TestDeletedDependencies(ShedTwillTestCase):
We are at simple repository dependencies, steps 5 and 6 - Delete repository_dependencies.xml from convert_chars_0440.
Make sure convert_chars_0440 now has two installable revisions: 1 and 2
"""
repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
# Record the current tip, so we can verify that it's still a downloadable revision after repository_dependencies.xml
# is deleted and a new downloadable revision is created.
old_changeset_revision = self.get_repository_tip(repository)
self.delete_files_from_repository(repository, filenames=["repository_dependencies.xml"])
new_changeset_revision = self.get_repository_tip(repository)
# Check that the old changeset revision is still downloadable.
metadata_record = self.get_repository_metadata_by_changeset_revision(repository, old_changeset_revision)
metadata_record = self._get_repository_metadata_by_changeset_revision(repository, old_changeset_revision)
assert metadata_record.downloadable, (
"The revision of %s that contains repository_dependencies.xml is no longer downloadable." % repository.name
)
# Check that the new tip is also downloadable.
metadata_record = self.get_repository_metadata_by_changeset_revision(repository, new_changeset_revision)
metadata_record = self._get_repository_metadata_by_changeset_revision(repository, new_changeset_revision)
assert metadata_record.downloadable, (
"The revision of %s that does not contain repository_dependencies.xml is not downloadable."
% repository.name
)
# Explicitly reload the repository instance from the database, to avoid potential caching issues.
self.test_db_util.refresh(repository)
# Verify that there are only two downloadable revisions.
assert (
len(repository.downloadable_revisions) == 2
len(self._db_repository(repository).downloadable_revisions) == 2
), "Repository %s has %d downloadable revisions, expected 2." % (
repository.name,
len(repository.downloadable_revisions),
len(self._db_repository(repository).downloadable_revisions),
)
def test_0030_create_bwa_package_repository(self):
@@ -269,15 +260,13 @@ class TestDeletedDependencies(ShedTwillTestCase):
We are at complex repository dependencies, step 3 - Add a valid complex repository dependency tool_dependencies.xml to
bwa_base_0440 that points to the installable revision 0 of bwa_package_0440.
"""
bwa_package_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_package_repository = self._get_repository_by_name_and_owner(
bwa_package_repository_name, common.test_user_1_name
)
bwa_base_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_base_repository_name, common.test_user_1_name
)
bwa_base_repository = self._get_repository_by_name_and_owner(bwa_base_repository_name, common.test_user_1_name)
dependency_path = self.generate_temp_path("test_0440", additional_paths=["complex"])
changeset_revision = self.get_repository_tip(bwa_package_repository)
bwa_tuple = (self.url, bwa_package_repository.name, bwa_package_repository.user.username, changeset_revision)
bwa_tuple = (self.url, bwa_package_repository.name, bwa_package_repository.owner, changeset_revision)
self.create_repository_dependency(
repository=bwa_base_repository,
repository_tuples=[bwa_tuple],
@@ -294,18 +283,16 @@ class TestDeletedDependencies(ShedTwillTestCase):
We are at complex repository dependencies, step 4 - Make sure that bwa_base_0440 installable revision is now revision 1
instead of revision 0.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_base_repository_name, common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner(bwa_base_repository_name, common.test_user_1_name)
tip = self.get_repository_tip(repository)
metadata_record = self.get_repository_metadata_by_changeset_revision(repository, tip)
metadata_record = self._get_repository_metadata_by_changeset_revision(repository, tip)
# Make sure that the new tip is now downloadable, and that there are no other downloadable revisions.
assert metadata_record.downloadable, "Tip is not downloadable."
assert (
len(repository.downloadable_revisions) == 1
len(self._db_repository(repository).downloadable_revisions) == 1
), "Repository %s has %d downloadable revisions, expected 1." % (
repository.name,
len(repository.downloadable_revisions),
len(self._db_repository(repository).downloadable_revisions),
)
def test_0050_delete_complex_repository_dependency(self):
@@ -314,30 +301,28 @@ class TestDeletedDependencies(ShedTwillTestCase):
We are at complex repository dependencies, step 5 - Delete tool_dependencies.xml from bwa_base_0440,
and make sure bwa_base_0440 now has two installable revisions: 1 and 2
"""
repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_base_repository_name, common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner(bwa_base_repository_name, common.test_user_1_name)
# Record the current tip, so we can verify that it's still a downloadable revision after tool_dependencies.xml
# is deleted and a new downloadable revision is created.
old_changeset_revision = self.get_repository_tip(repository)
self.delete_files_from_repository(repository, filenames=["tool_dependencies.xml"])
new_changeset_revision = self.get_repository_tip(repository)
# Check that the old changeset revision is still downloadable.
metadata_record = self.get_repository_metadata_by_changeset_revision(repository, old_changeset_revision)
metadata_record = self._get_repository_metadata_by_changeset_revision(repository, old_changeset_revision)
assert metadata_record.downloadable, (
"The revision of %s that contains tool_dependencies.xml is no longer downloadable." % repository.name
)
# Check that the new tip is also downloadable.
metadata_record = self.get_repository_metadata_by_changeset_revision(repository, new_changeset_revision)
metadata_record = self._get_repository_metadata_by_changeset_revision(repository, new_changeset_revision)
assert metadata_record.downloadable, (
"The revision of %s that does not contain tool_dependencies.xml is not downloadable." % repository.name
)
# Verify that there are only two downloadable revisions.
assert (
len(repository.downloadable_revisions) == 2
len(self._db_repository(repository).downloadable_revisions) == 2
), "Repository %s has %d downloadable revisions, expected 2." % (
repository.name,
len(repository.downloadable_revisions),
len(self._db_repository(repository).downloadable_revisions),
)
def test_0055_create_bwa_tool_dependency_repository(self):
@@ -375,7 +360,7 @@ class TestDeletedDependencies(ShedTwillTestCase):
We are at tool dependencies, step 2 - Delete tool_dependencies.xml from bwa_tool_dependency_0440.
Make sure bwa_tool_dependency_0440 still has a downloadable changeset revision at the old tip.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(
repository = self._get_repository_by_name_and_owner(
bwa_tool_dependency_repository_name, common.test_user_1_name
)
# Record the current tip, so we can verify that it's still a downloadable revision after repository_dependencies.xml
@@ -383,23 +368,24 @@ class TestDeletedDependencies(ShedTwillTestCase):
old_changeset_revision = self.get_repository_tip(repository)
self.delete_files_from_repository(repository, filenames=["tool_dependencies.xml"])
new_changeset_revision = self.get_repository_tip(repository)
assert old_changeset_revision != new_changeset_revision
# Check that the old changeset revision is still downloadable.
metadata_record = self.get_repository_metadata_by_changeset_revision(repository, old_changeset_revision)
metadata_record = self._get_repository_metadata_by_changeset_revision(repository, old_changeset_revision)
assert metadata_record.downloadable, (
"The revision of %s that contains tool_dependencies.xml is no longer downloadable." % repository.name
)
# Check that the new tip does not have a metadata revision.
metadata_record = self.get_repository_metadata_by_changeset_revision(repository, new_changeset_revision)
metadata_record = self._get_repository_metadata_by_changeset_revision(repository, new_changeset_revision)
# If a changeset revision does not have metadata, the above method will return None.
assert (
metadata_record is None
), f"The tip revision of {repository.name} should not have metadata, but metadata was found."
# Verify that the new changeset revision is not downloadable.
assert (
len(repository.downloadable_revisions) == 1
len(self._db_repository(repository).downloadable_revisions) == 1
), "Repository %s has %d downloadable revisions, expected 1." % (
repository.name,
len(repository.downloadable_revisions),
len(self._db_repository(repository).downloadable_revisions),
)
def test_0065_reupload_bwa_tool_dependency_definition(self):
@@ -408,7 +394,7 @@ class TestDeletedDependencies(ShedTwillTestCase):
We are at tool dependencies, step 3 - Add the same tool_dependencies.xml file to bwa_tool_dependency_0440, and make sure
that bwa_tool_dependency_0440 still has a single installable revision 0.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(
repository = self._get_repository_by_name_and_owner(
bwa_tool_dependency_repository_name, common.test_user_1_name
)
# Record the current tip, so we can verify that it's still not a downloadable revision after tool_dependencies.xml
@@ -427,20 +413,23 @@ class TestDeletedDependencies(ShedTwillTestCase):
)
new_changeset_revision = self.get_repository_tip(repository)
# Check that the old changeset revision is still downloadable.
metadata_record = self.get_repository_metadata_by_changeset_revision(repository, old_changeset_revision)
metadata_record = self._get_repository_metadata_by_changeset_revision(repository, old_changeset_revision)
assert metadata_record is None, (
"The revision of %s that does not contain tool_dependencies.xml should not be downloadable, but is."
% repository.name
)
# Check that the new tip is also downloadable.
metadata_record = self.get_repository_metadata_by_changeset_revision(repository, new_changeset_revision)
metadata_record = self._get_repository_metadata_by_changeset_revision(repository, new_changeset_revision)
assert metadata_record.downloadable, (
"The revision of %s that contains tool_dependencies.xml is not downloadable." % repository.name
)
# Verify that there are only two downloadable revisions.
assert (
len(repository.downloadable_revisions) == 1
len(self._db_repository(repository).downloadable_revisions) == 1
), "Repository %s has %d downloadable revisions, expected 1." % (
repository.name,
len(repository.downloadable_revisions),
len(self._db_repository(repository).downloadable_revisions),
)
def _get_repository_metadata_by_changeset_revision(self, repository: Repository, changeset: str):
return self.get_repository_metadata_by_changeset_revision(self._db_repository(repository).id, changeset)
@@ -132,12 +132,8 @@ class TestAutomaticDependencyRevision(ShedTwillTestCase):
This is step 4 - Upload an uncompressed tool_dependencies.xml to complex_dependency_test_1_0460 that specifies
a complex repository dependency on package_bwa_0_5_9_0460 without a specified changeset revision or tool shed url.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(
"complex_dependency_test_1_0460", common.test_user_1_name
)
package_repository = self.test_db_util.get_repository_by_name_and_owner(
"package_bwa_0_5_9_0460", common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner("complex_dependency_test_1_0460", common.test_user_1_name)
package_repository = self._get_repository_by_name_and_owner("package_bwa_0_5_9_0460", common.test_user_1_name)
self.upload_file(
repository,
filename="0460_files/tool_dependencies.xml",
@@ -162,12 +158,8 @@ class TestAutomaticDependencyRevision(ShedTwillTestCase):
This is step 5 - Upload an tarball with tool_dependencies.xml to complex_dependency_test_2_0460 that specifies
a complex repository dependency on package_bwa_0_5_9_0460 without a specified changeset revision or tool shed url.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(
"complex_dependency_test_2_0460", common.test_user_1_name
)
package_repository = self.test_db_util.get_repository_by_name_and_owner(
"package_bwa_0_5_9_0460", common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner("complex_dependency_test_2_0460", common.test_user_1_name)
package_repository = self._get_repository_by_name_and_owner("package_bwa_0_5_9_0460", common.test_user_1_name)
self.upload_file(
repository,
filename="0460_files/tool_dependencies_in_root.tar",
@@ -192,12 +184,8 @@ class TestAutomaticDependencyRevision(ShedTwillTestCase):
This is step 6 - Upload an tarball with tool_dependencies.xml in a subfolder to complex_dependency_test_3_0460 that
specifies a complex repository dependency on package_bwa_0_5_9_0460 without a specified changeset revision or tool shed url.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(
"complex_dependency_test_3_0460", common.test_user_1_name
)
package_repository = self.test_db_util.get_repository_by_name_and_owner(
"package_bwa_0_5_9_0460", common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner("complex_dependency_test_3_0460", common.test_user_1_name)
package_repository = self._get_repository_by_name_and_owner("package_bwa_0_5_9_0460", common.test_user_1_name)
self.upload_file(
repository,
filename="0460_files/tool_dependencies_in_subfolder.tar",
@@ -267,12 +255,8 @@ class TestAutomaticDependencyRevision(ShedTwillTestCase):
This is step 8 - Upload to complex_dependency_test_4_0460 using the url hg://<tool shed url>/repos/user1/hg_tool_dependency_0460.
"""
url = f"hg://{self.host}:{self.port}/repos/user1/hg_tool_dependency_0460"
repository = self.test_db_util.get_repository_by_name_and_owner(
"complex_dependency_test_4_0460", common.test_user_1_name
)
package_repository = self.test_db_util.get_repository_by_name_and_owner(
"package_bwa_0_5_9_0460", common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner("complex_dependency_test_4_0460", common.test_user_1_name)
package_repository = self._get_repository_by_name_and_owner("package_bwa_0_5_9_0460", common.test_user_1_name)
self.upload_url(
repository,
url=url,
@@ -297,12 +281,8 @@ class TestAutomaticDependencyRevision(ShedTwillTestCase):
This is step 9 - Upload to complex_dependency_test_5_0460 using the url hg://<tool shed url>/repos/user1/hg_subfolder_tool_dependency_0460.
"""
url = f"hg://{self.host}:{self.port}/repos/user1/hg_subfolder_tool_dependency_0460"
repository = self.test_db_util.get_repository_by_name_and_owner(
"complex_dependency_test_5_0460", common.test_user_1_name
)
package_repository = self.test_db_util.get_repository_by_name_and_owner(
"package_bwa_0_5_9_0460", common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner("complex_dependency_test_5_0460", common.test_user_1_name)
package_repository = self._get_repository_by_name_and_owner("package_bwa_0_5_9_0460", common.test_user_1_name)
self.upload_url(
repository,
url=url,
@@ -354,12 +334,10 @@ class TestAutomaticDependencyRevision(ShedTwillTestCase):
This is step 11 - Upload an uncompressed repository_dependencies.xml to repository_dependency_test_1_0460 that specifies a
repository dependency on emboss_datatypes_0460 without a specified changeset revision or tool shed url.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(
repository = self._get_repository_by_name_and_owner(
"repository_dependency_test_1_0460", common.test_user_1_name
)
package_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_repository_name, common.test_user_1_name
)
package_repository = self._get_repository_by_name_and_owner(bwa_repository_name, common.test_user_1_name)
self.upload_file(
repository,
filename="0460_files/repository_dependencies.xml",
@@ -383,12 +361,10 @@ class TestAutomaticDependencyRevision(ShedTwillTestCase):
This is step 12 - Upload a tarball to repository_dependency_test_2_0460 with a repository_dependencies.xml in the root of the tarball.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(
repository = self._get_repository_by_name_and_owner(
"repository_dependency_test_2_0460", common.test_user_1_name
)
package_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_repository_name, common.test_user_1_name
)
package_repository = self._get_repository_by_name_and_owner(bwa_repository_name, common.test_user_1_name)
self.upload_file(
repository,
filename="0460_files/in_root/repository_dependencies_in_root.tar",
@@ -413,12 +389,10 @@ class TestAutomaticDependencyRevision(ShedTwillTestCase):
This is step 13 - Upload a tarball to repository_dependency_test_3_0460 with a repository_dependencies.xml in a
subfolder within the tarball.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(
repository = self._get_repository_by_name_and_owner(
"repository_dependency_test_3_0460", common.test_user_1_name
)
package_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_repository_name, common.test_user_1_name
)
package_repository = self._get_repository_by_name_and_owner(bwa_repository_name, common.test_user_1_name)
self.upload_file(
repository,
filename="0460_files/in_subfolder/repository_dependencies_in_subfolder.tar",
@@ -493,12 +467,10 @@ class TestAutomaticDependencyRevision(ShedTwillTestCase):
hg://<tool shed url>/repos/user1/hg_repository_dependency_0460.
"""
url = f"hg://{self.host}:{self.port}/repos/user1/hg_repository_dependency_0460"
repository = self.test_db_util.get_repository_by_name_and_owner(
repository = self._get_repository_by_name_and_owner(
"repository_dependency_test_4_0460", common.test_user_1_name
)
package_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_repository_name, common.test_user_1_name
)
package_repository = self._get_repository_by_name_and_owner(bwa_repository_name, common.test_user_1_name)
self.upload_url(
repository,
url=url,
@@ -524,12 +496,10 @@ class TestAutomaticDependencyRevision(ShedTwillTestCase):
hg://<tool shed url>/repos/user1/hg_subfolder_repository_dependency_0460.
"""
url = f"hg://{self.host}:{self.port}/repos/user1/hg_subfolder_repository_dependency_0460"
repository = self.test_db_util.get_repository_by_name_and_owner(
repository = self._get_repository_by_name_and_owner(
"repository_dependency_test_5_0460", common.test_user_1_name
)
package_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_repository_name, common.test_user_1_name
)
package_repository = self._get_repository_by_name_and_owner(bwa_repository_name, common.test_user_1_name)
self.upload_url(
repository,
url=url,
@@ -170,7 +170,7 @@ class TestEnvironmentInheritance(ShedTwillTestCase):
This is step 4 - Add a comment to the tool_dependencies.xml file to be uploaded to the package_x11_client_1_5_prot_7_0 repository, creating
a new installable changeset revision at the repository tip.
"""
package_x11_repository = self.test_db_util.get_repository_by_name_and_owner(
package_x11_repository = self._get_repository_by_name_and_owner(
package_libx11_repository_name, common.test_user_1_name
)
# Upload the tool dependency definition to the package_x11_client_1_5_proto_7_0_0470 repository.
@@ -185,9 +185,10 @@ class TestEnvironmentInheritance(ShedTwillTestCase):
strings_displayed=[],
strings_not_displayed=[],
)
assert len(package_x11_repository.metadata_revisions) == 1, (
count = self._get_metadata_revision_count(package_x11_repository)
assert count == 1, (
"package_x11_client_1_5_proto_7_0_0470 has incorrect number of metadata revisions, expected 1 but found %d"
% len(package_x11_repository.metadata_revisions)
% count
)
def test_0025_upload_updated_tool_dependency_to_package_emboss(self):
@@ -197,7 +198,7 @@ class TestEnvironmentInheritance(ShedTwillTestCase):
the change set_revision attribute so that it gets automatically populated when uploaded. After uploading the file,
the package_emboss_5_0_0 repository should have 2 installable changeset revisions.
"""
package_emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
package_emboss_repository = self._get_repository_by_name_and_owner(
package_emboss_repository_name, common.test_user_1_name
)
# Populate package_emboss_5_0_0_0470 with updated tool dependency definition.
@@ -212,10 +213,9 @@ class TestEnvironmentInheritance(ShedTwillTestCase):
strings_displayed=[],
strings_not_displayed=[],
)
assert (
len(package_emboss_repository.metadata_revisions) == 2
), "package_emboss_5_0_0_0470 has incorrect number of metadata revisions, expected 2 but found %d" % len(
package_emboss_repository.metadata_revisions
count = self._get_metadata_revision_count(package_emboss_repository)
assert count == 2, (
"package_emboss_5_0_0_0470 has incorrect number of metadata revisions, expected 2 but found %d" % count
)
def test_0030_upload_updated_tool_dependency_to_emboss_5_repository(self):
@@ -225,9 +225,7 @@ class TestEnvironmentInheritance(ShedTwillTestCase):
changeset_revision attribute so that it gets automatically populated when uploaded. After uploading the file,
the emboss5 repository should have 2 installable metadata revisions.
"""
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
# Populate package_emboss_5_0_0_0470 with updated tool dependency definition.
self.upload_file(
emboss_repository,
@@ -240,16 +238,15 @@ class TestEnvironmentInheritance(ShedTwillTestCase):
strings_displayed=[],
strings_not_displayed=[],
)
assert (
len(emboss_repository.metadata_revisions) == 2
), "package_emboss_5_0_0_0470 has incorrect number of metadata revisions"
count = self._get_metadata_revision_count(emboss_repository)
assert count == 2, "package_emboss_5_0_0_0470 has incorrect number of metadata revisions"
def test_0035_modify_package_x11_repository_type(self):
"""Set package_x11_client_1_5_proto_7_0 type tool_dependency_definition.
This is step 7 - Change the repository type of the package_x11_client_1_5_proto_7_0 repository to be tool_dependency_definition.
"""
package_x11_repository = self.test_db_util.get_repository_by_name_and_owner(
package_x11_repository = self._get_repository_by_name_and_owner(
package_libx11_repository_name, common.test_user_1_name
)
self.edit_repository_information(package_x11_repository, repository_type="tool_dependency_definition")
@@ -259,7 +256,7 @@ class TestEnvironmentInheritance(ShedTwillTestCase):
This is step 8 - Change the repository type of the package_emboss_5_0_0 repository to be tool_dependency_definition.
"""
package_emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
package_emboss_repository = self._get_repository_by_name_and_owner(
package_emboss_repository_name, common.test_user_1_name
)
self.edit_repository_information(package_emboss_repository, repository_type="tool_dependency_definition")
@@ -270,23 +267,19 @@ class TestEnvironmentInheritance(ShedTwillTestCase):
This is step 9 - Reset metadata on the package_emboss_5_0_0 and package_x11_client_1_5_proto_7_0 repositories. They should
now have only their tip as the installable revision.
"""
package_emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
package_emboss_repository = self._get_repository_by_name_and_owner(
package_emboss_repository_name, common.test_user_1_name
)
package_x11_repository = self.test_db_util.get_repository_by_name_and_owner(
package_x11_repository = self._get_repository_by_name_and_owner(
package_libx11_repository_name, common.test_user_1_name
)
self.reset_repository_metadata(package_emboss_repository)
self.reset_repository_metadata(package_x11_repository)
assert (
len(package_emboss_repository.metadata_revisions) == 1
), "Repository package_emboss_5_0_0 has %d installable revisions, expected 1." % len(
package_emboss_repository.metadata_revisions
)
assert (
len(package_x11_repository.metadata_revisions) == 1
), "Repository package_x11_client_1_5_proto_7_0 has %d installable revisions, expected 1." % len(
package_x11_repository.metadata_revisions
count = self._get_metadata_revision_count(package_emboss_repository)
assert count == 1, "Repository package_emboss_5_0_0 has %d installable revisions, expected 1." % count
count = self._get_metadata_revision_count(package_x11_repository)
assert count == 1, (
"Repository package_x11_client_1_5_proto_7_0 has %d installable revisions, expected 1." % count
)
def test_0050_reset_emboss_5_metadata(self):
@@ -294,10 +287,7 @@ class TestEnvironmentInheritance(ShedTwillTestCase):
This is step 10 - Reset metadata on the emboss_5 repository. It should now have only its tip as the installable revision.
"""
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
self.reset_repository_metadata(emboss_repository)
assert (
len(emboss_repository.metadata_revisions) == 1
), "Repository emboss_5 has %d installable revisions, expected 1." % len(emboss_repository.metadata_revisions)
count = self._get_metadata_revision_count(emboss_repository)
assert count == 1, "Repository emboss_5 has %d installable revisions, expected 1." % count
@@ -65,7 +65,7 @@ class TestDependencyDefinitionValidation(ShedTwillTestCase):
This is step 3 - Verify repository. The uploaded tool dependency XML should not have resulted in a new changeset.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
assert self.repository_is_new(
repository
), "Uploading an incorrectly defined tool_dependencies.xml resulted in a changeset being generated."
@@ -83,11 +83,11 @@ class TestRepositoryAdminRole(ShedTwillTestCase):
This is step 3 - Check to make sure a new repository_role_association record was created with appropriate repository id and role id.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
test_user_1 = self.test_db_util.get_user(common.test_user_1_email)
repository_admin_role = self.test_db_util.get_role(test_user_1, "filtering_0530_user1_admin")
repository_role_association = self.test_db_util.get_repository_role_association(
repository.id, repository_admin_role.id
self._db_repository(repository).id, repository_admin_role.id
)
assert (
repository_role_association is not None
@@ -99,9 +99,9 @@ class TestRepositoryAdminRole(ShedTwillTestCase):
This is step 4 - Change the name of the repository created in step 1 - this can be done as long as the repository has not
been installed or cloned.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.edit_repository_information(repository, revert=False, repo_name="renamed_filtering_0530")
self.test_db_util.refresh(repository)
repository = self._get_repository_by_name_and_owner("renamed_filtering_0530", common.test_user_1_name)
assert repository.name == "renamed_filtering_0530", "Repository was not renamed to renamed_filtering_0530."
def test_0030_verify_access_denied(self):
@@ -111,9 +111,7 @@ class TestRepositoryAdminRole(ShedTwillTestCase):
name and description cannot be changed.
"""
self.login(email=common.test_user_2_email, username=common.test_user_2_name)
repository = self.test_db_util.get_repository_by_name_and_owner(
"renamed_filtering_0530", common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner("renamed_filtering_0530", common.test_user_1_name)
strings_not_displayed = ["Manage repository"]
strings_displayed = ["View repository"]
self.display_manage_repository_page(repository, strings_not_displayed=strings_not_displayed)
@@ -129,9 +127,7 @@ class TestRepositoryAdminRole(ShedTwillTestCase):
"""
self.login(email=common.test_user_1_email, username=common.test_user_1_name)
test_user_2 = self.test_db_util.get_user(common.test_user_2_email)
repository = self.test_db_util.get_repository_by_name_and_owner(
"renamed_filtering_0530", common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner("renamed_filtering_0530", common.test_user_1_name)
self.assign_admin_role(repository, test_user_2)
def test_0040_rename_repository_as_repository_admin(self):
@@ -140,11 +136,9 @@ class TestRepositoryAdminRole(ShedTwillTestCase):
This is step 8 - Log into the Tool Shed as user user2 and make sure the repository name and description can now be changed.
"""
self.login(email=common.test_user_2_email, username=common.test_user_2_name)
repository = self.test_db_util.get_repository_by_name_and_owner(
"renamed_filtering_0530", common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner("renamed_filtering_0530", common.test_user_1_name)
self.edit_repository_information(repository, revert=False, repo_name="filtering_0530")
self.test_db_util.refresh(repository)
repository = self._get_repository_by_name_and_owner("filtering_0530", common.test_user_1_name)
assert repository.name == "filtering_0530", "User with admin role failed to rename repository."
test_user_1 = self.test_db_util.get_user(common.test_user_1_email)
old_repository_admin_role = self.test_db_util.get_role(test_user_1, "renamed_filtering_0530_user1_admin")
@@ -143,9 +143,7 @@ class TestGetAllMetadata(ShedTwillTestCase):
def test_0020_create_repository_dependency(self):
"""Make column_maker depend on convert_chars."""
repository = self.test_db_util.get_repository_by_name_and_owner(
repositories["column"]["name"], common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner(repositories["column"]["name"], common.test_user_1_name)
self.upload_file(
repository,
filename="0540_files/column_maker/repository_dependencies.xml",
@@ -163,9 +161,7 @@ class TestGetAllMetadata(ShedTwillTestCase):
Load the API endpoint to retrieve all repository metadata and verify
that all three repository names are displayed.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(
repositories["column"]["name"], common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner(repositories["column"]["name"], common.test_user_1_name)
strings_displayed = [
repositories["column"]["name"],
repositories["convert"]["name"],
@@ -133,31 +133,19 @@ class TestGetUpdatedMetadata(ShedTwillTestCase):
def test_0020_check_repository_dependency(self):
"""Make filtering depend on samtools and freebayes."""
freebayes = self.test_db_util.get_repository_by_name_and_owner(
repositories["freebayes"]["name"], common.test_user_1_name
)
samtools = self.test_db_util.get_repository_by_name_and_owner(
repositories["samtools"]["name"], common.test_user_1_name
)
filtering = self.test_db_util.get_repository_by_name_and_owner(
repositories["filtering"]["name"], common.test_user_1_name
)
strings_displayed = [self.security.encode_id(freebayes.id), self.security.encode_id(samtools.id)]
freebayes = self._get_repository_by_name_and_owner(repositories["freebayes"]["name"], common.test_user_1_name)
samtools = self._get_repository_by_name_and_owner(repositories["samtools"]["name"], common.test_user_1_name)
filtering = self._get_repository_by_name_and_owner(repositories["filtering"]["name"], common.test_user_1_name)
strings_displayed = [freebayes.id, samtools.id]
self.display_manage_repository_page(filtering, strings_displayed=strings_displayed)
def test_0025_update_dependent_repositories(self):
"""
Update freebayes and samtools, load the API endpoint again.
"""
freebayes = self.test_db_util.get_repository_by_name_and_owner(
repositories["freebayes"]["name"], common.test_user_1_name
)
samtools = self.test_db_util.get_repository_by_name_and_owner(
repositories["samtools"]["name"], common.test_user_1_name
)
filtering = self.test_db_util.get_repository_by_name_and_owner(
repositories["filtering"]["name"], common.test_user_1_name
)
freebayes = self._get_repository_by_name_and_owner(repositories["freebayes"]["name"], common.test_user_1_name)
samtools = self._get_repository_by_name_and_owner(repositories["samtools"]["name"], common.test_user_1_name)
filtering = self._get_repository_by_name_and_owner(repositories["filtering"]["name"], common.test_user_1_name)
self.upload_file(
freebayes,
filename="0550_files/package_freebayes_2_0550.tgz",
@@ -70,7 +70,7 @@ class ToolWithRepositoryDependencies(ShedTwillTestCase):
repository_tuple = (
self.url,
column_maker_repository.name,
column_maker_repository.user.username,
column_maker_repository.owner,
self.get_repository_tip(column_maker_repository),
)
self.create_repository_dependency(
@@ -76,7 +76,7 @@ class RepositoryWithDependencyRevisions(ShedTwillTestCase):
column_maker_tuple = (
self.url,
column_maker_repository.name,
column_maker_repository.user.username,
column_maker_repository.owner,
self.get_repository_tip(column_maker_repository),
)
self.create_repository_dependency(
@@ -107,7 +107,7 @@ class RepositoryWithDependencyRevisions(ShedTwillTestCase):
column_maker_tuple = (
self.url,
column_maker_repository.name,
column_maker_repository.user.username,
column_maker_repository.owner,
self.get_repository_tip(column_maker_repository),
)
self.create_repository_dependency(
@@ -138,7 +138,7 @@ class RepositoryWithDependencyRevisions(ShedTwillTestCase):
dependency_tuple = (
self.url,
emboss_5_repository.name,
emboss_5_repository.user.username,
emboss_5_repository.owner,
self.get_repository_tip(emboss_5_repository),
)
self.create_repository_dependency(
@@ -149,7 +149,7 @@ class RepositoryWithDependencyRevisions(ShedTwillTestCase):
dependency_tuple = (
self.url,
emboss_6_repository.name,
emboss_6_repository.user.username,
emboss_6_repository.owner,
self.get_repository_tip(emboss_6_repository),
)
self.create_repository_dependency(
@@ -90,17 +90,17 @@ class TestInstallingCircularDependencies(ShedTwillTestCase):
# Filtering will have two revisions, one with just the filtering tool, and one with the filtering tool and a dependency on freebayes.
global running_standalone
if running_standalone:
freebayes_repository = self.test_db_util.get_repository_by_name_and_owner(
freebayes_repository = self._get_repository_by_name_and_owner(
freebayes_repository_name, common.test_user_1_name
)
filtering_repository = self.test_db_util.get_repository_by_name_and_owner(
filtering_repository = self._get_repository_by_name_and_owner(
filtering_repository_name, common.test_user_1_name
)
repository_dependencies_path = self.generate_temp_path("test_1040", additional_paths=["circular"])
repository_tuple = (
self.url,
freebayes_repository.name,
freebayes_repository.user.username,
freebayes_repository.owner,
self.get_repository_tip(freebayes_repository),
)
self.create_repository_dependency(
@@ -111,7 +111,7 @@ class TestInstallingCircularDependencies(ShedTwillTestCase):
repository_tuple = (
self.url,
filtering_repository.name,
filtering_repository.user.username,
filtering_repository.owner,
self.get_repository_tip(filtering_repository),
)
self.create_repository_dependency(
@@ -196,22 +196,18 @@ class TestInstallRepositoryCircularDependencies(ShedTwillTestCase):
"""Set up the dependency structure."""
global running_standalone
if running_standalone:
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
convert_repository = self._get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
filtering_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
filtering_repository = self._get_repository_by_name_and_owner(
filtering_repository_name, common.test_user_1_name
)
freebayes_repository = self.test_db_util.get_repository_by_name_and_owner(
freebayes_repository = self._get_repository_by_name_and_owner(
freebayes_repository_name, common.test_user_1_name
)
bismark_repository = self.test_db_util.get_repository_by_name_and_owner(
bismark_repository = self._get_repository_by_name_and_owner(
bismark_repository_name, common.test_user_1_name
)
dependency_xml_path = self.generate_temp_path("test_1050", additional_paths=["dependencies"])
@@ -223,31 +219,31 @@ class TestInstallRepositoryCircularDependencies(ShedTwillTestCase):
column_tuple = (
self.url,
column_repository.name,
column_repository.user.username,
column_repository.owner,
self.get_repository_tip(column_repository),
)
convert_tuple = (
self.url,
convert_repository.name,
convert_repository.user.username,
convert_repository.owner,
self.get_repository_tip(convert_repository),
)
freebayes_tuple = (
self.url,
freebayes_repository.name,
freebayes_repository.user.username,
freebayes_repository.owner,
self.get_repository_tip(freebayes_repository),
)
emboss_tuple = (
self.url,
emboss_repository.name,
emboss_repository.user.username,
emboss_repository.owner,
self.get_repository_tip(emboss_repository),
)
bismark_tuple = (
self.url,
bismark_repository.name,
bismark_repository.user.username,
bismark_repository.owner,
self.get_repository_tip(bismark_repository),
)
self.create_repository_dependency(
@@ -287,24 +283,16 @@ class TestInstallRepositoryCircularDependencies(ShedTwillTestCase):
id: 7 key: http://toolshed.local:10001__ESEP__emboss_5__ESEP__test__ESEP__8de5fe0d7b04
['http://toolshed.local:10001', 'emboss_datatypes', 'test', 'dbd4f68bf507']
"""
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
filtering_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
filtering_repository = self._get_repository_by_name_and_owner(
filtering_repository_name, common.test_user_1_name
)
freebayes_repository = self.test_db_util.get_repository_by_name_and_owner(
freebayes_repository = self._get_repository_by_name_and_owner(
freebayes_repository_name, common.test_user_1_name
)
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
bismark_repository = self.test_db_util.get_repository_by_name_and_owner(
bismark_repository_name, common.test_user_1_name
)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
convert_repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
bismark_repository = self._get_repository_by_name_and_owner(bismark_repository_name, common.test_user_1_name)
self.check_repository_dependency(convert_repository, column_repository)
self.check_repository_dependency(column_repository, convert_repository)
self.check_repository_dependency(emboss_repository, bismark_repository)
@@ -323,12 +311,10 @@ class TestInstallRepositoryCircularDependencies(ShedTwillTestCase):
def test_0050_verify_tool_dependencies(self):
"""Check that freebayes and emboss display tool dependencies."""
freebayes_repository = self.test_db_util.get_repository_by_name_and_owner(
freebayes_repository = self._get_repository_by_name_and_owner(
freebayes_repository_name, common.test_user_1_name
)
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
self.display_manage_repository_page(
freebayes_repository,
strings_displayed=["freebayes", "0.9.4_9696d0ce8a9", "samtools", "0.1.18", "Tool dependencies"],
@@ -89,17 +89,15 @@ class TestRepositoryDependencies(ShedTwillTestCase):
"""If this test is being run by itself, it will not have repository dependencies configured yet."""
global running_standalone
if running_standalone:
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository = self._get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
repository_dependencies_path = self.generate_temp_path("test_1080", additional_paths=["convert"])
repository_tuple = (
self.url,
convert_repository.name,
convert_repository.user.username,
convert_repository.owner,
self.get_repository_tip(convert_repository),
)
self.create_repository_dependency(
@@ -110,7 +108,7 @@ class TestRepositoryDependencies(ShedTwillTestCase):
repository_tuple = (
self.url,
column_repository.name,
column_repository.user.username,
column_repository.owner,
self.get_repository_tip(column_repository),
)
self.create_repository_dependency(
@@ -79,17 +79,13 @@ class TestRepositoryDependencies(ShedTwillTestCase):
)
def test_0015_create_and_upload_dependency_files(self):
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
repository_dependencies_path = self.generate_temp_path("test_1085", additional_paths=["column"])
repository_tuple = (
self.url,
convert_repository.name,
convert_repository.user.username,
convert_repository.owner,
self.get_repository_tip(convert_repository),
)
self.create_repository_dependency(
@@ -98,7 +94,7 @@ class TestRepositoryDependencies(ShedTwillTestCase):
repository_tuple = (
self.url,
column_repository.name,
column_repository.user.username,
column_repository.owner,
self.get_repository_tip(column_repository),
)
self.create_repository_dependency(
@@ -95,17 +95,13 @@ class TestRepositoryDependencies(ShedTwillTestCase):
def test_0020_upload_dependency_xml(self):
"""Upload a repository_dependencies.xml file to column_maker that specifies convert_chars."""
self.login(email=common.test_user_1_email, username=common.test_user_1_name)
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
repository_dependencies_path = self.generate_temp_path("test_1085", additional_paths=["column"])
convert_tuple = (
self.url,
convert_repository.name,
convert_repository.user.username,
convert_repository.owner,
self.get_repository_tip(convert_repository),
)
self.create_repository_dependency(
@@ -114,12 +110,8 @@ class TestRepositoryDependencies(ShedTwillTestCase):
def test_0025_verify_repository_dependency(self):
"""Verify that the new revision of column_maker now depends on convert_chars."""
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
self.check_repository_dependency(column_repository, convert_repository)
def test_0030_reinstall_column_repository(self):
@@ -128,9 +120,7 @@ class TestRepositoryDependencies(ShedTwillTestCase):
installed_column_repository = self.test_db_util.get_installed_repository_by_name_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
convert_repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
strings_displayed = [
"Handle repository dependencies",
"convert_chars_1087",
@@ -82,7 +82,7 @@ class TestInstallingComplexRepositoryDependencies(ShedTwillTestCase):
category=category,
strings_displayed=[],
)
self.test_db_util.get_repository_by_name_and_owner(bwa_package_repository_name, common.test_user_1_name)
self._get_repository_by_name_and_owner(bwa_package_repository_name, common.test_user_1_name)
self.upload_file(
repository,
filename="bwa/complex/bwa_base.tar",
@@ -100,15 +100,13 @@ class TestInstallingComplexRepositoryDependencies(ShedTwillTestCase):
global running_standalone
if running_standalone:
dependency_path = self.generate_temp_path("test_0100", additional_paths=["complex", "shed"])
base_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_base_repository_name, common.test_user_1_name
)
tool_repository = self.test_db_util.get_repository_by_name_and_owner(
base_repository = self._get_repository_by_name_and_owner(bwa_base_repository_name, common.test_user_1_name)
tool_repository = self._get_repository_by_name_and_owner(
bwa_package_repository_name, common.test_user_1_name
)
url = "http://http://this is not an url!"
name = tool_repository.name
owner = tool_repository.user.username
owner = tool_repository.owner
changeset_revision = self.get_repository_tip(tool_repository)
strings_displayed = ["Repository dependencies are currently supported only within the same tool shed"]
repository_tuple = (url, name, owner, changeset_revision)
@@ -127,15 +125,13 @@ class TestInstallingComplexRepositoryDependencies(ShedTwillTestCase):
global running_standalone
if running_standalone:
dependency_path = self.generate_temp_path("test_0100", additional_paths=["complex", "shed"])
base_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_base_repository_name, common.test_user_1_name
)
tool_repository = self.test_db_util.get_repository_by_name_and_owner(
base_repository = self._get_repository_by_name_and_owner(bwa_base_repository_name, common.test_user_1_name)
tool_repository = self._get_repository_by_name_and_owner(
bwa_package_repository_name, common.test_user_1_name
)
url = self.url
name = "invalid_repository!?"
owner = tool_repository.user.username
owner = tool_repository.owner
changeset_revision = self.get_repository_tip(tool_repository)
strings_displayed = ["because the name is invalid."]
repository_tuple = (url, name, owner, changeset_revision)
@@ -154,10 +150,8 @@ class TestInstallingComplexRepositoryDependencies(ShedTwillTestCase):
global running_standalone
if running_standalone:
dependency_path = self.generate_temp_path("test_0100", additional_paths=["complex", "shed"])
base_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_base_repository_name, common.test_user_1_name
)
tool_repository = self.test_db_util.get_repository_by_name_and_owner(
base_repository = self._get_repository_by_name_and_owner(bwa_base_repository_name, common.test_user_1_name)
tool_repository = self._get_repository_by_name_and_owner(
bwa_package_repository_name, common.test_user_1_name
)
url = self.url
@@ -181,15 +175,13 @@ class TestInstallingComplexRepositoryDependencies(ShedTwillTestCase):
global running_standalone
if running_standalone:
dependency_path = self.generate_temp_path("test_0100", additional_paths=["complex", "shed"])
base_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_base_repository_name, common.test_user_1_name
)
tool_repository = self.test_db_util.get_repository_by_name_and_owner(
base_repository = self._get_repository_by_name_and_owner(bwa_base_repository_name, common.test_user_1_name)
tool_repository = self._get_repository_by_name_and_owner(
bwa_package_repository_name, common.test_user_1_name
)
url = self.url
name = tool_repository.name
owner = tool_repository.user.username
owner = tool_repository.owner
changeset_revision = "1234abcd"
strings_displayed = ["because the changeset revision is invalid."]
repository_tuple = (url, name, owner, changeset_revision)
@@ -207,16 +199,14 @@ class TestInstallingComplexRepositoryDependencies(ShedTwillTestCase):
"""Generate and upload a valid tool_dependencies.xml file that specifies package_bwa_0_5_9_0100."""
global running_standalone
if running_standalone:
base_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_base_repository_name, common.test_user_1_name
)
tool_repository = self.test_db_util.get_repository_by_name_and_owner(
base_repository = self._get_repository_by_name_and_owner(bwa_base_repository_name, common.test_user_1_name)
tool_repository = self._get_repository_by_name_and_owner(
bwa_package_repository_name, common.test_user_1_name
)
dependency_path = self.generate_temp_path("test_0100", additional_paths=["complex"])
url = self.url
name = tool_repository.name
owner = tool_repository.user.username
owner = tool_repository.owner
changeset_revision = self.get_repository_tip(tool_repository)
repository_tuple = (url, name, owner, changeset_revision)
self.create_repository_dependency(
@@ -234,10 +224,8 @@ class TestInstallingComplexRepositoryDependencies(ShedTwillTestCase):
"""Upload a new tool_dependencies.xml to the tool repository, and verify that the base repository displays the new changeset."""
global running_standalone
if running_standalone:
base_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_base_repository_name, common.test_user_1_name
)
tool_repository = self.test_db_util.get_repository_by_name_and_owner(
base_repository = self._get_repository_by_name_and_owner(bwa_base_repository_name, common.test_user_1_name)
tool_repository = self._get_repository_by_name_and_owner(
bwa_package_repository_name, common.test_user_1_name
)
previous_changeset = self.get_repository_tip(tool_repository)
@@ -268,12 +256,8 @@ class TestInstallingComplexRepositoryDependencies(ShedTwillTestCase):
def test_0045_install_base_repository(self):
"""Verify installation of the repository with complex repository dependencies."""
self.galaxy_login(email=common.admin_email, username=common.admin_username)
base_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_base_repository_name, common.test_user_1_name
)
tool_repository = self.test_db_util.get_repository_by_name_and_owner(
bwa_package_repository_name, common.test_user_1_name
)
base_repository = self._get_repository_by_name_and_owner(bwa_base_repository_name, common.test_user_1_name)
tool_repository = self._get_repository_by_name_and_owner(bwa_package_repository_name, common.test_user_1_name)
preview_strings_displayed = [tool_repository.name, self.get_repository_tip(tool_repository)]
self.install_repository(
bwa_base_repository_name,
@@ -85,15 +85,13 @@ class TestBasicRepositoryDependencies(ShedTwillTestCase):
global running_standalone
if running_standalone:
dependency_path = self.generate_temp_path("test_1110", additional_paths=["simple"])
column_maker_repository = self.test_db_util.get_repository_by_name_and_owner(
column_maker_repository = self._get_repository_by_name_and_owner(
column_maker_repository_name, common.test_user_1_name
)
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
url = "http://http://this is not an url!"
name = column_maker_repository.name
owner = column_maker_repository.user.username
owner = column_maker_repository.owner
changeset_revision = self.get_repository_tip(column_maker_repository)
strings_displayed = ["Repository dependencies are currently supported only within the same tool shed"]
repository_tuple = (url, name, owner, changeset_revision)
@@ -110,15 +108,11 @@ class TestBasicRepositoryDependencies(ShedTwillTestCase):
global running_standalone
if running_standalone:
dependency_path = self.generate_temp_path("test_1110", additional_paths=["simple"])
repository = self.test_db_util.get_repository_by_name_and_owner(
column_maker_repository_name, common.test_user_1_name
)
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner(column_maker_repository_name, common.test_user_1_name)
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
url = self.url
name = "!?invalid?!"
owner = repository.user.username
owner = repository.owner
changeset_revision = self.get_repository_tip(repository)
strings_displayed = ["because the name is invalid."]
repository_tuple = (url, name, owner, changeset_revision)
@@ -135,12 +129,8 @@ class TestBasicRepositoryDependencies(ShedTwillTestCase):
global running_standalone
if running_standalone:
dependency_path = self.generate_temp_path("test_1110", additional_paths=["simple"])
repository = self.test_db_util.get_repository_by_name_and_owner(
column_maker_repository_name, common.test_user_1_name
)
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner(column_maker_repository_name, common.test_user_1_name)
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
url = self.url
name = repository.name
owner = "!?invalid?!"
@@ -160,15 +150,11 @@ class TestBasicRepositoryDependencies(ShedTwillTestCase):
global running_standalone
if running_standalone:
dependency_path = self.generate_temp_path("test_1110", additional_paths=["simple", "invalid"])
repository = self.test_db_util.get_repository_by_name_and_owner(
column_maker_repository_name, common.test_user_1_name
)
emboss_repository = self.test_db_util.get_repository_by_name_and_owner(
emboss_repository_name, common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner(column_maker_repository_name, common.test_user_1_name)
emboss_repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
url = self.url
name = repository.name
owner = repository.user.username
owner = repository.owner
changeset_revision = "!?invalid?!"
strings_displayed = ["because the changeset revision is invalid."]
repository_tuple = (url, name, owner, changeset_revision)
@@ -183,7 +169,7 @@ class TestBasicRepositoryDependencies(ShedTwillTestCase):
def test_0045_install_repository_with_invalid_repository_dependency(self):
"""Install the repository and verify that galaxy detects invalid repository dependencies."""
self.galaxy_login(email=common.admin_email, username=common.admin_username)
repository = self.test_db_util.get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(emboss_repository_name, common.test_user_1_name)
preview_strings_displayed = [
"emboss_0110",
self.get_repository_tip(repository),
@@ -77,9 +77,7 @@ class TestInstallRepositoryMultipleOwners(ShedTwillTestCase):
Check for appropriate strings, most importantly BlastXml, BlastNucDb, and BlastProtDb,
the datatypes that are defined in datatypes_conf.xml.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(
datatypes_repository_name, common.test_user_2_name
)
repository = self._get_repository_by_name_and_owner(datatypes_repository_name, common.test_user_2_name)
strings_displayed = [
"BlastXml",
"BlastNucDb",
@@ -130,7 +128,7 @@ class TestInstallRepositoryMultipleOwners(ShedTwillTestCase):
We are at step 2a.
Check for appropriate strings, such as tool name, description, and version.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(tool_repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(tool_repository_name, common.test_user_1_name)
strings_displayed = ["blastxml_to_top_descr_0120", "BLAST top hit descriptions", "Make a table from BLAST XML"]
strings_displayed.extend(["0.0.1", "Valid tools"])
self.display_manage_repository_page(repository, strings_displayed=strings_displayed)
@@ -143,17 +141,15 @@ class TestInstallRepositoryMultipleOwners(ShedTwillTestCase):
"""
global running_standalone
if running_standalone:
datatypes_repository = self.test_db_util.get_repository_by_name_and_owner(
datatypes_repository = self._get_repository_by_name_and_owner(
datatypes_repository_name, common.test_user_2_name
)
tool_repository = self.test_db_util.get_repository_by_name_and_owner(
tool_repository_name, common.test_user_1_name
)
tool_repository = self._get_repository_by_name_and_owner(tool_repository_name, common.test_user_1_name)
dependency_xml_path = self.generate_temp_path("test_1120", additional_paths=["dependencies"])
datatypes_tuple = (
self.url,
datatypes_repository.name,
datatypes_repository.user.username,
datatypes_repository.owner,
self.get_repository_tip(datatypes_repository),
)
self.create_repository_dependency(
@@ -166,12 +162,10 @@ class TestInstallRepositoryMultipleOwners(ShedTwillTestCase):
We are at step 3a.
Check the newly created repository dependency to ensure that it was defined and displays correctly.
"""
datatypes_repository = self.test_db_util.get_repository_by_name_and_owner(
datatypes_repository = self._get_repository_by_name_and_owner(
datatypes_repository_name, common.test_user_2_name
)
tool_repository = self.test_db_util.get_repository_by_name_and_owner(
tool_repository_name, common.test_user_1_name
)
tool_repository = self._get_repository_by_name_and_owner(tool_repository_name, common.test_user_1_name)
self.check_repository_dependency(tool_repository, datatypes_repository)
def test_0045_install_blastxml_to_top_descr(self):
@@ -64,15 +64,15 @@ class TestToolHelpImages(ShedTwillTestCase):
This is a duplicate of test method _0010 in test_0140_tool_help_images.
"""
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
# Get the repository tip.
changeset_revision = self.get_repository_tip(repository)
self.display_manage_repository_page(repository)
# Generate the image path.
image_path = f'src="/repository/static/images/{self.security.encode_id(repository.id)}/count_modes.png"'
image_path = f'src="/repository/static/images/{repository.id}/count_modes.png"'
# The repository uploaded in this test should only have one metadata revision, with one tool defined, which
# should be the tool that contains a link to the image.
repository_metadata = repository.metadata_revisions[0].metadata
repository_metadata = self._db_repository(repository).metadata_revisions[0].metadata
tool_path = repository_metadata["tools"][0]["tool_config"]
self.load_display_tool_page(
repository, tool_path, changeset_revision, strings_displayed=[image_path], strings_not_displayed=[]
@@ -103,18 +103,14 @@ class TestSimplePriorInstallation(ShedTwillTestCase):
<repository toolshed="self.url" name="convert_chars" owner="test" changeset_revision="<tip>" prior_installation_required="True" />
"""
global running_standalone
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
convert_repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
if running_standalone:
dependency_xml_path = self.generate_temp_path("test_1150", additional_paths=["column"])
convert_tuple = (
self.url,
convert_repository.name,
convert_repository.user.username,
convert_repository.owner,
self.get_repository_tip(convert_repository),
)
self.create_repository_dependency(
@@ -126,12 +122,8 @@ class TestSimplePriorInstallation(ShedTwillTestCase):
def test_0020_verify_repository_dependency(self):
"""Verify that the previously generated repositiory dependency displays correctly."""
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
convert_repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
self.check_repository_dependency(
repository=column_repository,
depends_on_repository=convert_repository,
@@ -142,9 +134,7 @@ class TestSimplePriorInstallation(ShedTwillTestCase):
def test_0025_install_column_repository(self):
"""Install column_maker_0150."""
self.galaxy_login(email=common.admin_email, username=common.admin_username)
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
preview_strings_displayed = ["column_maker_0150", self.get_repository_tip(column_repository)]
strings_displayed = ["Choose the tool panel section"]
self.install_repository(
@@ -140,23 +140,17 @@ class TestSimplePriorInstallation(ShedTwillTestCase):
Each of the three repositories should depend on the other two, to make this as circular as possible.
"""
global running_standalone
filter_repository = self.test_db_util.get_repository_by_name_and_owner(
filter_repository_name, common.test_user_1_name
)
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
filter_repository = self._get_repository_by_name_and_owner(filter_repository_name, common.test_user_1_name)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
convert_repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
filter_revision = self.get_repository_tip(filter_repository)
column_revision = self.get_repository_tip(column_repository)
convert_revision = self.get_repository_tip(convert_repository)
if running_standalone:
dependency_xml_path = self.generate_temp_path("test_1160", additional_paths=["column"])
column_tuple = (self.url, column_repository.name, column_repository.user.username, column_revision)
convert_tuple = (self.url, convert_repository.name, convert_repository.user.username, convert_revision)
filter_tuple = (self.url, filter_repository.name, filter_repository.user.username, filter_revision)
column_tuple = (self.url, column_repository.name, column_repository.owner, column_revision)
convert_tuple = (self.url, convert_repository.name, convert_repository.owner, convert_revision)
filter_tuple = (self.url, filter_repository.name, filter_repository.owner, filter_revision)
self.create_repository_dependency(
repository=column_repository,
repository_tuples=[convert_tuple, filter_tuple],
@@ -178,15 +172,9 @@ class TestSimplePriorInstallation(ShedTwillTestCase):
def test_0025_verify_repository_dependency(self):
"""Verify that the previously generated repositiory dependency displays correctly."""
filter_repository = self.test_db_util.get_repository_by_name_and_owner(
filter_repository_name, common.test_user_1_name
)
column_repository = self.test_db_util.get_repository_by_name_and_owner(
column_repository_name, common.test_user_1_name
)
convert_repository = self.test_db_util.get_repository_by_name_and_owner(
convert_repository_name, common.test_user_1_name
)
filter_repository = self._get_repository_by_name_and_owner(filter_repository_name, common.test_user_1_name)
column_repository = self._get_repository_by_name_and_owner(column_repository_name, common.test_user_1_name)
convert_repository = self._get_repository_by_name_and_owner(convert_repository_name, common.test_user_1_name)
self.check_repository_dependency(
repository=column_repository,
depends_on_repository=convert_repository,
@@ -227,9 +215,7 @@ class TestSimplePriorInstallation(ShedTwillTestCase):
def test_0030_install_filtering_repository(self):
"""Install the filtering_0160 repository."""
self.galaxy_login(email=common.admin_email, username=common.admin_username)
filter_repository = self.test_db_util.get_repository_by_name_and_owner(
filter_repository_name, common.test_user_1_name
)
filter_repository = self._get_repository_by_name_and_owner(filter_repository_name, common.test_user_1_name)
preview_strings_displayed = ["filtering_0160", self.get_repository_tip(filter_repository)]
strings_displayed = ["Choose the tool panel section"]
self.install_repository(
@@ -113,10 +113,8 @@ class TestComplexPriorInstallation(ShedTwillTestCase):
and installed first.
"""
global running_standalone
numpy_repository = self.test_db_util.get_repository_by_name_and_owner(
numpy_repository_name, common.test_user_1_name
)
matplotlib_repository = self.test_db_util.get_repository_by_name_and_owner(
numpy_repository = self._get_repository_by_name_and_owner(numpy_repository_name, common.test_user_1_name)
matplotlib_repository = self._get_repository_by_name_and_owner(
matplotlib_repository_name, common.test_user_1_name
)
# Generate the new dependency XML. Normally, the create_repository_dependency method would be used for this, but
@@ -128,7 +126,7 @@ class TestComplexPriorInstallation(ShedTwillTestCase):
new_xml += " </package>\n"
url = self.url
name = numpy_repository.name
owner = numpy_repository.user.username
owner = numpy_repository.owner
if running_standalone:
changeset_revision = self.get_repository_tip(numpy_repository)
processed_xml = new_xml % (url, name, owner, changeset_revision)
@@ -157,10 +155,8 @@ class TestComplexPriorInstallation(ShedTwillTestCase):
'Inherited' in this case means that matplotlib should show a package tool dependency on numpy version 1.7, and a repository
dependency on the latest revision of package_numpy_1_7_0170.
"""
numpy_repository = self.test_db_util.get_repository_by_name_and_owner(
numpy_repository_name, common.test_user_1_name
)
matplotlib_repository = self.test_db_util.get_repository_by_name_and_owner(
numpy_repository = self._get_repository_by_name_and_owner(numpy_repository_name, common.test_user_1_name)
matplotlib_repository = self._get_repository_by_name_and_owner(
matplotlib_repository_name, common.test_user_1_name
)
changeset_revision = self.get_repository_tip(numpy_repository)
@@ -175,7 +171,7 @@ class TestComplexPriorInstallation(ShedTwillTestCase):
This is step 4 - Install package_matplotlib_1_2_0170 with repository dependencies.
"""
self.galaxy_login(email=common.admin_email, username=common.admin_username)
matplotlib_repository = self.test_db_util.get_repository_by_name_and_owner(
matplotlib_repository = self._get_repository_by_name_and_owner(
matplotlib_repository_name, common.test_user_1_name
)
preview_strings_displayed = ["package_matplotlib_1_2_0170", self.get_repository_tip(matplotlib_repository)]
@@ -66,7 +66,7 @@ class UninstallingAndReinstallingRepositories(ShedTwillTestCase):
column_maker_tuple = (
self.url,
column_maker_repository.name,
column_maker_repository.user.username,
column_maker_repository.owner,
self.get_repository_tip(column_maker_repository),
)
self.create_repository_dependency(
@@ -97,7 +97,7 @@ class UninstallingAndReinstallingRepositories(ShedTwillTestCase):
column_maker_tuple = (
self.url,
column_maker_repository.name,
column_maker_repository.user.username,
column_maker_repository.owner,
self.get_repository_tip(column_maker_repository),
)
self.create_repository_dependency(
@@ -128,7 +128,7 @@ class UninstallingAndReinstallingRepositories(ShedTwillTestCase):
dependency_tuple = (
self.url,
emboss_5_repository.name,
emboss_5_repository.user.username,
emboss_5_repository.owner,
self.get_repository_tip(emboss_5_repository),
)
self.create_repository_dependency(
@@ -139,7 +139,7 @@ class UninstallingAndReinstallingRepositories(ShedTwillTestCase):
dependency_tuple = (
self.url,
emboss_6_repository.name,
emboss_6_repository.user.username,
emboss_6_repository.owner,
self.get_repository_tip(emboss_6_repository),
)
self.create_repository_dependency(
@@ -249,7 +249,7 @@ class TestResetInstalledRepositoryMetadata(ShedTwillTestCase):
dependency_tuple = (
self.url,
column_maker_repository.name,
column_maker_repository.user.username,
column_maker_repository.owner,
self.get_repository_tip(column_maker_repository),
)
self.create_repository_dependency(
@@ -280,7 +280,7 @@ class TestResetInstalledRepositoryMetadata(ShedTwillTestCase):
dependency_tuple = (
self.url,
column_maker_repository.name,
column_maker_repository.user.username,
column_maker_repository.owner,
self.get_repository_tip(column_maker_repository),
)
self.create_repository_dependency(
@@ -311,7 +311,7 @@ class TestResetInstalledRepositoryMetadata(ShedTwillTestCase):
dependency_tuple = (
self.url,
emboss_5_repository.name,
emboss_5_repository.user.username,
emboss_5_repository.owner,
self.get_repository_tip(emboss_5_repository),
)
self.create_repository_dependency(
@@ -322,7 +322,7 @@ class TestResetInstalledRepositoryMetadata(ShedTwillTestCase):
dependency_tuple = (
self.url,
emboss_6_repository.name,
emboss_6_repository.user.username,
emboss_6_repository.owner,
self.get_repository_tip(emboss_6_repository),
)
self.create_repository_dependency(
@@ -373,15 +373,13 @@ class TestResetInstalledRepositoryMetadata(ShedTwillTestCase):
strings_displayed=[],
strings_not_displayed=[],
)
repository = self.test_db_util.get_repository_by_name_and_owner("freebayes_0040", common.test_user_1_name)
filtering_repository = self.test_db_util.get_repository_by_name_and_owner(
"filtering_0040", common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner("freebayes_0040", common.test_user_1_name)
filtering_repository = self._get_repository_by_name_and_owner("filtering_0040", common.test_user_1_name)
repository_dependencies_path = self.generate_temp_path("test_1340", additional_paths=["filtering"])
repository_tuple = (
self.url,
repository.name,
repository.user.username,
repository.owner,
self.get_repository_tip(repository),
)
self.create_repository_dependency(
@@ -389,15 +387,13 @@ class TestResetInstalledRepositoryMetadata(ShedTwillTestCase):
repository_tuples=[repository_tuple],
filepath=repository_dependencies_path,
)
repository = self.test_db_util.get_repository_by_name_and_owner("filtering_0040", common.test_user_1_name)
freebayes_repository = self.test_db_util.get_repository_by_name_and_owner(
"freebayes_0040", common.test_user_1_name
)
repository = self._get_repository_by_name_and_owner("filtering_0040", common.test_user_1_name)
freebayes_repository = self._get_repository_by_name_and_owner("freebayes_0040", common.test_user_1_name)
repository_dependencies_path = self.generate_temp_path("test_1340", additional_paths=["freebayes"])
repository_tuple = (
self.url,
repository.name,
repository.user.username,
repository.owner,
self.get_repository_tip(repository),
)
self.create_repository_dependency(
@@ -472,7 +468,7 @@ class TestResetInstalledRepositoryMetadata(ShedTwillTestCase):
dependency_tuple = (
self.url,
emboss_repository.name,
emboss_repository.user.username,
emboss_repository.owner,
self.get_repository_tip(emboss_repository),
)
self.create_repository_dependency(
@@ -484,7 +480,7 @@ class TestResetInstalledRepositoryMetadata(ShedTwillTestCase):
dependency_tuple = (
self.url,
filtering_repository.name,
filtering_repository.user.username,
filtering_repository.owner,
self.get_repository_tip(filtering_repository),
)
self.create_repository_dependency(
@@ -496,19 +492,19 @@ class TestResetInstalledRepositoryMetadata(ShedTwillTestCase):
(
self.url,
emboss_repository.name,
emboss_repository.user.username,
emboss_repository.owner,
self.get_repository_tip(emboss_repository),
),
(
self.url,
filtering_repository.name,
filtering_repository.user.username,
filtering_repository.owner,
self.get_repository_tip(filtering_repository),
),
(
self.url,
freebayes_repository.name,
freebayes_repository.user.username,
freebayes_repository.owner,
self.get_repository_tip(freebayes_repository),
),
]
@@ -98,7 +98,7 @@ class TestUpdateManager(ShedTwillTestCase):
revision.
"""
self.login(email=common.test_user_1_email, username=common.test_user_1_name)
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.upload_file(
repository,
filename="readme.txt",
@@ -106,11 +106,11 @@ class TestRepairRepository(ShedTwillTestCase):
This is step 3 - Upload a repository_dependencies.xml file to the column_1430 repository that creates a repository
dependency on the filter_1430 repository.
"""
column_repository = self.test_db_util.get_repository_by_name_and_owner("column_1430", common.test_user_1_name)
filter_repository = self.test_db_util.get_repository_by_name_and_owner("filter_1430", common.test_user_1_name)
column_repository = self._get_repository_by_name_and_owner("column_1430", common.test_user_1_name)
filter_repository = self._get_repository_by_name_and_owner("filter_1430", common.test_user_1_name)
tool_shed_url = self.url
name = filter_repository.name
owner = filter_repository.user.username
owner = filter_repository.owner
changeset_revision = self.get_repository_tip(filter_repository)
repository_dependency_tuple = (tool_shed_url, name, owner, changeset_revision)
filepath = self.generate_temp_path("1430_repository_dependency")
@@ -93,7 +93,7 @@ class TestUpdateInstalledRepository(ShedTwillTestCase):
eliminate the process we're testing in this script. So, we upload a readme file.
"""
self.login(email=common.test_user_1_email, username=common.test_user_1_name)
repository = self.test_db_util.get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
repository = self._get_repository_by_name_and_owner(repository_name, common.test_user_1_name)
self.upload_file(
repository,
filename="filtering/readme.txt",
+7 -1
View File
@@ -815,17 +815,23 @@ class RepositoriesController(BaseAPIController):
:param id: the encoded id of the Repository object
:param downloadable_only: Return only downloadable revisions (defaults to True).
Added for test cases - shouldn't be considered part of the stable API.
:returns: A dictionary containing the specified repository's metadata, by changeset,
recursively including dependencies and their metadata.
:not found: Empty dictionary.
"""
recursive = util.asbool(kwd.get("recursive", "True"))
downloadable_only = util.asbool(kwd.get("downloadable_only", "True"))
all_metadata = {}
repository = repository_util.get_repository_in_tool_shed(
self.app, id, eagerload_columns=["downloadable_revisions"]
)
for changeset, changehash in repository.installable_revisions(self.app):
for changeset, changehash in metadata_util.get_metadata_revisions(
self.app, repository, sort_revisions=True, downloadable=downloadable_only
):
metadata = metadata_util.get_current_repository_metadata_for_changeset_revision(
self.app, repository, changehash
)
+13 -1
View File
@@ -73,7 +73,7 @@ class RepositoryRevisionMetadata(BaseModel):
id: str
repository: Repository
repository_dependencies: List[RepositoryDependency]
tools: List[RepositoryTool]
tools: Optional[List[RepositoryTool]]
repository_id: str
numeric_revision: int
changeset_revision: str
@@ -96,6 +96,17 @@ class RepositoryMetadata(BaseModel):
def latest_revision(self) -> RepositoryRevisionMetadata:
return list(self.__root__.values())[-1]
@property
def tip(self) -> str:
if self.is_new:
return "000000000000"
else:
return self.latest_revision.changeset_revision
@property
def is_new(self) -> bool:
return len(self.__root__) == 0
class ResetMetadataOnRepositoryRequest(BaseModel):
repository_id: str
@@ -152,6 +163,7 @@ class ToolSearchResults(BaseModel):
class RepositoryIndexRequest(BaseModel):
owner: Optional[str]
name: Optional[str]
deleted: str = "false"
class RepositoryIndexResponse(BaseModel):