sssd/0068-intg-Fix-python3-issues.patch
2017-02-28 16:54:33 +01:00

100 lines
3.7 KiB
Diff

From bac4458c89a589055ae3daf4f72cc7dba886264a Mon Sep 17 00:00:00 2001
From: Lukas Slebodnik <lslebodn@redhat.com>
Date: Thu, 16 Feb 2017 10:07:33 +0100
Subject: [PATCH 68/79] 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 <mbasti@redhat.com>
---
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 65b3e5ee401e453c51dcd55433be8d9fa3ce6c92..62f56517d46b43c10783ca93bb59d75cbedd9224 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 a9cfb32d59a5406fb1ad738d64c7487404f39a2d..ab873a726d4c1c35ed00fe4c431566ecef648880 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 8b741ea8c27efe2081ee200e6af02c322c5d53bc..f285b4971d0d9e826bf6cb38ebefeaf1b4422187 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)
--
2.9.3