From c207b7298c90ab74f8b7812a79201f4c62e4f44d Mon Sep 17 00:00:00 2001 From: Andrew Klychkov Date: Tue, 21 Jul 2020 17:12:21 +0300 Subject: [PATCH] osx_defaults: fix handling negative integers (#676) * osx_defaults: fix handling negative integers * add changelog fragment --- .../676-osx_defaults_fix_handling_negative_ints.yml | 2 ++ plugins/modules/system/osx_defaults.py | 10 +++++++++- tests/integration/targets/osx_defaults/tasks/main.yml | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/676-osx_defaults_fix_handling_negative_ints.yml diff --git a/changelogs/fragments/676-osx_defaults_fix_handling_negative_ints.yml b/changelogs/fragments/676-osx_defaults_fix_handling_negative_ints.yml new file mode 100644 index 0000000000..d8fa6b0057 --- /dev/null +++ b/changelogs/fragments/676-osx_defaults_fix_handling_negative_ints.yml @@ -0,0 +1,2 @@ +bugfixes: +- osx_defaults - fix handling negative integers (https://github.com/ansible-collections/community.general/issues/134). diff --git a/plugins/modules/system/osx_defaults.py b/plugins/modules/system/osx_defaults.py index c8db2b8b55..266c4c4f7e 100644 --- a/plugins/modules/system/osx_defaults.py +++ b/plugins/modules/system/osx_defaults.py @@ -169,6 +169,14 @@ class OSXDefaults(object): # /init --------------------------------------------------------------- }}} # tools --------------------------------------------------------------- {{{ + @staticmethod + def is_int(value): + as_str = str(value) + if (as_str.startswith("-")): + return as_str[1:].isdigit() + else: + return as_str.isdigit() + @staticmethod def _convert_type(data_type, value): """ Converts value to given type """ @@ -190,7 +198,7 @@ class OSXDefaults(object): "Invalid date value: {0}. Required format yyy-mm-dd hh:mm:ss.".format(repr(value)) ) elif data_type in ["int", "integer"]: - if not str(value).isdigit(): + if not OSXDefaults.is_int(value): raise OSXDefaultsException("Invalid integer value: {0}".format(repr(value))) return int(value) elif data_type == "float": diff --git a/tests/integration/targets/osx_defaults/tasks/main.yml b/tests/integration/targets/osx_defaults/tasks/main.yml index a4444b260f..dad649d400 100644 --- a/tests/integration/targets/osx_defaults/tasks/main.yml +++ b/tests/integration/targets/osx_defaults/tasks/main.yml @@ -177,6 +177,7 @@ with_items: &data_type - { type: 'int', value: 1, key: 'sample_int'} - { type: 'integer', value: 1, key: 'sample_int_2'} + - { type: 'integer', value: -1, key: 'negative_int'} - { type: 'bool', value: True, key: 'sample_bool'} - { type: 'boolean', value: True, key: 'sample_bool_2'} - { type: 'date', value: "2019-02-19 10:10:10", key: 'sample_date'}