diff --git a/lib/galaxy/tools/parameters/basic.py b/lib/galaxy/tools/parameters/basic.py index bf966644e47..690bf4039b1 100644 --- a/lib/galaxy/tools/parameters/basic.py +++ b/lib/galaxy/tools/parameters/basic.py @@ -1739,7 +1739,13 @@ class DataToolParameter( ToolParameter ): if isinstance( value, str ) and value.find( "," ) > 0: value = [ int( value_part ) for value_part in value.split( "," ) ] if isinstance( value, list ): - rval = [ trans.sa_session.query( trans.app.model.HistoryDatasetAssociation ).get( v ) for v in value ] + rval = [] + for single_value in value: + if isinstance( single_value, dict ): + assert single_value['src'] == 'hda' + rval.append( trans.sa_session.query( trans.app.model.HistoryDatasetAssociation ).get( trans.app.security.decode_id( single_value[ 'id' ] ) ) ) + else: + rval.append( trans.sa_session.query( trans.app.model.HistoryDatasetAssociation ).get( single_value ) ) elif isinstance( value, trans.app.model.HistoryDatasetAssociation ): rval = value elif isinstance( value, dict ) and 'src' in value and 'id' in value: diff --git a/lib/galaxy/tools/test.py b/lib/galaxy/tools/test.py index 73939003932..0c6eb3379f3 100644 --- a/lib/galaxy/tools/test.py +++ b/lib/galaxy/tools/test.py @@ -179,10 +179,12 @@ class ToolTestBuilder( object ): raw_input = context.extract_value( raw_inputs ) if raw_input: (name, param_value, param_extra) = raw_input + param_value = self.__split_if_str( param_value ) if isinstance( value, basic.DataToolParameter ): - processed_value = [ self.__add_uploaded_dataset( context.for_state(), param_value, param_extra, value ) ] + if not isinstance(param_value, list): + param_value = [ param_value ] + processed_value = [ self.__add_uploaded_dataset( context.for_state(), v, param_extra, value ) for v in param_value ] else: - param_value = self.__split_if_str( param_value ) processed_value = param_value expanded_inputs[ context.for_state() ] = processed_value return expanded_inputs @@ -309,7 +311,7 @@ def __parse_output_elem( output_elem ): for metadata_elem in output_elem.findall( 'metadata' ): metadata[ metadata_elem.get('name') ] = metadata_elem.get( 'value' ) if not (assert_list or file or extra_files or metadata): - raise Exception( "Test output defines not checks (e.g. must have a 'file' check against, assertions to check, etc...)") + raise Exception( "Test output defines nothting to check (e.g. must have a 'file' check against, assertions to check, etc...)") attributes['assert_list'] = assert_list attributes['extra_files'] = extra_files attributes['metadata'] = metadata diff --git a/test/base/interactor.py b/test/base/interactor.py index c67ef365943..f19be62c443 100644 --- a/test/base/interactor.py +++ b/test/base/interactor.py @@ -133,9 +133,13 @@ class GalaxyInteractorApi( object ): inputs_tree = testdef.inputs.copy() for key, value in inputs_tree.iteritems(): values = [value] if not isinstance(value, list) else value + new_values = [] for value in values: if value in self.uploads: - inputs_tree[ key ] = self.uploads[ value ] + new_values.append( self.uploads[ value ] ) + else: + new_values.append( value ) + inputs_tree[ key ] = new_values # # HACK: Flatten single-value lists. Required when using expand_grouping for key, value in inputs_tree.iteritems(): diff --git a/test/functional/tools/multi_data_param.xml b/test/functional/tools/multi_data_param.xml index 57f94b29c10..9ffe8bbabe3 100644 --- a/test/functional/tools/multi_data_param.xml +++ b/test/functional/tools/multi_data_param.xml @@ -18,13 +18,23 @@ - - + - -->