Skip to content

Commit

Permalink
Merge pull request #3182 from daniel-ge/master
Browse files Browse the repository at this point in the history
FIX: load_resultfile crashes if open resultsfile from crashed job
  • Loading branch information
effigies authored Mar 9, 2020
2 parents b75a7ce + 4a6d6b8 commit 347311c
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 1 deletion.
2 changes: 1 addition & 1 deletion nipype/pipeline/engine/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ def load_resultfile(results_file, resolve=True):
raise FileNotFoundError(results_file)

result = loadpkl(results_file)
if resolve and result.outputs:
if resolve and getattr(result, "outputs", None):
try:
outputs = result.outputs.get()
except TypeError: # This is a Bunch
Expand Down
35 changes: 35 additions & 0 deletions nipype/pipeline/plugins/tests/test_sgelike.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
from nipype.pipeline.plugins.base import SGELikeBatchManagerBase
from nipype.interfaces.utility import Function
import nipype.pipeline.engine as pe
import pytest
from unittest.mock import patch
import subprocess


def crasher():
raise ValueError()


def submit_batchtask(self, scriptfile, node):
self._pending[1] = node.output_dir()
subprocess.call(["bash", scriptfile])
return 1


def is_pending(self, taskid):
return False


@patch.object(SGELikeBatchManagerBase, "_submit_batchtask", new=submit_batchtask)
@patch.object(SGELikeBatchManagerBase, "_is_pending", new=is_pending)
def test_crashfile_creation(tmp_path):
pipe = pe.Workflow(name="pipe", base_dir=str(tmp_path))
pipe.config["execution"]["crashdump_dir"] = str(tmp_path)
pipe.add_nodes([pe.Node(interface=Function(function=crasher), name="crasher")])
sgelike_plugin = SGELikeBatchManagerBase("")
with pytest.raises(RuntimeError) as e:
assert pipe.run(plugin=sgelike_plugin)
assert str(e.value) == "Workflow did not execute cleanly. Check log for details"

crashfiles = tmp_path.glob("crash*crasher*.pklz")
assert len(list(crashfiles)) == 1

0 comments on commit 347311c

Please sign in to comment.