Files
galaxy/test/unit/tools/conftest.py
T

78 lines
2.5 KiB
Python

from tempfile import mkdtemp
import pytest
from galaxy.model import tool_shed_install
from galaxy.model.tool_shed_install import mapping
from galaxy.tools.cache import ToolShedRepositoryCache
from galaxy.tools.toolbox.base import ToolConfRepository
from galaxy.util import bunch
@pytest.fixture
def mock_app():
app = bunch.Bunch()
app.install_model = mapping.init("sqlite:///:memory:", create_tables=True)
return app
@pytest.fixture
def tool_shed_repository_cache(mock_app):
tool_shed_repository_cache = ToolShedRepositoryCache(app=mock_app)
return tool_shed_repository_cache
@pytest.fixture
def repos(mock_app):
repositories = [create_repo(mock_app, changeset=i + 1, installed_changeset=i) for i in range(10)]
mock_app.install_model.context.flush()
return repositories
@pytest.fixture
def tool_conf_repos(tool_shed_repository_cache):
for i in range(10, 20):
repo = ToolConfRepository(
'github.com',
'example',
'galaxyproject',
str(i),
str(i + 1),
None,
repository_path=mkdtemp(prefix='repository_path'),
tool_path='../shed_tools',
)
tool_shed_repository_cache.add_local_repository(repo)
return tool_shed_repository_cache.local_repositories
def create_repo(app, changeset, installed_changeset, config_filename=None):
metadata = {
'tools': [{
'add_to_tool_panel': False, # to have repository.includes_tools_for_display_in_tool_panel=False in InstalledRepositoryManager.activate_repository()
'guid': "github.com/galaxyproject/example/test_tool/0.%s" % changeset,
'tool_config': 'tool.xml'
}],
}
if config_filename:
metadata['shed_config_filename'] = config_filename
repository = tool_shed_install.ToolShedRepository(metadata=metadata)
repository.tool_shed = "github.com"
repository.owner = "galaxyproject"
repository.name = "example"
repository.changeset_revision = str(changeset)
repository.installed_changeset_revision = str(installed_changeset)
repository.deleted = False
repository.uninstalled = False
app.install_model.context.add(repository)
app.install_model.context.flush()
tool_dependency = tool_shed_install.ToolDependency(
name='Name',
version='100',
type='package',
status='ok',
tool_shed_repository_id=repository.id,
)
app.install_model.context.add(tool_dependency)
return repository