Skip to content

Commit 8852f07

Browse files
committed
Progress toward exercising less of the tool shed upload API.
So we can kill it.
1 parent 7ba099a commit 8852f07

File tree

94 files changed

+5666
-2058
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+5666
-2058
lines changed

.ci/flake8_ignorelist.txt

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ database
1111
doc/build
1212
eggs
1313
lib/galaxy/web/proxy/js/node_modules
14+
lib/tool_shed/test/test_data/repos
1415
static/maps
1516
static/scripts
1617
test/functional/tools/cwl_tools/v1.?/

.flake8

+1
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@
77
# W503 is line breaks before binary operators, which has been reversed in PEP 8.
88
# D** are docstring linting - which we mostly ignore except D302. (Hopefully we will solve more over time).
99
ignore = B008,E203,E402,E501,W503,D100,D101,D102,D103,D104,D105,D106,D107,D200,D201,D202,D204,D205,D206,D207,D208,D209,D210,D211,D300,D301,D400,D401,D402,D403,D412,D413
10+
exclude = lib/tool_shed/test/test_data/repos

.isort.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ profile=black
1010
reverse_relative=true
1111
skip_gitignore=true
1212
# Make isort run faster by skipping database
13-
skip_glob=database/*
13+
skip_glob=database/*,lib/tool_shed/test/test_data/repos/*
1414
src_paths=lib

lib/tool_shed/test/base/api.py

+13-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class ShedBaseTestCase(DrivenFunctionalTestCase):
3535
@property
3636
def populator(self) -> ToolShedPopulator:
3737
if self._populator is None:
38-
self._populator = ToolShedPopulator(self.admin_api_interactor, self.api_interactor)
38+
self._populator = self._get_populator(self.api_interactor)
3939
return self._populator
4040

4141
@property
@@ -50,7 +50,18 @@ def api_interactor(self) -> ShedApiInteractor:
5050
password = "testpassword"
5151
ensure_user_with_email(self.admin_api_interactor, email, password)
5252
user_api_key = self._api_key(email, password)
53-
return ShedApiInteractor(self.url, user_api_key)
53+
return self._api_interactor(user_api_key)
54+
55+
def _api_interactor_by_credentials(self, email: str, password: str) -> ShedApiInteractor:
56+
ensure_user_with_email(self.admin_api_interactor, email, password)
57+
user_api_key = self._api_key(email, password)
58+
return self._api_interactor(user_api_key)
59+
60+
def _api_interactor(self, api_key: str) -> ShedApiInteractor:
61+
return ShedApiInteractor(self.url, api_key)
62+
63+
def _get_populator(self, user_api_interactor) -> ToolShedPopulator:
64+
return ToolShedPopulator(self.admin_api_interactor, user_api_interactor)
5465

5566
def _api_key(self, email: str, password: str) -> str:
5667
headers = baseauth_headers(email, password)

lib/tool_shed/test/base/populators.py

+43-12
Original file line numberDiff line numberDiff line change
@@ -81,21 +81,52 @@ def __init__(self, admin_api_interactor: ShedApiInteractor, api_interactor: Shed
8181
self._admin_api_interactor = admin_api_interactor
8282
self._api_interactor = api_interactor
8383

84-
def setup_test_data_repo(self, test_data_path: str) -> Repository:
85-
prefix = test_data_path.replace("_", "")
86-
category_id = self.new_category(prefix=prefix).id
87-
repository = self.new_repository(category_id, prefix=prefix)
88-
repository_id = repository.id
84+
def setup_bismark_repo(self, repository_id: HasRepositoryId, end: Optional[int] = None):
85+
self.setup_test_data_repo_by_id("bismark", repository_id, assert_ok=False, end=end)
86+
87+
def setup_test_data_repo_by_id(
88+
self,
89+
test_data_path: str,
90+
repository_id: Optional[HasRepositoryId] = None,
91+
assert_ok=True,
92+
start: int = 0,
93+
end: Optional[int] = None,
94+
) -> HasRepositoryId:
95+
if repository_id is None:
96+
prefix = test_data_path.replace("_", "")
97+
category_id = self.new_category(prefix=prefix).id
98+
repository = self.new_repository(category_id, prefix=prefix)
99+
repository_id = repository.id
100+
89101
assert repository_id
90102

91103
for index, repo_tar in enumerate(repo_tars(test_data_path)):
104+
if index < start:
105+
continue
106+
107+
if end and index >= end:
108+
break
109+
92110
commit_message = f"Updating {test_data_path} with index {index} with tar {repo_tar}"
93-
response = self.upload_revision(
94-
repository_id,
95-
repo_tar,
96-
commit_message=commit_message,
97-
)
98-
assert response.is_ok
111+
response = self.upload_revision_raw(repository_id, repo_tar, commit_message)
112+
if assert_ok:
113+
api_asserts.assert_status_code_is_ok(response)
114+
assert RepositoryUpdate(__root__=response.json()).is_ok
115+
return repository_id
116+
117+
def setup_test_data_repo(
118+
self,
119+
test_data_path: str,
120+
repository: Optional[Repository] = None,
121+
assert_ok=True,
122+
start: int = 0,
123+
end: Optional[int] = None,
124+
) -> Repository:
125+
if repository is None:
126+
prefix = test_data_path.replace("_", "")
127+
category_id = self.new_category(prefix=prefix).id
128+
repository = self.new_repository(category_id, prefix=prefix)
129+
self.setup_test_data_repo_by_id(test_data_path, repository, assert_ok=assert_ok, start=start, end=end)
99130
return repository
100131

101132
def setup_column_maker_repo(self, prefix=DEFAULT_PREFIX) -> Repository:
@@ -152,7 +183,7 @@ def upload_revision_raw(
152183
def upload_revision(
153184
self, repository: HasRepositoryId, path: Traversable, commit_message: str = DEFAULT_COMMIT_MESSAGE
154185
):
155-
response = self.upload_revision_raw(repository, path, commit_message)
186+
response = self.upload_revision_raw(repository, path, commit_message=commit_message)
156187
if response.status_code != 200:
157188
response_json = None
158189
err_msg = None

0 commit comments

Comments
 (0)