From d2d2b437372f7d96329c24f74ac2b2c4ccdef96d Mon Sep 17 00:00:00 2001 From: Anthony Bretaudeau Date: Tue, 28 Jun 2016 19:58:18 +0200 Subject: [PATCH 1/5] fix UnboundLocalError --- lib/galaxy/tools/parameters/basic.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/galaxy/tools/parameters/basic.py b/lib/galaxy/tools/parameters/basic.py index a918aecd126..5004e0f2d0d 100644 --- a/lib/galaxy/tools/parameters/basic.py +++ b/lib/galaxy/tools/parameters/basic.py @@ -2152,6 +2152,7 @@ class DataCollectionToolParameter( BaseDataToolParameter ): return field def from_json( self, value, trans, other_values={} ): + rval = None if trans.workflow_building_mode is workflow_building_modes.ENABLED: return None if not value and not self.optional: From 1d228d9a5c79f90e4b015c768f3841b132a4482b Mon Sep 17 00:00:00 2001 From: Anthony Bretaudeau Date: Tue, 28 Jun 2016 20:00:25 +0200 Subject: [PATCH 2/5] add test case for galaxyproject/tools-iuc/issues/857 --- test/api/test_tools.py | 35 +++++++++++++++++++ .../identifier_multiple_in_conditional.xml | 28 +++++++++++++++ test/functional/tools/samples_tool_conf.xml | 1 + 3 files changed, 64 insertions(+) create mode 100644 test/functional/tools/identifier_multiple_in_conditional.xml diff --git a/test/api/test_tools.py b/test/api/test_tools.py index 5f37d07db05..535dc56f182 100644 --- a/test/api/test_tools.py +++ b/test/api/test_tools.py @@ -1,5 +1,6 @@ # Test tools API. from base import api +import json from operator import itemgetter from .helpers import DatasetPopulator from .helpers import DatasetCollectionPopulator @@ -805,6 +806,40 @@ class ToolsTestCase( api.ApiTestCase ): output1_content = self.dataset_populator.get_history_dataset_content( history_id, dataset=output1 ) self.assertEquals( output1_content.strip(), "Pasted Entry\nPasted Entry" ) + @skip_without_tool( "identifier_multiple_in_conditional" ) + def test_identifier_with_multiple_normal_datasets_in_conditional( self ): + history_id = self.dataset_populator.new_history() + + element_identifiers = self.dataset_collection_populator.list_identifiers( history_id ) + + payload = dict( + instance_type="history", + history_id=history_id, + element_identifiers=json.dumps(element_identifiers), + collection_type="list", + ) + + create_response = self._post( "dataset_collections", payload ) + dataset_collection = create_response.json() + + inputs = { + "options|choice": "one", + "options|input1": {'src': 'hdca', 'id': dataset_collection['id']}, + } + + self.dataset_populator.wait_for_history( history_id, assert_ok=True ) + create_response = self._run( "identifier_multiple_in_conditional", history_id, inputs ) + self._assert_status_code_is( create_response, 200 ) + create = create_response.json() + outputs = create[ 'outputs' ] + jobs = create[ 'jobs' ] + implicit_collections = create[ 'implicit_collections' ] + self.assertEquals( len( jobs ), 1 ) + self.assertEquals( len( outputs ), 1 ) + output1 = outputs[ 0 ] + output1_content = self.dataset_populator.get_history_dataset_content( history_id, dataset=output1 ) + self.assertEquals( output1_content.strip(), '\n'.join([d['name'] for d in element_identifiers]) ) + @skip_without_tool( "cat1" ) def test_map_over_nested_collections( self ): history_id = self.dataset_populator.new_history() diff --git a/test/functional/tools/identifier_multiple_in_conditional.xml b/test/functional/tools/identifier_multiple_in_conditional.xml new file mode 100644 index 00000000000..ff02e284055 --- /dev/null +++ b/test/functional/tools/identifier_multiple_in_conditional.xml @@ -0,0 +1,28 @@ + + + #if $options.choice == "one": + #for $input in $options.input1: + echo '$input.element_identifier' >> 'output1'; + #end for + #end if + + + + + + + + + + + + + + + + + + + + + diff --git a/test/functional/tools/samples_tool_conf.xml b/test/functional/tools/samples_tool_conf.xml index 5ec9446d0f2..16ed1fecf64 100644 --- a/test/functional/tools/samples_tool_conf.xml +++ b/test/functional/tools/samples_tool_conf.xml @@ -64,6 +64,7 @@ + From fb116f5715d9cd291d2fdf956b5a3a91b3e84296 Mon Sep 17 00:00:00 2001 From: Anthony Bretaudeau Date: Wed, 29 Jun 2016 14:04:43 +0200 Subject: [PATCH 3/5] fix missing element_identifier with data_collection input parama --- lib/galaxy/tools/wrappers.py | 4 +-- test/api/test_tools.py | 9 +++--- .../tools/identifier_conditional.xml | 15 ++++++++++ .../identifier_multiple_in_conditional.xml | 28 ------------------- test/functional/tools/samples_tool_conf.xml | 2 +- 5 files changed, 22 insertions(+), 36 deletions(-) create mode 100644 test/functional/tools/identifier_conditional.xml delete mode 100644 test/functional/tools/identifier_multiple_in_conditional.xml diff --git a/lib/galaxy/tools/wrappers.py b/lib/galaxy/tools/wrappers.py index 0acf136163a..885702d04b3 100644 --- a/lib/galaxy/tools/wrappers.py +++ b/lib/galaxy/tools/wrappers.py @@ -307,7 +307,7 @@ class DatasetListWrapper( list, ToolParameterValueWrapper, HasDatasets ): element = dataset dataset = element.dataset_instance kwargs["identifier"] = element.element_identifier - return self._dataset_wrapper( dataset, dataset_paths, **kwargs ) + return self._dataset_wrapper( dataset, dataset_paths, identifier = element_identifier, **kwargs ) list.__init__( self, map( to_wrapper, datasets ) ) self.job_working_directory = job_working_directory @@ -365,7 +365,7 @@ class DatasetCollectionWrapper( ToolParameterValueWrapper, HasDatasets ): if dataset_collection_element.is_collection: element_wrapper = DatasetCollectionWrapper(job_working_directory, dataset_collection_element, dataset_paths, **kwargs ) else: - element_wrapper = self._dataset_wrapper( element_object, dataset_paths, **kwargs) + element_wrapper = self._dataset_wrapper( element_object, dataset_paths, identifier=element_identifier, **kwargs) element_instances[element_identifier] = element_wrapper element_instance_list.append( element_wrapper ) diff --git a/test/api/test_tools.py b/test/api/test_tools.py index 535dc56f182..7c0f68b1d2c 100644 --- a/test/api/test_tools.py +++ b/test/api/test_tools.py @@ -806,8 +806,8 @@ class ToolsTestCase( api.ApiTestCase ): output1_content = self.dataset_populator.get_history_dataset_content( history_id, dataset=output1 ) self.assertEquals( output1_content.strip(), "Pasted Entry\nPasted Entry" ) - @skip_without_tool( "identifier_multiple_in_conditional" ) - def test_identifier_with_multiple_normal_datasets_in_conditional( self ): + @skip_without_tool( "identifier_collection" ) + def test_identifier_with_data_collection( self ): history_id = self.dataset_populator.new_history() element_identifiers = self.dataset_collection_populator.list_identifiers( history_id ) @@ -823,12 +823,11 @@ class ToolsTestCase( api.ApiTestCase ): dataset_collection = create_response.json() inputs = { - "options|choice": "one", - "options|input1": {'src': 'hdca', 'id': dataset_collection['id']}, + "input1": {'src': 'hdca', 'id': dataset_collection['id']}, } self.dataset_populator.wait_for_history( history_id, assert_ok=True ) - create_response = self._run( "identifier_multiple_in_conditional", history_id, inputs ) + create_response = self._run( "identifier_conditional", history_id, inputs ) self._assert_status_code_is( create_response, 200 ) create = create_response.json() outputs = create[ 'outputs' ] diff --git a/test/functional/tools/identifier_conditional.xml b/test/functional/tools/identifier_conditional.xml new file mode 100644 index 00000000000..ff548d679f6 --- /dev/null +++ b/test/functional/tools/identifier_conditional.xml @@ -0,0 +1,15 @@ + + + #for $input in $input1: + echo '$input.element_identifier' >> 'output1'; + #end for + + + + + + + + + + diff --git a/test/functional/tools/identifier_multiple_in_conditional.xml b/test/functional/tools/identifier_multiple_in_conditional.xml deleted file mode 100644 index ff02e284055..00000000000 --- a/test/functional/tools/identifier_multiple_in_conditional.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - #if $options.choice == "one": - #for $input in $options.input1: - echo '$input.element_identifier' >> 'output1'; - #end for - #end if - - - - - - - - - - - - - - - - - - - - - diff --git a/test/functional/tools/samples_tool_conf.xml b/test/functional/tools/samples_tool_conf.xml index 16ed1fecf64..112aa9da8c8 100644 --- a/test/functional/tools/samples_tool_conf.xml +++ b/test/functional/tools/samples_tool_conf.xml @@ -64,7 +64,7 @@ - + From cf29b1dcd60c8dcc39cfc7e507572f08ff86347d Mon Sep 17 00:00:00 2001 From: Anthony Bretaudeau Date: Wed, 29 Jun 2016 15:20:22 +0200 Subject: [PATCH 4/5] apply comments --- lib/galaxy/tools/wrappers.py | 2 +- test/api/test_tools.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/galaxy/tools/wrappers.py b/lib/galaxy/tools/wrappers.py index 885702d04b3..6d203ee3860 100644 --- a/lib/galaxy/tools/wrappers.py +++ b/lib/galaxy/tools/wrappers.py @@ -307,7 +307,7 @@ class DatasetListWrapper( list, ToolParameterValueWrapper, HasDatasets ): element = dataset dataset = element.dataset_instance kwargs["identifier"] = element.element_identifier - return self._dataset_wrapper( dataset, dataset_paths, identifier = element_identifier, **kwargs ) + return self._dataset_wrapper( dataset, dataset_paths, **kwargs ) list.__init__( self, map( to_wrapper, datasets ) ) self.job_working_directory = job_working_directory diff --git a/test/api/test_tools.py b/test/api/test_tools.py index 7c0f68b1d2c..eb3a0808525 100644 --- a/test/api/test_tools.py +++ b/test/api/test_tools.py @@ -832,7 +832,6 @@ class ToolsTestCase( api.ApiTestCase ): create = create_response.json() outputs = create[ 'outputs' ] jobs = create[ 'jobs' ] - implicit_collections = create[ 'implicit_collections' ] self.assertEquals( len( jobs ), 1 ) self.assertEquals( len( outputs ), 1 ) output1 = outputs[ 0 ] From 706a9bfb237679658d57cb5c20592ac25b91f364 Mon Sep 17 00:00:00 2001 From: Anthony Bretaudeau Date: Thu, 7 Jul 2016 17:10:03 +0200 Subject: [PATCH 5/5] cleanup test tool --- test/api/test_tools.py | 2 +- .../{identifier_conditional.xml => identifier_collection.xml} | 4 ++-- test/functional/tools/samples_tool_conf.xml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename test/functional/tools/{identifier_conditional.xml => identifier_collection.xml} (75%) diff --git a/test/api/test_tools.py b/test/api/test_tools.py index eb3a0808525..82e310b06a9 100644 --- a/test/api/test_tools.py +++ b/test/api/test_tools.py @@ -827,7 +827,7 @@ class ToolsTestCase( api.ApiTestCase ): } self.dataset_populator.wait_for_history( history_id, assert_ok=True ) - create_response = self._run( "identifier_conditional", history_id, inputs ) + create_response = self._run( "identifier_collection", history_id, inputs ) self._assert_status_code_is( create_response, 200 ) create = create_response.json() outputs = create[ 'outputs' ] diff --git a/test/functional/tools/identifier_conditional.xml b/test/functional/tools/identifier_collection.xml similarity index 75% rename from test/functional/tools/identifier_conditional.xml rename to test/functional/tools/identifier_collection.xml index ff548d679f6..222302ebfce 100644 --- a/test/functional/tools/identifier_conditional.xml +++ b/test/functional/tools/identifier_collection.xml @@ -1,11 +1,11 @@ - + #for $input in $input1: echo '$input.element_identifier' >> 'output1'; #end for - + diff --git a/test/functional/tools/samples_tool_conf.xml b/test/functional/tools/samples_tool_conf.xml index 112aa9da8c8..035abf68203 100644 --- a/test/functional/tools/samples_tool_conf.xml +++ b/test/functional/tools/samples_tool_conf.xml @@ -64,7 +64,7 @@ - +