diff --git a/certbot/tests/util_test.py b/certbot/tests/util_test.py index 59a4f10b2..60b3089bb 100644 --- a/certbot/tests/util_test.py +++ b/certbot/tests/util_test.py @@ -6,6 +6,7 @@ import shutil import stat import unittest +import configargparse import mock import six from six.moves import reload_module # pylint: disable=import-error @@ -368,6 +369,22 @@ class AddDeprecatedArgumentTest(unittest.TestCase): pass self.assertTrue("--old-option" not in stdout.getvalue()) + def test_when_configargparse_set(self): + '''In configargparse versions < 0.12.0 ACTION_TYPES_THAT_DONT_NEED_A_VALUE is a set.''' + orig = configargparse.ACTION_TYPES_THAT_DONT_NEED_A_VALUE + configargparse.ACTION_TYPES_THAT_DONT_NEED_A_VALUE = set() + self._call("--old-option", 1) + self.assertEqual(len(configargparse.ACTION_TYPES_THAT_DONT_NEED_A_VALUE), 1) + configargparse.ACTION_TYPES_THAT_DONT_NEED_A_VALUE = orig + + def test_when_configargparse_tuple(self): + '''In configargparse versions >= 0.12.0 ACTION_TYPES_THAT_DONT_NEED_A_VALUE is a tuple.''' + orig = configargparse.ACTION_TYPES_THAT_DONT_NEED_A_VALUE + configargparse.ACTION_TYPES_THAT_DONT_NEED_A_VALUE = tuple() + self._call("--old-option", 1) + self.assertEqual(len(configargparse.ACTION_TYPES_THAT_DONT_NEED_A_VALUE), 1) + configargparse.ACTION_TYPES_THAT_DONT_NEED_A_VALUE = orig + class EnforceLeValidity(unittest.TestCase): """Test enforce_le_validity.""" diff --git a/certbot/util.py b/certbot/util.py index e343fdcb1..5eec90b50 100644 --- a/certbot/util.py +++ b/certbot/util.py @@ -477,7 +477,12 @@ def add_deprecated_argument(add_argument, argument_name, nargs): sys.stderr.write( "Use of {0} is deprecated.\n".format(option_string)) - configargparse.ACTION_TYPES_THAT_DONT_NEED_A_VALUE.add(ShowWarning) + # In version 0.12.0 ACTION_TYPES_THAT_DONT_NEED_A_VALUE was changed from a set + # to a tuple. + if isinstance(configargparse.ACTION_TYPES_THAT_DONT_NEED_A_VALUE, set): + configargparse.ACTION_TYPES_THAT_DONT_NEED_A_VALUE.add(ShowWarning) + else: + configargparse.ACTION_TYPES_THAT_DONT_NEED_A_VALUE += (ShowWarning,) add_argument(argument_name, action=ShowWarning, help=argparse.SUPPRESS, nargs=nargs)