mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-10-25 10:24:38 +08:00
Merge branch 'release_21.05' into dev
This commit is contained in:
@@ -1900,13 +1900,12 @@ class DataToolParameter(BaseDataToolParameter):
|
||||
rval.append(trans.sa_session.query(trans.app.model.LibraryDatasetDatasetAssociation).get(decoded_id))
|
||||
else:
|
||||
raise ValueError(f"Unknown input source {single_value['src']} passed to job submission API.")
|
||||
elif isinstance(single_value, trans.app.model.HistoryDatasetCollectionAssociation):
|
||||
rval.append(single_value)
|
||||
elif isinstance(single_value, trans.app.model.DatasetCollectionElement):
|
||||
rval.append(single_value)
|
||||
elif isinstance(single_value, trans.app.model.HistoryDatasetAssociation):
|
||||
rval.append(single_value)
|
||||
elif isinstance(single_value, trans.app.model.LibraryDatasetDatasetAssociation):
|
||||
elif isinstance(single_value, (
|
||||
trans.app.model.HistoryDatasetCollectionAssociation,
|
||||
trans.app.model.DatasetCollectionElement,
|
||||
trans.app.model.HistoryDatasetAssociation,
|
||||
trans.app.model.LibraryDatasetDatasetAssociation
|
||||
)):
|
||||
rval.append(single_value)
|
||||
else:
|
||||
if len(str(single_value)) == 16:
|
||||
@@ -1919,7 +1918,7 @@ class DataToolParameter(BaseDataToolParameter):
|
||||
for val in rval:
|
||||
if not isinstance(val, trans.app.model.HistoryDatasetCollectionAssociation):
|
||||
raise ParameterValueError("if collections are supplied to multiple data input parameter, only collections may be used", self.name)
|
||||
elif isinstance(value, trans.app.model.HistoryDatasetAssociation):
|
||||
elif isinstance(value, (trans.app.model.HistoryDatasetAssociation, trans.app.model.LibraryDatasetDatasetAssociation)):
|
||||
rval = value
|
||||
elif isinstance(value, dict) and 'src' in value and 'id' in value:
|
||||
if value['src'] == 'hda':
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import json
|
||||
import time
|
||||
import unittest
|
||||
|
||||
from galaxy_test.base.populators import (
|
||||
@@ -340,44 +339,43 @@ class LibrariesApiTestCase(ApiTestCase):
|
||||
container_update_time = container_fetch_response.json()['folder_contents'][0]['update_time']
|
||||
assert dataset_update_time == container_update_time, container_fetch_response
|
||||
|
||||
def test_update_dataset_in_folder(self):
|
||||
ld = self._create_dataset_in_folder_in_library("ForUpdateDataset", wait=True)
|
||||
data = {'name': 'updated_name', 'file_ext': 'fastq', 'misc_info': 'updated_info', 'genome_build': 'updated_genome_build'}
|
||||
create_response = self._patch(f"libraries/datasets/{ld.json()['id']}", data=data)
|
||||
def _patch_library_dataset(self, library_dataset_id, data):
|
||||
create_response = self._patch(f"libraries/datasets/{library_dataset_id}", data=data)
|
||||
self._assert_status_code_is(create_response, 200)
|
||||
self._assert_has_keys(create_response.json(), "name", "file_ext", "misc_info", "genome_build")
|
||||
ld = create_response.json()
|
||||
library_id = ld['parent_library_id']
|
||||
return self.library_populator.wait_on_library_dataset(library={'id': library_id}, dataset=ld)
|
||||
|
||||
def test_update_dataset_in_folder(self):
|
||||
ld = self._create_dataset_in_folder_in_library("ForUpdateDataset", content=">seq\nATGC", wait=True).json()
|
||||
data = {'name': 'updated_name', 'file_ext': 'fasta', 'misc_info': 'updated_info', 'genome_build': 'updated_genome_build'}
|
||||
ld_updated = self._patch_library_dataset(ld['id'], data)
|
||||
self._assert_has_keys(ld_updated, "name", "file_ext", "misc_info", "genome_build")
|
||||
|
||||
def test_update_dataset_tags(self):
|
||||
ld = self._create_dataset_in_folder_in_library("ForTagtestDataset")
|
||||
ld = self._create_dataset_in_folder_in_library("ForTagtestDataset", wait=True).json()
|
||||
data = {"tags": ["#Lancelot", "name:Holy Grail", "blue"]}
|
||||
create_response = self._patch(f"libraries/datasets/{ld.json()['id']}", data=data)
|
||||
self._assert_status_code_is(create_response, 200)
|
||||
self._assert_has_keys(create_response.json(), "tags")
|
||||
assert create_response.json()["tags"] == "name:Lancelot, name:HolyGrail, blue"
|
||||
ld_updated = self._patch_library_dataset(ld['id'], data)
|
||||
self._assert_has_keys(ld_updated, "tags")
|
||||
assert ld_updated["tags"] == "name:Lancelot, name:HolyGrail, blue"
|
||||
|
||||
def test_invalid_update_dataset_in_folder(self):
|
||||
ld = self._create_dataset_in_folder_in_library("ForInvalidUpdateDataset")
|
||||
ld = self._create_dataset_in_folder_in_library("ForInvalidUpdateDataset", wait=True).json()
|
||||
data = {'file_ext': 'nonexisting_type'}
|
||||
create_response = self._patch(f"libraries/datasets/{ld.json()['id']}", data=data)
|
||||
create_response = self._patch(f"libraries/datasets/{ld['id']}", data=data)
|
||||
self._assert_status_code_is(create_response, 400)
|
||||
assert 'This Galaxy does not recognize the datatype of:' in create_response.json()['err_msg']
|
||||
|
||||
def test_detect_datatype_of_dataset_in_folder(self):
|
||||
ld = self._create_dataset_in_folder_in_library("ForDetectDataset")
|
||||
# Wait for metadata job to finish.
|
||||
time.sleep(2)
|
||||
ld = self._create_dataset_in_folder_in_library("ForDetectDataset", wait=True).json()
|
||||
data = {'file_ext': 'data'}
|
||||
create_response = self._patch(f"libraries/datasets/{ld.json()['id']}", data=data)
|
||||
self._assert_status_code_is(create_response, 200)
|
||||
self._assert_has_keys(create_response.json(), "file_ext")
|
||||
assert create_response.json()["file_ext"] == "data"
|
||||
# Wait for metadata job to finish.
|
||||
time.sleep(2)
|
||||
ld_updated = self._patch_library_dataset(ld['id'], data)
|
||||
self._assert_has_keys(ld_updated, "file_ext")
|
||||
assert ld_updated["file_ext"] == "data"
|
||||
data = {'file_ext': 'auto'}
|
||||
create_response = self._patch(f"libraries/datasets/{ld.json()['id']}", data=data)
|
||||
self._assert_status_code_is(create_response, 200)
|
||||
self._assert_has_keys(create_response.json(), "file_ext")
|
||||
assert create_response.json()["file_ext"] == "txt"
|
||||
ld_updated = self._patch_library_dataset(ld['id'], data)
|
||||
self._assert_has_keys(ld_updated, "file_ext")
|
||||
assert ld_updated["file_ext"] == "txt"
|
||||
|
||||
def test_ldda_collection_import_to_history(self):
|
||||
self._import_to_history(visible=True)
|
||||
@@ -482,13 +480,13 @@ class LibrariesApiTestCase(ApiTestCase):
|
||||
)
|
||||
return self._post(f"folders/{containing_folder_id}", data=create_data)
|
||||
|
||||
def _create_dataset_in_folder_in_library(self, library_name, wait=False):
|
||||
def _create_dataset_in_folder_in_library(self, library_name, content="1 2 3", wait=False):
|
||||
library = self.library_populator.new_private_library(library_name)
|
||||
folder_response = self._create_folder(library)
|
||||
self._assert_status_code_is(folder_response, 200)
|
||||
folder_id = folder_response.json()[0]['id']
|
||||
history_id = self.dataset_populator.new_history()
|
||||
hda_id = self.dataset_populator.new_dataset(history_id, content="1 2 3", wait=wait)['id']
|
||||
hda_id = self.dataset_populator.new_dataset(history_id, content=content, wait=wait)['id']
|
||||
payload = {'from_hda_id': hda_id, 'create_type': 'file', 'folder_id': folder_id}
|
||||
ld = self._post(f"libraries/{folder_id}/contents", payload)
|
||||
return ld
|
||||
|
||||
@@ -1742,7 +1742,7 @@ def wait_on_state(state_func: Callable, desc="state", skip_states=None, ok_state
|
||||
return state
|
||||
|
||||
if skip_states is None:
|
||||
skip_states = ["running", "queued", "new", "ready", "stop", "stopped"]
|
||||
skip_states = ["running", "queued", "new", "ready", "stop", "stopped", "setting_metadata"]
|
||||
if ok_states is None:
|
||||
ok_states = ["ok", "scheduled"]
|
||||
try:
|
||||
|
||||
@@ -6,7 +6,13 @@ History
|
||||
.. to_doc
|
||||
|
||||
---------------------
|
||||
21.1.2.dev0
|
||||
21.1.3.dev0
|
||||
---------------------
|
||||
|
||||
|
||||
|
||||
---------------------
|
||||
21.1.2 (2021-06-23)
|
||||
---------------------
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user