From 51eaed7fb243a989fdf96461ba2d9acfc07977f8 Mon Sep 17 00:00:00 2001 From: Emmanuel Dreyfus Date: Wed, 26 Nov 2014 09:59:25 +0100 Subject: Regression test portability: batch of bugs (volume 2) Fix various regression test portability in tests/bugs. bug-861542.t - Avoid syntax specific to GNU sed. bug-860663.t - Command argument length is system dependent, and specifying 1000 file path may overflow it. Use a C program to do the job in a portable and efficient way. - Add a test that we created the specified amount of files. bug-858242.c, bug-808400-fcntl.c, bug-808400-flock.c - fstat64() is Linux-specific. Define it as fstat for other systems. bug-823081.t - Use portable tail -n instead of tail --lines In many tests: - Do not assume python interpreter name. Use $PYTHON as defined in env.rc by configure. utils/libcxattr.py - If python version is 2.6 or higher, use a portable mechanism to recover errno. The original version is retained for python version 2.5 and earlier but it only works on Linux. BUG: 1129939 Change-Id: If2fea1ffec5cc6ab2de426fb200e884450afe61b Signed-off-by: Emmanuel Dreyfus Reviewed-on: http://review.gluster.org/9097 Tested-by: Gluster Build System Reviewed-by: Vijay Bellur --- tests/utils/libcxattr.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'tests/utils/libcxattr.py') diff --git a/tests/utils/libcxattr.py b/tests/utils/libcxattr.py index 74d120fa196..149db72e6ee 100644 --- a/tests/utils/libcxattr.py +++ b/tests/utils/libcxattr.py @@ -9,6 +9,7 @@ # import os +import sys from ctypes import CDLL, c_int, create_string_buffer from ctypes.util import find_library @@ -25,10 +26,18 @@ class Xattr(object): sizes we expect """ - libc = CDLL(find_library("libc")) + if sys.hexversion >= 0x02060000: + from ctypes import DEFAULT_MODE + libc = CDLL(find_library("libc"), DEFAULT_MODE, None, True) + else: + libc = CDLL(find_library("libc")) @classmethod def geterrno(cls): + if sys.hexversion >= 0x02060000: + from ctypes import get_errno + return get_errno() + # breaks on NetBSD return c_int.in_dll(cls.libc, 'errno').value @classmethod -- cgit