Skip to content

Commit

Permalink
fix issue getting help from a task
Browse files Browse the repository at this point in the history
  • Loading branch information
schettino72 committed Aug 3, 2015
1 parent 91d4871 commit 0c0f3e1
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 10 deletions.
4 changes: 3 additions & 1 deletion doit/cmd_help.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import six

from .exceptions import InvalidDodoFile
from .cmdparse import TaskParse, CmdOption
from .cmd_base import DoitCmdBase


Expand Down Expand Up @@ -139,7 +140,8 @@ def _execute(self, pos_args):
if not task:
return False
six.print_("%s %s" % (task.name, task.doc))
for opt in task.taskcmd.options:
taskcmd = TaskParse([CmdOption(opt) for opt in task.params])
for opt in taskcmd.options:
six.print_("\n".join(opt.help_doc()))
return True

Expand Down
25 changes: 16 additions & 9 deletions tests/test_cmd_help.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,45 +8,52 @@ def cmd_main(args, extra_config=None):

class TestHelp(object):
def test_help_usage(self, capsys):
cmd_main(["help"])
returned = cmd_main(["help"])
assert returned == 0
out, err = capsys.readouterr()
assert "doit list" in out

def test_help_plugin_name(self, capsys):
plugin = {'XXX': 'tests.sample_plugin:MyCmd'}
DoitMain(extra_config={'COMMAND':plugin}).run(["help"])
returned = DoitMain(extra_config={'COMMAND':plugin}).run(["help"])
assert returned == 0
out, err = capsys.readouterr()
assert "doit XXX " in out
assert "test extending doit commands" in out, out

def test_help_task_params(self, capsys):
cmd_main(["help", "task"])
returned = cmd_main(["help", "task"])
assert returned == 0
out, err = capsys.readouterr()
assert "Task Dictionary parameters" in out

def test_help_cmd(self, capsys):
cmd_main(["help", "list"], {'dep_file': 'foo.db'})
returned = cmd_main(["help", "list"], {'dep_file': 'foo.db'})
assert returned == 0
out, err = capsys.readouterr()
assert "Purpose: list tasks from dodo file" in out
# overwritten defaults, are shown as default
assert "file used to save successful runs [default: foo.db]" in out

def test_help_task_name(self, capsys, restore_cwd, depfile_name):
cmd_main(["help", "-f", "tests/loader_sample.py",
"--db-file", depfile_name, "xxx1"])
returned = cmd_main(["help", "-f", "tests/loader_sample.py",
"--db-file", depfile_name, "xxx1"])
assert returned == 0
out, err = capsys.readouterr()
assert "xxx1" in out # name
assert "task doc" in out # doc
assert "" in out # params
assert "-p" in out # params

def test_help_wrong_name(self, capsys, restore_cwd, depfile_name):
cmd_main(["help", "-f", "tests/loader_sample.py",
returned = cmd_main(["help", "-f", "tests/loader_sample.py",
"--db-file", depfile_name, "wrong_name"])
assert returned == 0 # TODO return different value?
out, err = capsys.readouterr()
assert "doit list" in out

def test_help_no_dodo_file(self, capsys):
cmd_main(["help", "-f", "no_dodo", "wrong_name"])
returned = cmd_main(["help", "-f", "no_dodo", "wrong_name"])
assert returned == 0 # TODO return different value?
out, err = capsys.readouterr()
assert "doit list" in out

0 comments on commit 0c0f3e1

Please sign in to comment.