summaryrefslogtreecommitdiff
path: root/testing/support.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/support.py')
-rw-r--r--testing/support.py37
1 files changed, 34 insertions, 3 deletions
diff --git a/testing/support.py b/testing/support.py
index 65f010c..6339a94 100644
--- a/testing/support.py
+++ b/testing/support.py
@@ -1,7 +1,7 @@
-import sys
+import sys, os
if sys.version_info < (3,):
- __all__ = ['u']
+ __all__ = ['u', 'arraytostring']
class U(object):
def __add__(self, other):
@@ -12,12 +12,16 @@ if sys.version_info < (3,):
assert u+'a\x00b' == eval(r"u'a\x00b'")
assert u+'a\u1234b' == eval(r"u'a\u1234b'")
assert u+'a\U00012345b' == eval(r"u'a\U00012345b'")
+ def arraytostring(a):
+ return a.tostring()
else:
- __all__ = ['u', 'unicode', 'long']
+ __all__ = ['u', 'unicode', 'long', 'arraytostring']
u = ""
unicode = str
long = int
+ def arraytostring(a):
+ return a.tobytes()
class StdErrCapture(object):
@@ -29,9 +33,14 @@ class StdErrCapture(object):
from io import StringIO
self.old_stderr = sys.stderr
sys.stderr = f = StringIO()
+ if hasattr(sys, '__unraisablehook__'): # work around pytest
+ self.old_unraisablebook = sys.unraisablehook # on recent CPythons
+ sys.unraisablehook = sys.__unraisablehook__
return f
def __exit__(self, *args):
sys.stderr = self.old_stderr
+ if hasattr(self, 'old_unraisablebook'):
+ sys.unraisablehook = self.old_unraisablebook
class FdWriteCapture(object):
@@ -86,3 +95,25 @@ def _verify(ffi, module_name, preamble, *args, **kwds):
if not name.startswith('_') and not hasattr(module.ffi, name):
setattr(ffi, name, NotImplemented)
return module.lib
+
+
+# For testing, we call gcc with "-Werror". This is fragile because newer
+# versions of gcc are always better at producing warnings, particularly for
+# auto-generated code. We need here to adapt and silence them as needed.
+
+if sys.platform == 'win32':
+ extra_compile_args = [] # no obvious -Werror equivalent on MSVC
+else:
+ if (sys.platform == 'darwin' and
+ [int(x) for x in os.uname()[2].split('.')] >= [11, 0, 0]):
+ # assume a standard clang or gcc
+ extra_compile_args = ['-Werror', '-Wall', '-Wextra', '-Wconversion',
+ '-Wno-unused-parameter',
+ '-Wno-unreachable-code']
+ # special things for clang
+ extra_compile_args.append('-Qunused-arguments')
+ else:
+ # assume a standard gcc
+ extra_compile_args = ['-Werror', '-Wall', '-Wextra', '-Wconversion',
+ '-Wno-unused-parameter',
+ '-Wno-unreachable-code']