Skip to content

Commit fb3d642

Browse files
Add tests for unwanted return code 0
Four cases: - Fail in complete() - Fail in requires() - Fail in _validate_dependency() - Exceed task limit Luigi return value shouldn't be 0 in these cases.
1 parent 3ec46d2 commit fb3d642

1 file changed

Lines changed: 44 additions & 0 deletions

File tree

test/retcodes_test.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,50 @@ def new_func(*args, **kwargs):
7777
self.run_and_expect('Task --retcode-already-running 5', 5, extra_args=['--local-scheduler'])
7878
self.run_with_config(dict(already_running='3'), 'Task', 3, extra_args=['--local-scheduler'])
7979

80+
def test_failure_in_complete(self):
81+
class FailingComplete(luigi.Task):
82+
def complete(self):
83+
raise Exception
84+
85+
class RequiringTask(luigi.Task):
86+
def requires(self):
87+
yield FailingComplete()
88+
89+
self.run_and_expect('RequiringTask', 4)
90+
91+
def test_failure_in_requires(self):
92+
class FailingRequires(luigi.Task):
93+
def requires(self):
94+
raise Exception
95+
96+
self.run_and_expect('FailingRequires', 4)
97+
98+
def test_validate_dependency_error(self):
99+
# requires() from RequiringTask expects a Task object
100+
class DependencyTask(object):
101+
pass
102+
103+
class RequiringTask(luigi.Task):
104+
def requires(self):
105+
yield DependencyTask()
106+
107+
self.run_and_expect('RequiringTask', 4)
108+
109+
def test_task_limit(self):
110+
class TaskB(luigi.Task):
111+
def complete(self):
112+
return False
113+
114+
class TaskA(luigi.Task):
115+
def requires(sefl):
116+
yield TaskB()
117+
118+
class TaskLimitTest(luigi.Task):
119+
def requires(self):
120+
yield TaskA()
121+
122+
self.run_and_expect('TaskLimitTest --worker-task-limit 1', 4)
123+
80124
def test_unhandled_exception(self):
81125
def new_func(*args, **kwargs):
82126
raise Exception()

0 commit comments

Comments
 (0)