From 4b229fbf820e8fcca06c73c7b45dd77f62b1fba1 Mon Sep 17 00:00:00 2001 From: Ross McFarland Date: Fri, 8 Mar 2024 07:51:09 -0800 Subject: [PATCH] _build_kwargs fix, don't convert int-y things to floats --- octodns/manager.py | 10 +++++++--- tests/test_octodns_manager.py | 13 +++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/octodns/manager.py b/octodns/manager.py index 7b26f83..e34d3a0 100644 --- a/octodns/manager.py +++ b/octodns/manager.py @@ -388,10 +388,14 @@ class Manager(object): f'Incorrect provider config, missing env var {env_var}, {source.context}' ) try: - # try converting the value to a number to see if it - # converts - v = float(v) + if '.' in v: + # has a dot, try converting it to a float + v = float(v) + else: + # no dot, try converting it to an int + v = int(v) except ValueError: + # just leave it as a string pass kwargs[k] = v diff --git a/tests/test_octodns_manager.py b/tests/test_octodns_manager.py index 5283769..b0d4019 100644 --- a/tests/test_octodns_manager.py +++ b/tests/test_octodns_manager.py @@ -1133,6 +1133,7 @@ class TestManager(TestCase): environ['OCTODNS_TEST_1'] = '42' environ['OCTODNS_TEST_2'] = 'string' + environ['OCTODNS_TEST_3'] = '43.44' # empty self.assertEqual({}, manager._build_kwargs({})) @@ -1202,6 +1203,18 @@ class TestManager(TestCase): ), ) + # types/conversion + self.assertEqual( + {'int': 42, 'string': 'string', 'float': 43.44}, + manager._build_kwargs( + { + 'int': 'env/OCTODNS_TEST_1', + 'string': 'env/OCTODNS_TEST_2', + 'float': 'env/OCTODNS_TEST_3', + } + ), + ) + class TestMainThreadExecutor(TestCase): def test_success(self):