From 26c3ff0cbecae80dcee55837a079ec6400d62d4b 2013-08-30 00:25:50 From: MinRK Date: 2013-08-30 00:25:50 Subject: [PATCH] test that `-h` and `--help-all` work for various IPython entry points should help catch when we break these things. --- diff --git a/IPython/html/tests/test_notebookapp.py b/IPython/html/tests/test_notebookapp.py new file mode 100644 index 0000000..24c0e62 --- /dev/null +++ b/IPython/html/tests/test_notebookapp.py @@ -0,0 +1,29 @@ +"""Test NotebookApp""" + +#----------------------------------------------------------------------------- +# Copyright (C) 2013 The IPython Development Team +# +# Distributed under the terms of the BSD License. The full license is in +# the file COPYING, distributed as part of this software. +#----------------------------------------------------------------------------- + +#----------------------------------------------------------------------------- +# Imports +#----------------------------------------------------------------------------- + +import nose.tools as nt + +import IPython.testing.tools as tt + +#----------------------------------------------------------------------------- +# Test functions +#----------------------------------------------------------------------------- + +def test_help_output(): + """ipython notebook -h works""" + tt.help_output_test('notebook') + +def test_help_all_output(): + """ipython notebook --help-all works""" + tt.help_all_output_test('notebook') + diff --git a/IPython/nbconvert/tests/test_nbconvertapp.py b/IPython/nbconvert/tests/test_nbconvertapp.py index 1eabe13..9e680f0 100644 --- a/IPython/nbconvert/tests/test_nbconvertapp.py +++ b/IPython/nbconvert/tests/test_nbconvertapp.py @@ -1,12 +1,10 @@ -""" -Contains tests for the nbconvertapp -""" +"""Test NbConvertApp""" + #----------------------------------------------------------------------------- -#Copyright (c) 2013, the IPython Development Team. -# -#Distributed under the terms of the Modified BSD License. +# Copyright (C) 2013 The IPython Development Team # -#The full license is in the file COPYING.txt, distributed with this software. +# Distributed under the terms of the BSD License. The full license is in +# the file COPYING, distributed as part of this software. #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- @@ -18,9 +16,10 @@ import glob from .base import TestsBase +import IPython.testing.tools as tt from IPython.testing import decorators as dec - + #----------------------------------------------------------------------------- # Constants #----------------------------------------------------------------------------- @@ -35,13 +34,18 @@ class TestNbConvertApp(TestsBase): def test_notebook_help(self): - """ - Will help show if no notebooks are specified? - """ + """Will help show if no notebooks are specified?""" with self.create_temp_cwd(): out, err = self.call('nbconvert --log-level 0', ignore_return_code=True) - assert "see '--help-all'" in out + self.assertIn("see '--help-all'", out) + + def test_help_output(self): + """ipython nbconvert -h works""" + tt.help_output_test('nbconvert') + def test_help_all_output(self): + """ipython nbconvert --help-all works""" + tt.help_all_output_test('nbconvert') def test_glob(self): """ diff --git a/IPython/qt/console/tests/test_app.py b/IPython/qt/console/tests/test_app.py new file mode 100644 index 0000000..8a8d446 --- /dev/null +++ b/IPython/qt/console/tests/test_app.py @@ -0,0 +1,29 @@ +"""Test QtConsoleApp""" + +#----------------------------------------------------------------------------- +# Copyright (C) 2013 The IPython Development Team +# +# Distributed under the terms of the BSD License. The full license is in +# the file COPYING, distributed as part of this software. +#----------------------------------------------------------------------------- + +#----------------------------------------------------------------------------- +# Imports +#----------------------------------------------------------------------------- + +import nose.tools as nt + +import IPython.testing.tools as tt + +#----------------------------------------------------------------------------- +# Test functions +#----------------------------------------------------------------------------- + +def test_help_output(): + """ipython qtconsole -h works""" + tt.help_output_test('qtconsole') + +def test_help_all_output(): + """ipython qtconsole --help-all works""" + tt.help_all_output_test('qtconsole') + diff --git a/IPython/terminal/console/tests/test_console.py b/IPython/terminal/console/tests/test_console.py index 60b9679..ab09cec 100644 --- a/IPython/terminal/console/tests/test_console.py +++ b/IPython/terminal/console/tests/test_console.py @@ -18,11 +18,12 @@ import time import nose.tools as nt from nose import SkipTest +import IPython.testing.tools as tt from IPython.testing import decorators as dec from IPython.utils import py3compat #----------------------------------------------------------------------------- -# Test functions begin +# Tests #----------------------------------------------------------------------------- @dec.skip_win32 @@ -55,3 +56,12 @@ def test_console_starts(): p.expect([pexpect.EOF, pexpect.TIMEOUT], timeout=t) if p.isalive(): p.terminate() + +def test_help_output(): + """ipython console -h works""" + tt.help_output_test('console') + +def test_help_all_output(): + """ipython console --help-all works""" + tt.help_all_output_test('console') + diff --git a/IPython/terminal/tests/test_help.py b/IPython/terminal/tests/test_help.py new file mode 100644 index 0000000..f217e20 --- /dev/null +++ b/IPython/terminal/tests/test_help.py @@ -0,0 +1,67 @@ +"""Test help output of various IPython entry points""" + +#----------------------------------------------------------------------------- +# Copyright (C) 2013 The IPython Development Team +# +# Distributed under the terms of the BSD License. The full license is in +# the file COPYING, distributed as part of this software. +#----------------------------------------------------------------------------- + +#----------------------------------------------------------------------------- +# Imports +#----------------------------------------------------------------------------- + +from IPython.testing.tools import help, help_all + +#----------------------------------------------------------------------------- +# Tests +#----------------------------------------------------------------------------- + + +@help() +def test_ipython_help(): + pass + +@help_all() +def test_ipython_help_all(): + pass + +@help("profile") +def test_profile_help(): + pass + +@help_all("profile") +def test_profile_help_all(): + pass + +@help("profile list") +def test_profile_list_help(): + pass + +@help_all("profile list") +def test_profile_list_help_all(): + pass + +@help("profile create") +def test_profile_create_help(): + pass + +@help_all("profile create") +def test_profile_create_help_all(): + pass + +@help("locate") +def test_locate_help(): + pass + +@help_all("locate") +def test_locate_help_all(): + pass + +@help("locate profile") +def test_locate_profile_help(): + pass + +@help_all("locate profile") +def test_locate_profile_all(): + pass diff --git a/IPython/testing/tools.py b/IPython/testing/tools.py index 696c655..45c2034 100644 --- a/IPython/testing/tools.py +++ b/IPython/testing/tools.py @@ -8,7 +8,7 @@ Authors from __future__ import absolute_import #----------------------------------------------------------------------------- -# Copyright (C) 2009-2011 The IPython Development Team +# Copyright (C) 2009 The IPython Development Team # # Distributed under the terms of the BSD License. The full license is in # the file COPYING, distributed as part of this software. @@ -18,6 +18,7 @@ from __future__ import absolute_import # Imports #----------------------------------------------------------------------------- +import inspect import os import re import sys @@ -37,6 +38,7 @@ except ImportError: has_nose = False from IPython.config.loader import Config +from IPython.utils.process import get_output_error_code from IPython.utils.text import list_strings from IPython.utils.io import temp_pyfile, Tee from IPython.utils import py3compat @@ -408,3 +410,56 @@ def monkeypatch(obj, name, attr): setattr(obj, name, attr) yield setattr(obj, name, orig) + + +def help_output_test(subcommand=''): + """test that `ipython [subcommand] -h` works""" + cmd = ' '.join(get_ipython_cmd() + [subcommand, '-h']) + out, err, rc = get_output_error_code(cmd) + nt.assert_equal(rc, 0, err) + nt.assert_not_in("Traceback", err) + nt.assert_in("Options", out) + nt.assert_in("--help-all", out) + return out, err + + +def help_all_output_test(subcommand=''): + """test that `ipython [subcommand] --help-all` works""" + cmd = ' '.join(get_ipython_cmd() + [subcommand, '--help-all']) + out, err, rc = get_output_error_code(cmd) + nt.assert_equal(rc, 0, err) + nt.assert_not_in("Traceback", err) + nt.assert_in("Options", out) + nt.assert_in("Class parameters", out) + return out, err + + +def help(cmd=''): + """decorator for making a test for `ipython cmd -h`""" + def wrap_help_test(f): + def test_help_output(): + out, err = help_output_test(cmd) + if inspect.getargspec(f).args: + return f(out, err) + else: + return f() + cmds = cmd + ' ' if cmd else '' + test_help_output.__doc__ = "ipython {cmds}--help-all works".format(cmds=cmds) + + return test_help_output + return wrap_help_test + + +def help_all(cmd=''): + """decorator for making a test for `ipython [cmd] --help-all`""" + def wrap_help_test(f): + def test_help_output(): + out, err = help_all_output_test(cmd) + if inspect.getargspec(f).args: + return f(out, err) + else: + return f() + cmds = cmd + ' ' if cmd else '' + test_help_output.__doc__ = "ipython {cmds}--help-all works".format(cmds=cmds) + return test_help_output + return wrap_help_test