Skip to content

Commit a8e042e

Browse files
author
Jonathan Como
committed
Default task respects dependencies. Fixes #2
1 parent e50021c commit a8e042e

File tree

2 files changed

+26
-5
lines changed

2 files changed

+26
-5
lines changed

snake/tasks.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,11 @@ def execute(self, _label, **kwargs):
153153
:param tasks: list of task labels
154154
:param kwargs: the keyword arguments to pass to each task
155155
"""
156-
if not _label and not self.default:
157-
raise NoSuchTaskException('default')
156+
if not _label:
157+
if not self.default:
158+
raise NoSuchTaskException('default')
159+
160+
_label = self.default
158161

159162
for dependency in self._dependencies.resolve(_label):
160163
self._execute_task(dependency, **kwargs)
@@ -168,9 +171,6 @@ def view_all(self):
168171
return TaskListFormatter(tasks).tableize(self.name)
169172

170173
def _execute_task(self, _label, **kwargs):
171-
if not _label:
172-
_label = self.default
173-
174174
try:
175175
task = self._tasks[_label]
176176
except KeyError:

tests/tasks_tests.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ class Flag(object):
99
def __init__(self):
1010
self.value = False
1111

12+
def __repr__(self):
13+
return '<Flag: %s>' % self.value
14+
1215
def __nonzero__(self):
1316
return self.value
1417

@@ -174,6 +177,24 @@ def foo():
174177
self.registry.default = 'foo'
175178
self.registry.execute(None)
176179

180+
self.assertTrue(called)
181+
182+
def test_default_task_obeys_dependencies(self):
183+
called = Flag()
184+
185+
@self.registry.add_task
186+
def foo():
187+
called.set()
188+
189+
@self.registry.add_task(requires=['foo'])
190+
def bar():
191+
pass
192+
193+
self.registry.default = 'bar'
194+
self.registry.execute(None)
195+
196+
self.assertTrue(called)
197+
177198
def test_it_raises_assertion_when_default_is_not_string(self):
178199
with self.assertRaisesRegexp(AssertionError, r"default task must be a string"):
179200
self.registry.default = lambda: True

0 commit comments

Comments
 (0)