summaryrefslogtreecommitdiffstats
path: root/tests/test_cmdline/test_help.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_cmdline/test_help.py')
-rw-r--r--tests/test_cmdline/test_help.py141
1 files changed, 0 insertions, 141 deletions
diff --git a/tests/test_cmdline/test_help.py b/tests/test_cmdline/test_help.py
deleted file mode 100644
index 4cf633683..000000000
--- a/tests/test_cmdline/test_help.py
+++ /dev/null
@@ -1,141 +0,0 @@
-# Authors: Petr Viktorin <pviktori@redhat.com>
-#
-# Copyright (C) 2012 Red Hat
-# see file 'COPYING' for use and warranty information
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-
-import sys
-import contextlib
-import StringIO
-
-from nose.tools import assert_raises # pylint: disable=E0611
-
-from ipalib import api, errors
-from ipalib.plugins.user import user_add
-
-
-class CLITestContext(object):
- """Context manager that replaces stdout & stderr, and catches SystemExit
-
- Whatever was printed to the streams is available in ``stdout`` and
- ``stderr`` attrributes once the with statement finishes.
-
- When exception is given, asserts that exception is raised. The exception
- will be available in the ``exception`` attribute.
- """
- def __init__(self, exception=None):
- self.exception = exception
-
- def __enter__(self):
- self.old_streams = sys.stdout, sys.stderr
- self.stdout_fileobj = sys.stdout = StringIO.StringIO()
- self.stderr_fileobj = sys.stderr = StringIO.StringIO()
- return self
-
- def __exit__(self, exc_type, exc_value, traceback):
- sys.stdout, sys.stderr = self.old_streams
- self.stdout = self.stdout_fileobj.getvalue()
- self.stderr = self.stderr_fileobj.getvalue()
- self.stdout_fileobj.close()
- self.stderr_fileobj.close()
- if self.exception:
- assert isinstance(exc_value, self.exception), exc_value
- self.exception = exc_value
- return True
-
-
-def test_ipa_help():
- """Test that `ipa help` only writes to stdout"""
- with CLITestContext() as ctx:
- return_value = api.Backend.cli.run(['help'])
- assert return_value == 0
- assert ctx.stderr == ''
-
-
-def test_ipa_without_arguments():
- """Test that `ipa` errors out, and prints the help to stderr"""
- with CLITestContext(exception=SystemExit) as ctx:
- api.Backend.cli.run([])
- assert ctx.exception.code == 2
- assert ctx.stdout == ''
- assert 'Error: Command not specified' in ctx.stderr
-
- with CLITestContext() as help_ctx:
- api.Backend.cli.run(['help'])
- assert help_ctx.stdout in ctx.stderr
-
-
-def test_bare_topic():
- """Test that `ipa user` errors out, and prints the help to stderr
-
- This is because `user` is a topic, not a command, so `ipa user` doesn't
- match our usage string. The help should be accessed using `ipa help user`.
- """
- with CLITestContext(exception=errors.CommandError) as ctx:
- api.Backend.cli.run(['user'])
- assert ctx.exception.name == 'user'
- assert ctx.stdout == ''
-
- with CLITestContext() as help_ctx:
- return_value = api.Backend.cli.run(['help', 'user'])
- assert return_value == 0
- assert help_ctx.stdout in ctx.stderr
-
-
-def test_command_help():
- """Test that `help user-add` & `user-add -h` are equivalent and contain doc
- """
- with CLITestContext() as help_ctx:
- return_value = api.Backend.cli.run(['help', 'user-add'])
- assert return_value == 0
- assert help_ctx.stderr == ''
-
- with CLITestContext(exception=SystemExit) as h_ctx:
- api.Backend.cli.run(['user-add', '-h'])
- assert h_ctx.exception.code == 0
- assert h_ctx.stderr == ''
-
- assert h_ctx.stdout == help_ctx.stdout
- assert unicode(user_add.__doc__) in help_ctx.stdout
-
-
-def test_ambiguous_command_or_topic():
- """Test that `help ping` & `ping -h` are NOT equivalent
-
- One is a topic, the other is a command
- """
- with CLITestContext() as help_ctx:
- return_value = api.Backend.cli.run(['help', 'ping'])
- assert return_value == 0
- assert help_ctx.stderr == ''
-
- with CLITestContext(exception=SystemExit) as h_ctx:
- api.Backend.cli.run(['ping', '-h'])
- assert h_ctx.exception.code == 0
- assert h_ctx.stderr == ''
-
- assert h_ctx.stdout != help_ctx.stdout
-
-def test_multiline_description():
- """Test that all of a multi-line command description appears in output
- """
- # This assumes trust_add has multiline doc. Ensure it is so.
- assert '\n\n' in unicode(api.Command.trust_add.doc).strip()
-
- with CLITestContext(exception=SystemExit) as help_ctx:
- return_value = api.Backend.cli.run(['trust-add', '-h'])
-
- assert unicode(api.Command.trust_add.doc).strip() in help_ctx.stdout