summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2015-11-16 22:40:30 +0000
committerZachary Turner <zturner@google.com>2015-11-16 22:40:30 +0000
commitabdb8392281e0188f374152a7dc2033ff6ec691f (patch)
tree7f504cddf73033e9bbabd2a01b8a7714f7e04c48 /lldb/packages/Python/lldbsuite/test
parenteddf19f995ef5840f58cf69411290f9d63e0dd98 (diff)
downloadbcm5719-llvm-abdb8392281e0188f374152a7dc2033ff6ec691f.tar.gz
bcm5719-llvm-abdb8392281e0188f374152a7dc2033ff6ec691f.zip
Add the ability to xfail or skip based on swig / python version.
llvm-svn: 253263
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test')
-rw-r--r--lldb/packages/Python/lldbsuite/test/lldbtest.py65
1 files changed, 54 insertions, 11 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/lldbtest.py b/lldb/packages/Python/lldbsuite/test/lldbtest.py
index e52c5bf5eb7..fb14fba8319 100644
--- a/lldb/packages/Python/lldbsuite/test/lldbtest.py
+++ b/lldb/packages/Python/lldbsuite/test/lldbtest.py
@@ -37,6 +37,7 @@ from __future__ import absolute_import
# System modules
import abc
import collections
+from distutils.version import LooseVersion
import gc
import glob
import os, sys, traceback
@@ -472,6 +473,29 @@ def android_device_api():
">>> stderr:\n%s\n" % (stdout, stderr))
return android_device_api.result
+def check_expected_version(comparison, expected, actual):
+ def fn_leq(x,y): return x <= y
+ def fn_less(x,y): return x < y
+ def fn_geq(x,y): return x >= y
+ def fn_greater(x,y): return x > y
+ def fn_eq(x,y): return x == y
+ def fn_neq(x,y): return x != y
+
+ op_lookup = {
+ "==": fn_eq,
+ "=": fn_eq,
+ "!=": fn_neq,
+ "<>": fn_neq,
+ ">": fn_greater,
+ "<": fn_less,
+ ">=": fn_geq,
+ "<=": fn_leq
+ }
+ expected_str = '.'.join([str(x) for x in expected])
+ actual_str = '.'.join([str(x) for x in actual])
+
+ return op_lookup[comparison](LooseVersion(actual_str), LooseVersion(expected_str))
+
#
# Decorators for categorizing test cases.
#
@@ -620,13 +644,23 @@ def expectedFailure(expected_fn, bugnumber=None):
# @expectedFailureAll, xfail for all platform/compiler/arch,
# @expectedFailureAll(compiler='gcc'), xfail for gcc on all platform/architecture
# @expectedFailureAll(bugnumber, ["linux"], "gcc", ['>=', '4.9'], ['i386']), xfail for gcc>=4.9 on linux with i386
-def expectedFailureAll(bugnumber=None, oslist=None, compiler=None, compiler_version=None, archs=None, triple=None, debug_info=None):
+def expectedFailureAll(bugnumber=None, oslist=None, compiler=None, compiler_version=None, archs=None, triple=None, debug_info=None, swig_version=None, py_version=None):
def fn(self):
- return ((oslist is None or self.getPlatform() in oslist) and
- (compiler is None or (compiler in self.getCompiler() and self.expectedCompilerVersion(compiler_version))) and
- self.expectedArch(archs) and
- (triple is None or re.match(triple, lldb.DBG.GetSelectedPlatform().GetTriple())) and
- (debug_info is None or self.debug_info in debug_info))
+ oslist_passes = oslist is None or self.getPlatform() in oslist
+ compiler_passes = compiler is None or (compiler in self.getCompiler() and self.expectedCompilerVersion(compiler_version))
+ arch_passes = self.expectedArch(archs)
+ triple_passes = triple is None or re.match(triple, lldb.DBG.GetSelectedPlatform().GetTriple())
+ debug_info_passes = debug_info is None or self.debug_info in debug_info
+ swig_version_passes = (swig_version is None) or (not hasattr(lldb, 'swig_version')) or (check_expected_version(swig_version[0], swig_version[1], lldb.swig_version))
+ py_version_passes = (py_version is None) or check_expected_version(py_version[0], py_version[1], sys.version_info)
+
+ return (oslist_passes and
+ compiler_passes and
+ arch_passes and
+ triple_passes and
+ debug_info_passes and
+ swig_version_passes and
+ py_version_passes)
return expectedFailure(fn, bugnumber)
def expectedFailureDwarf(bugnumber=None):
@@ -1048,12 +1082,21 @@ def skipIfLinuxClang(func):
# @skipIf(bugnumber, ["linux"], "gcc", ['>=', '4.9'], ['i386']), skip for gcc>=4.9 on linux with i386
# TODO: refactor current code, to make skipIfxxx functions to call this function
-def skipIf(bugnumber=None, oslist=None, compiler=None, compiler_version=None, archs=None, debug_info=None):
+def skipIf(bugnumber=None, oslist=None, compiler=None, compiler_version=None, archs=None, debug_info=None, swig_version=None, py_version=None):
def fn(self):
- return ((oslist is None or self.getPlatform() in oslist) and
- (compiler is None or (compiler in self.getCompiler() and self.expectedCompilerVersion(compiler_version))) and
- self.expectedArch(archs) and
- (debug_info is None or self.debug_info in debug_info))
+ oslist_passes = oslist is None or self.getPlatform() in oslist
+ compiler_passes = compiler is None or (compiler in self.getCompiler() and self.expectedCompilerVersion(compiler_version))
+ arch_passes = self.expectedArch(archs)
+ debug_info_passes = debug_info is None or self.debug_info in debug_info
+ swig_version_passes = (swig_version is None) or (not hasattr(lldb, 'swig_version')) or (check_expected_version(swig_version[0], swig_version[1], lldb.swig_version))
+ py_version_passes = (py_version is None) or check_expected_version(py_version[0], py_version[1], sys.version_info)
+
+ return (oslist_passes and
+ compiler_passes and
+ arch_passes and
+ debug_info_passes and
+ swig_version_passes and
+ py_version_passes)
return skipTestIfFn(fn, bugnumber, skipReason="skipping because os:%s compiler: %s %s arch: %s debug info: %s"%(oslist, compiler, compiler_version, archs, debug_info))
def skipIfDebugInfo(bugnumber=None, debug_info=None):
OpenPOWER on IntegriCloud