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 @@
-
-
+
- -->