diff --git a/orquesta/tests/unit/utils/test_parameters.py b/orquesta/tests/unit/utils/test_parameters.py index 5ba96161..6d8a3cfd 100644 --- a/orquesta/tests/unit/utils/test_parameters.py +++ b/orquesta/tests/unit/utils/test_parameters.py @@ -83,6 +83,19 @@ def test_parse_empty_string(self): def test_parse_null_type(self): self.assertListEqual(params.parse_inline_params(None), []) + def test_parse_bool_input(self): + tests = [ + ('x=true', [{'x': True}]), + ('y=True', [{'y': True}]), + ('c=TRUE', [{'c': True}]), + ('x=false', [{'x': False}]), + ('y=False', [{'y': False}]), + ('c=FALSE', [{'c': False}]) + ] + + for s, d in tests: + self.assertListEqual(params.parse_inline_params(s), d) + def test_parse_other_types(self): self.assertListEqual(params.parse_inline_params(123), []) self.assertListEqual(params.parse_inline_params(True), []) diff --git a/orquesta/utils/parameters.py b/orquesta/utils/parameters.py index 2083f59c..22a9c54a 100644 --- a/orquesta/utils/parameters.py +++ b/orquesta/utils/parameters.py @@ -22,8 +22,8 @@ REGEX_VALUE_IN_APOSTROPHES = "'[^']*'\s*" REGEX_FLOATING_NUMBER = '[-]?\d*\.\d+' REGEX_INTEGER = '[-]?\d+' -REGEX_TRUE = 'true' -REGEX_FALSE = 'false' +REGEX_TRUE = '(?i)true' +REGEX_FALSE = '(?i)false' REGEX_NULL = 'null' # REGEX_FLOATING_NUMBER must go before REGEX_INTEGER @@ -61,6 +61,9 @@ def parse_inline_params(s, preserve_order=True): v = re.sub("^'", '', v) v = re.sub("'$", '', v) + if v.lower() == 'true' or v.lower() == 'false': + v = v.lower() + # Load string into dictionary. try: v = json.loads(v)