diff --git a/lib/galaxy/dataset_collections/subcollections.py b/lib/galaxy/dataset_collections/subcollections.py
index 3a536a34da4..99bd289e28b 100644
--- a/lib/galaxy/dataset_collections/subcollections.py
+++ b/lib/galaxy/dataset_collections/subcollections.py
@@ -20,6 +20,6 @@ def _split_dataset_collection(dataset_collection, collection_type):
if child_collection.collection_type == collection_type:
split_elements.append(element)
else:
- split_elements.extend(_split_dataset_collection(element.child_collection, element.child_collection.collection_type))
+ split_elements.extend(_split_dataset_collection(element.child_collection, collection_type))
return split_elements
diff --git a/lib/galaxy/tools/parser/output_actions.py b/lib/galaxy/tools/parser/output_actions.py
index 35798452b5a..475eecebdd2 100644
--- a/lib/galaxy/tools/parser/output_actions.py
+++ b/lib/galaxy/tools/parser/output_actions.py
@@ -243,7 +243,10 @@ class FromParamToolOutputActionOption(ToolOutputActionOption):
# if this is an HDCA for instance let reverse.ext grab
# the reverse element and then continue for loop to grab
# dataset extension
- value = value.collection[attr_name].element_object
+ try:
+ value = value.collection[attr_name].element_object
+ except KeyError:
+ value = value.child_collection[attr_name].element_object
elif hasattr(value, "collection") and value in COLLECTION_ATTRIBUTES:
value = getattr(value.collection, attr_name)
else:
diff --git a/run.sh b/run.sh
index 0210375afac..62fc61c188e 100755
--- a/run.sh
+++ b/run.sh
@@ -59,12 +59,12 @@ find_server "${GALAXY_CONFIG_FILE:-none}" galaxy
if [ "$run_server" = "python" -a -n "$GALAXY_RUN_ALL" ]; then
servers=$(sed -n 's/^\[server:\(.*\)\]/\1/ p' "$GALAXY_CONFIG_FILE" | xargs echo)
if [ -z "$stop_daemon_arg_set" -a -z "$daemon_or_restart_arg_set" ]; then
- echo "ERROR: \$GALAXY_RUN_ALL cannot be used without the '--daemon', '--stop-daemon' or 'restart' arguments to run.sh"
+ echo "ERROR: \$GALAXY_RUN_ALL cannot be used without the '--daemon', '--stop-daemon', 'restart', 'start' or 'stop' arguments to run.sh"
exit 1
fi
for server in $servers; do
echo "Executing: python $server_args --server-name=\"$server\" --pid-file=\"$server.pid\" --log-file=\"$server.log\""
- python $server_args --server-name="$server" --pid-file="$server.pid" --log-file="$server.log"
+ eval python $server_args --server-name="$server" --pid-file="$server.pid" --log-file="$server.log"
if [ -n "$wait_arg_set" -a -n "$daemon_or_restart_arg_set" ]; then
while true; do
sleep 1
diff --git a/test/api/test_tools.py b/test/api/test_tools.py
index d43793fec13..bcd454e6c75 100644
--- a/test/api/test_tools.py
+++ b/test/api/test_tools.py
@@ -815,6 +815,23 @@ class ToolsTestCase(api.ApiTestCase):
assert output1_details["file_ext"] == "txt" if (use_action == "do") else "data"
assert output2_details["file_ext"] == "txt" if (use_action == "do") else "data"
+ @skip_without_tool("output_action_change_format_paired")
+ def test_map_over_with_nested_paired_output_format_actions(self):
+ history_id = self.dataset_populator.new_history()
+ hdca_id = self.__build_nested_list(history_id)
+ inputs = {
+ "input": {'batch': True, 'values': [dict(map_over_type='paired', src="hdca", id=hdca_id)]}
+ }
+ create = self._run('output_action_change_format_paired', history_id, inputs).json()
+ outputs = create['outputs']
+ jobs = create['jobs']
+ implicit_collections = create['implicit_collections']
+ self.assertEquals(len(jobs), 2)
+ self.assertEquals(len(outputs), 2)
+ self.assertEquals(len(implicit_collections), 1)
+ for output in outputs:
+ assert output["file_ext"] == "txt"
+
@skip_without_tool("output_filter_with_input")
def test_map_over_with_output_filter_no_filtering(self):
with self.dataset_populator.test_history() as history_id:
diff --git a/test/functional/tools/output_action_change_format_paired.xml b/test/functional/tools/output_action_change_format_paired.xml
new file mode 100644
index 00000000000..7c31145f063
--- /dev/null
+++ b/test/functional/tools/output_action_change_format_paired.xml
@@ -0,0 +1,32 @@
+
+
+ printf "1\t2\n" > out1;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/functional/tools/samples_tool_conf.xml b/test/functional/tools/samples_tool_conf.xml
index 8dbaef5bbd6..116b3ac34a0 100644
--- a/test/functional/tools/samples_tool_conf.xml
+++ b/test/functional/tools/samples_tool_conf.xml
@@ -106,6 +106,7 @@
+