diff --git a/oslo_utils/strutils.py b/oslo_utils/strutils.py index 33563ef1..56466b2e 100644 --- a/oslo_utils/strutils.py +++ b/oslo_utils/strutils.py @@ -119,6 +119,8 @@ def bool_from_string(subject, strict=False, default=False): ValueError which is useful when parsing values passed in from an API call. Strings yielding False are 'f', 'false', 'off', 'n', 'no', or '0'. """ + if isinstance(subject, bool): + return subject if not isinstance(subject, six.string_types): subject = six.text_type(subject) diff --git a/oslo_utils/tests/test_strutils.py b/oslo_utils/tests/test_strutils.py index 959b57df..7864c390 100644 --- a/oslo_utils/tests/test_strutils.py +++ b/oslo_utils/tests/test_strutils.py @@ -30,6 +30,12 @@ load_tests = testscenarios.load_tests_apply_scenarios class StrUtilsTest(test_base.BaseTestCase): + @mock.patch("six.text_type") + def test_bool_bool_from_string_no_text(self, mock_text): + self.assertTrue(strutils.bool_from_string(True)) + self.assertFalse(strutils.bool_from_string(False)) + self.assertEqual(0, mock_text.call_count) + def test_bool_bool_from_string(self): self.assertTrue(strutils.bool_from_string(True)) self.assertFalse(strutils.bool_from_string(False))