From bac4458c89a589055ae3daf4f72cc7dba886264a Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik Date: Thu, 16 Feb 2017 10:07:33 +0100 Subject: intg: Fix python3 issues NamedTemporaryFile use the default mode 'w+b' and we tried to write strings. It is not a problem on python2 but failed on pyhton3 Python module ctypes directly uses C functions from libraries. C functions usually expect/returns "char *" when string is expected. But python3 uses unicode for string. Decoding returned bytes ("char *") to unicode strings simplify tests in python3. Otherwise we would need to convert bytes to string in each assertion. Reviewed-by: Martin Basti --- src/tests/intg/files_ops.py | 3 ++- src/tests/intg/sssd_group.py | 6 ++++-- src/tests/intg/sssd_passwd.py | 11 ++++++----- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/tests/intg/files_ops.py b/src/tests/intg/files_ops.py index 65b3e5ee4..62f56517d 100644 --- a/src/tests/intg/files_ops.py +++ b/src/tests/intg/files_ops.py @@ -76,7 +76,8 @@ class FilesOps(object): return contents def _write_contents(self, contents): - tmp_file = tempfile.NamedTemporaryFile(dir=self.tmp_dir, delete=False) + tmp_file = tempfile.NamedTemporaryFile(mode='w', dir=self.tmp_dir, + delete=False) tmp_file.writelines(contents) tmp_file.flush() diff --git a/src/tests/intg/sssd_group.py b/src/tests/intg/sssd_group.py index a9cfb32d5..ab873a726 100644 --- a/src/tests/intg/sssd_group.py +++ b/src/tests/intg/sssd_group.py @@ -46,6 +46,7 @@ def getgrnam_r(name, result_p, buffer_p, buflen): errno = POINTER(c_int)(c_int(0)) + name = name.encode('utf-8') res = func(c_char_p(name), result_p, buffer_p, buflen, errno) return (int(res), int(errno[0]), result_p) @@ -56,13 +57,14 @@ def set_group_dict(res, result_p): return dict() group_dict = dict() - group_dict['name'] = result_p[0].gr_name + group_dict['name'] = result_p[0].gr_name.decode('utf-8') group_dict['gid'] = result_p[0].gr_gid group_dict['mem'] = list() i = 0 while result_p[0].gr_mem[i] != None: - group_dict['mem'].append(result_p[0].gr_mem[i]) + grp_name = result_p[0].gr_mem[i].decode('utf-8') + group_dict['mem'].append(grp_name) i = i+1 return group_dict diff --git a/src/tests/intg/sssd_passwd.py b/src/tests/intg/sssd_passwd.py index 8b741ea8c..f285b4971 100644 --- a/src/tests/intg/sssd_passwd.py +++ b/src/tests/intg/sssd_passwd.py @@ -38,13 +38,13 @@ def set_user_dict(res, result_p): return dict() user_dict = dict() - user_dict['name'] = result_p[0].pw_name - user_dict['passwd'] = result_p[0].pw_passwd + user_dict['name'] = result_p[0].pw_name.decode('utf-8') + user_dict['passwd'] = result_p[0].pw_passwd.decode('utf-8') user_dict['uid'] = result_p[0].pw_uid user_dict['gid'] = result_p[0].pw_gid - user_dict['gecos'] = result_p[0].pw_gecos - user_dict['dir'] = result_p[0].pw_dir - user_dict['shell'] = result_p[0].pw_shell + user_dict['gecos'] = result_p[0].pw_gecos.decode('utf-8') + user_dict['dir'] = result_p[0].pw_dir.decode('utf-8') + user_dict['shell'] = result_p[0].pw_shell.decode('utf-8') return user_dict @@ -64,6 +64,7 @@ def getpwnam_r(name, result_p, buffer_p, buflen): errno = POINTER(c_int)(c_int(0)) + name = name.encode('utf-8') res = func(c_char_p(name), result_p, buffer_p, buflen, errno) return (int(res), int(errno[0]), result_p) -- cgit