Fixes #3954 and adds a test to prevent regressions (#3957)

* fixes #3954 and adds test to prevent regressions

* assure pylint I know what I'm doing

* Test FileDisplay methods take force_interactive
This commit is contained in:
Brad Warren 2016-12-23 10:49:51 -08:00 committed by Peter Eckersley
parent 839ff7a265
commit 12edbb53db
2 changed files with 21 additions and 2 deletions

View file

@ -438,7 +438,7 @@ class NoninteractiveDisplay(object):
line=os.linesep, frame=side_frame, msg=message))
def menu(self, message, choices, ok_label=None, cancel_label=None,
help_label=None, default=None, cli_flag=None, *unused_kwargs):
help_label=None, default=None, cli_flag=None, **unused_kwargs):
# pylint: disable=unused-argument,too-many-arguments
"""Avoid displaying a menu.

View file

@ -1,10 +1,12 @@
"""Test :mod:`certbot.display.util`."""
import inspect
import os
import unittest
import mock
import certbot.errors as errors
from certbot import errors
from certbot import interfaces
from certbot.display import util as display_util
@ -259,6 +261,13 @@ class FileOutputDisplayTest(unittest.TestCase):
self.displayer._get_valid_int_ans(3),
(display_util.CANCEL, -1))
def test_methods_take_force_interactive(self):
# Every IDisplay method implemented by FileDisplay must take
# force_interactive to prevent workflow regressions.
for name in interfaces.IDisplay.names(): # pylint: disable=no-member
arg_spec = inspect.getargspec(getattr(self.displayer, name))
self.assertTrue("force_interactive" in arg_spec.args)
class NoninteractiveDisplayTest(unittest.TestCase):
"""Test non-interactive display.
@ -309,6 +318,16 @@ class NoninteractiveDisplayTest(unittest.TestCase):
self.assertRaises(
errors.MissingCommandlineFlag, self.displayer.directory_select, "msg")
def test_methods_take_kwargs(self):
# Every IDisplay method implemented by NoninteractiveDisplay
# should take **kwargs because every method of FileDisplay must
# take force_interactive which doesn't apply to
# NoninteractiveDisplay.
for name in interfaces.IDisplay.names(): # pylint: disable=no-member
method = getattr(self.displayer, name)
# asserts method accepts arbitrary keyword arguments
self.assertFalse(inspect.getargspec(method).keywords is None)
class SeparateListInputTest(unittest.TestCase):
"""Test Module functions."""