Warning
This document is for an old release of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
Source code for tool_shed.test.functional.test_1040_install_repository_basic_circular_dependencies
from ..base.twilltestcase import (
common,
ShedTwillTestCase,
)
freebayes_repository_name = "freebayes_0040"
freebayes_repository_description = "Galaxy's freebayes tool for test 0040"
freebayes_repository_long_description = "Long description of Galaxy's freebayes tool for test 0040"
filtering_repository_name = "filtering_0040"
filtering_repository_description = "Galaxy's filtering tool for test 0040"
filtering_repository_long_description = "Long description of Galaxy's filtering tool for test 0040"
category_name = "test_0040_repository_circular_dependencies"
running_standalone = False
[docs]class TestInstallingCircularDependencies(ShedTwillTestCase):
"""Verify that the code correctly handles installing repositories with circular dependencies."""
[docs] def test_0000_initiate_users(self):
"""Create necessary user accounts."""
self.login(email=common.test_user_1_email, username=common.test_user_1_name)
test_user_1 = self.test_db_util.get_user(common.test_user_1_email)
assert (
test_user_1 is not None
), f"Problem retrieving user with email {common.test_user_1_email} from the database"
self.test_db_util.get_private_role(test_user_1)
self.login(email=common.admin_email, username=common.admin_username)
admin_user = self.test_db_util.get_user(common.admin_email)
assert admin_user is not None, f"Problem retrieving user with email {common.admin_email} from the database"
self.test_db_util.get_private_role(admin_user)
[docs] def test_0005_create_freebayes_repository(self):
"""Create and populate freebayes_0040."""
global running_standalone
category = self.create_category(
name=category_name, description="Testing handling of circular repository dependencies."
)
self.login(email=common.test_user_1_email, username=common.test_user_1_name)
repository = self.get_or_create_repository(
name=freebayes_repository_name,
description=freebayes_repository_description,
long_description=freebayes_repository_long_description,
owner=common.test_user_1_name,
category_id=self.security.encode_id(category.id),
strings_displayed=[],
)
if self.repository_is_new(repository):
running_standalone = True
self.upload_file(
repository,
filename="freebayes/freebayes.tar",
filepath=None,
valid_tools_only=True,
uncompress_file=True,
remove_repo_files_not_in_tar=False,
commit_message="Uploaded the tool tarball.",
strings_displayed=[],
strings_not_displayed=[],
)
[docs] def test_0015_create_filtering_repository(self):
"""Create and populate filtering_0040."""
global running_standalone
category = self.create_category(
name=category_name, description="Testing handling of circular repository dependencies."
)
self.login(email=common.test_user_1_email, username=common.test_user_1_name)
repository = self.get_or_create_repository(
name=filtering_repository_name,
description=filtering_repository_description,
long_description=filtering_repository_long_description,
owner=common.test_user_1_name,
category_id=self.security.encode_id(category.id),
strings_displayed=[],
)
if self.repository_is_new(repository):
running_standalone = True
self.upload_file(
repository,
filename="filtering/filtering_1.1.0.tar",
filepath=None,
valid_tools_only=True,
uncompress_file=True,
remove_repo_files_not_in_tar=False,
commit_message="Uploaded the tool tarball for filtering 1.1.0.",
strings_displayed=[],
strings_not_displayed=[],
)
[docs] def test_0020_create_repository_dependencies(self):
"""Set up the filtering and freebayes repository dependencies."""
# The dependency structure should look like:
# 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.
global running_standalone
if running_standalone:
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(
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,
self.get_repository_tip(freebayes_repository),
)
self.create_repository_dependency(
repository=filtering_repository,
repository_tuples=[repository_tuple],
filepath=repository_dependencies_path,
)
repository_tuple = (
self.url,
filtering_repository.name,
filtering_repository.user.username,
self.get_repository_tip(filtering_repository),
)
self.create_repository_dependency(
repository=freebayes_repository,
repository_tuples=[repository_tuple],
filepath=repository_dependencies_path,
)
[docs] def test_0025_install_freebayes_repository(self):
"""Install freebayes with blank tool panel section, without tool dependencies but with repository dependencies."""
self.galaxy_login(email=common.admin_email, username=common.admin_username)
strings_displayed = ["Handle", "tool dependencies", "freebayes", "0.9.4_9696d0ce8a9", "samtools", "0.1.18"]
self.install_repository(
freebayes_repository_name,
common.test_user_1_name,
category_name,
strings_displayed=strings_displayed,
install_tool_dependencies=False,
install_repository_dependencies=True,
)
[docs] def test_0030_uninstall_filtering_repository(self):
"""Deactivate filtering, verify tool panel section and missing repository dependency."""
installed_freebayes_repository = self.test_db_util.get_installed_repository_by_name_owner(
freebayes_repository_name, common.test_user_1_name
)
installed_filtering_repository = self.test_db_util.get_installed_repository_by_name_owner(
filtering_repository_name, common.test_user_1_name
)
self.display_installed_repository_manage_page(installed_freebayes_repository)
self.display_installed_repository_manage_page(installed_filtering_repository)
self.deactivate_repository(installed_filtering_repository)
self.test_db_util.ga_refresh(installed_filtering_repository)
strings_displayed = [
"Missing repository",
"filtering",
"freebayes_0040",
"user1",
"Galaxy's freebayes tool for test 0040",
]
self.display_installed_repository_manage_page(
installed_freebayes_repository, strings_displayed=strings_displayed
)
self.check_galaxy_repository_db_status(filtering_repository_name, common.test_user_1_name, "Deactivated")
[docs] def test_0035_reactivate_filtering_repository(self):
"""Reinstall filtering into 'filtering' tool panel section."""
installed_filtering_repository = self.test_db_util.get_installed_repository_by_name_owner(
freebayes_repository_name, common.test_user_1_name
)
self.reinstall_repository(
installed_filtering_repository,
install_tool_dependencies=False,
install_repository_dependencies=True,
new_tool_panel_section_label="filtering",
no_changes=False,
)
[docs] def test_0040_uninstall_freebayes_repository(self):
"""Deactivate freebayes, verify tool panel section and missing repository dependency."""
installed_freebayes_repository = self.test_db_util.get_installed_repository_by_name_owner(
freebayes_repository_name, common.test_user_1_name
)
installed_filtering_repository = self.test_db_util.get_installed_repository_by_name_owner(
filtering_repository_name, common.test_user_1_name
)
self.display_installed_repository_manage_page(installed_freebayes_repository)
self.display_installed_repository_manage_page(installed_filtering_repository)
self.deactivate_repository(installed_freebayes_repository)
self.test_db_util.ga_refresh(installed_freebayes_repository)
strings_displayed = [
"Missing repository",
"freebayes",
"filtering_0040",
"user1",
"Galaxy's filtering tool for test 0040",
]
self.display_installed_repository_manage_page(
installed_filtering_repository, strings_displayed=strings_displayed
)
self.check_galaxy_repository_db_status("freebayes_0040", "user1", "Deactivated")
[docs] def test_0045_deactivate_filtering_repository(self):
"""Deactivate filtering, verify tool panel section."""
installed_filtering_repository = self.test_db_util.get_installed_repository_by_name_owner(
filtering_repository_name, common.test_user_1_name
)
installed_freebayes_repository = self.test_db_util.get_installed_repository_by_name_owner(
freebayes_repository_name, common.test_user_1_name
)
self.display_installed_repository_manage_page(installed_freebayes_repository)
self.display_installed_repository_manage_page(installed_filtering_repository)
self.deactivate_repository(installed_filtering_repository)
self.test_db_util.ga_refresh(installed_filtering_repository)
strings_displayed = [
"Missing repository",
"filtering",
"freebayes_0040",
"user1",
"Galaxy's freebayes tool for test 0040",
]
self.display_installed_repository_manage_page(
installed_freebayes_repository, strings_displayed=strings_displayed
)
self.check_galaxy_repository_db_status(filtering_repository_name, common.test_user_1_name, "Deactivated")