diff options
author | Petr Viktorin <pviktori@redhat.com> | 2015-09-21 13:29:18 +0200 |
---|---|---|
committer | Tomas Babej <tbabej@redhat.com> | 2015-10-13 14:16:32 +0200 |
commit | e0eff8b8346f62b667f5e5b923fcaccd1beb12b7 (patch) | |
tree | d38061aed60f791f12f0fa3e06cc4b2d6bb50aa5 | |
parent | c44dd40b26bd9803d042cc75b133b739838a9022 (diff) | |
download | freeipa-e0eff8b8346f62b667f5e5b923fcaccd1beb12b7.tar.gz freeipa-e0eff8b8346f62b667f5e5b923fcaccd1beb12b7.tar.xz freeipa-e0eff8b8346f62b667f5e5b923fcaccd1beb12b7.zip |
ipalib.parameters: Handle 0-prefixed octal format of ints
In Python 2, numbers prfixed with '0' are parsed as octal,
e.g. '020' -> 16. In Python 3, the prefix is '0o'.
Handle the old syntax for IPA's parameter conversion to keep
backwards compatibility.
Reviewed-By: Tomas Babej <tbabej@redhat.com>
-rw-r--r-- | ipalib/parameters.py | 3 | ||||
-rw-r--r-- | ipatests/test_ipalib/test_parameters.py | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/ipalib/parameters.py b/ipalib/parameters.py index c74686271..8d27d900a 100644 --- a/ipalib/parameters.py +++ b/ipalib/parameters.py @@ -1072,6 +1072,9 @@ class Int(Number): if type(value) is unicode: if u'.' in value: return int(float(value)) + if six.PY3 and re.match('0[0-9]+', value): + # 0-prefixed octal format + return int(value, 8) return int(value, 0) raise ValueError(value) diff --git a/ipatests/test_ipalib/test_parameters.py b/ipatests/test_ipalib/test_parameters.py index 845e4290d..5504a52b5 100644 --- a/ipatests/test_ipalib/test_parameters.py +++ b/ipatests/test_ipalib/test_parameters.py @@ -1195,6 +1195,7 @@ def check_int_scalar_conversions(o): assert o._convert_scalar(u'16') == 16 assert o._convert_scalar(u'0x10') == 16 assert o._convert_scalar(u'020') == 16 + assert o._convert_scalar(u'0o20') == 16 class test_IntEnum(EnumChecker): |