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