396c651083
Required for: https://bugzilla.redhat.com/show_bug.cgi?id=1357418 - SSSD fast cache for local users
100 lines
3.7 KiB
Diff
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
|
|
|