summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Slebodnik <lslebodn@redhat.com>2017-02-16 10:07:33 +0100
committerLukas Slebodnik <lslebodn@redhat.com>2017-02-17 13:29:22 +0100
commitbac4458c89a589055ae3daf4f72cc7dba886264a (patch)
tree7c3b51b690bea37f008adc3ab6ec44aa1d8d406b
parent334029028e566fab3dce5ce4b1b53cc4809c21b8 (diff)
downloadsssd-bac4458c89a589055ae3daf4f72cc7dba886264a.tar.gz
sssd-bac4458c89a589055ae3daf4f72cc7dba886264a.tar.xz
sssd-bac4458c89a589055ae3daf4f72cc7dba886264a.zip
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>
-rw-r--r--src/tests/intg/files_ops.py3
-rw-r--r--src/tests/intg/sssd_group.py6
-rw-r--r--src/tests/intg/sssd_passwd.py11
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)