diff --git a/lib/galaxy/jobs/__init__.py b/lib/galaxy/jobs/__init__.py index 08457df9aa2..e424ff73893 100644 --- a/lib/galaxy/jobs/__init__.py +++ b/lib/galaxy/jobs/__init__.py @@ -43,6 +43,7 @@ log = logging.getLogger(__name__) # that import Galaxy internals - but it shouldn't be used in Galaxy's code # itself. TOOL_PROVIDED_JOB_METADATA_FILE = 'galaxy.json' +TOOL_PROVIDED_JOB_METADATA_KEYS = ['name', 'info', 'dbkey'] # Override with config.default_job_shell. DEFAULT_JOB_SHELL = '/bin/bash' @@ -1320,14 +1321,17 @@ class JobWrapper(object, HasResourceParameters): dataset.set_peek(is_multi_byte=True) else: dataset.set_peek() - for context_key in ['name', 'info', 'dbkey']: - if context_key in context: - context_value = context[context_key] - setattr(dataset, context_key, context_value) else: + # Handle an empty dataset. dataset.blurb = "empty" if dataset.ext == 'auto': - dataset.extension = 'txt' + dataset.extension = context.get('ext', 'txt') + + for context_key in TOOL_PROVIDED_JOB_METADATA_KEYS: + if context_key in context: + context_value = context[context_key] + setattr(dataset, context_key, context_value) + self.sa_session.add(dataset) if job.states.ERROR == final_job_state: log.debug("(%s) setting dataset %s state to ERROR", job.id, dataset_assoc.dataset.dataset.id) diff --git a/test/functional/tools/empty_datasets.xml b/test/functional/tools/empty_datasets.xml new file mode 100644 index 00000000000..b9c5452d878 --- /dev/null +++ b/test/functional/tools/empty_datasets.xml @@ -0,0 +1,34 @@ + + + touch $output; + touch out; + touch out_meta; + cp $c1 galaxy.json + + + {"output_tool_supplied_metadata": { + "name": "my dynamic name", + "ext": "fasta", + "info": "my dynamic info" +}} + + + + + + + + + + + + + + + + + + + + + diff --git a/test/functional/tools/samples_tool_conf.xml b/test/functional/tools/samples_tool_conf.xml index 18e55f282f1..5eba6787a06 100644 --- a/test/functional/tools/samples_tool_conf.xml +++ b/test/functional/tools/samples_tool_conf.xml @@ -24,6 +24,7 @@ +