Index: lldb/trunk/packages/Python/lldbsuite/test/decorators.py =================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/decorators.py +++ lldb/trunk/packages/Python/lldbsuite/test/decorators.py @@ -4,6 +4,7 @@ # System modules from distutils.version import LooseVersion, StrictVersion from functools import wraps +import itertools import os import re import sys @@ -20,6 +21,7 @@ from . import test_categories from .result_formatter import EventBuilder from lldbsuite.support import funcutils +from lldbsuite.test import lldbplatform from lldbsuite.test import lldbplatformutil class DecorateMode: @@ -138,8 +140,8 @@ swig_version=None, py_version=None, remote=None): def fn(self): - skip_for_os = _match_decorator_property(oslist, self.getPlatform()) - skip_for_hostos = _match_decorator_property(hostoslist, lldbplatformutil.getHostPlatform()) + skip_for_os = _match_decorator_property(lldbplatform.translate(oslist), self.getPlatform()) + skip_for_hostos = _match_decorator_property(lldbplatform.translate(hostoslist), lldbplatformutil.getHostPlatform()) skip_for_compiler = _match_decorator_property(compiler, self.getCompiler()) and self.expectedCompilerVersion(compiler_version) skip_for_arch = _match_decorator_property(archs, self.getArchitecture()) skip_for_debug_info = _match_decorator_property(debug_info, self.debug_info) @@ -296,10 +298,10 @@ def expectedFailureDarwin(bugnumber=None, compilers=None, debug_info=None): # For legacy reasons, we support both "darwin" and "macosx" as OS X triples. - return expectedFailureOS(lldbplatformutil.getDarwinOSTriples(), bugnumber, compilers, debug_info=debug_info) + return expectedFailureOS(lldbplatform.darwin_all, bugnumber, compilers, debug_info=debug_info) def expectedFailureFreeBSD(bugnumber=None, compilers=None, debug_info=None): - return expectedFailureOS(['freebsd'], bugnumber, compilers, debug_info=debug_info) + return expectedFailureOS(lldbplatform.freebsd, bugnumber, compilers, debug_info=debug_info) def expectedFailureAndroid(bugnumber=None, api_levels=None, archs=None): """ Mark a test as xfail for Android. @@ -426,7 +428,7 @@ def skipIfDarwin(func): """Decorate the item to skip tests that should be skipped on Darwin.""" - return skipIfPlatform(lldbplatformutil.getDarwinOSTriples())(func) + return skipIfPlatform(lldbplatform.translate(lldbplatform.darwin_all))(func) def skipIfLinux(func): """Decorate the item to skip tests that should be skipped on Linux.""" Index: lldb/trunk/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py =================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py +++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py @@ -10,6 +10,7 @@ import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbplatform from lldbsuite.test import lldbutil class AsanTestCase(TestBase): @@ -20,7 +21,7 @@ @skipIfFreeBSD # llvm.org/pr21136 runtimes not yet available by default @skipIfRemote @skipUnlessCompilerRt - @expectedFailureDarwin + @expectedFailureAll(oslist=lldbplatform.darwin_all) def test (self): self.build () self.asan_tests () Index: lldb/trunk/packages/Python/lldbsuite/test/functionalities/completion/TestCompletion.py =================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/functionalities/completion/TestCompletion.py +++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/completion/TestCompletion.py @@ -10,6 +10,7 @@ import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbplatform from lldbsuite.test import lldbutil class CommandLineCompletionTestCase(TestBase): @@ -256,7 +257,7 @@ self.complete_from_to('target va', 'target variable ') @expectedFailureAll(hostoslist=["windows"], bugnumber="llvm.org/pr24679") - @expectedFailureDarwin("llvm.org/pr25485") + @expectedFailureAll(oslist=lldbplatform.darwin_all, bugnumber="llvm.org/pr25485") def test_symbol_name(self): self.build() self.complete_from_to('''file a.out Index: lldb/trunk/packages/Python/lldbsuite/test/lldbplatform.py =================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/lldbplatform.py +++ lldb/trunk/packages/Python/lldbsuite/test/lldbplatform.py @@ -0,0 +1,44 @@ +""" This module represents an abstraction of an lldb target / host platform. """ + +from __future__ import absolute_import + +# System modules +import itertools + +# Third-party modules +import six + +# LLDB modules +import use_lldb_suite +import lldb + +windows, linux, macosx, darwin, ios, darwin_all, freebsd, netbsd, bsd_all, android = range(10) + +__name_lookup = { + windows : ["windows"], + linux : ["linux"], + macosx : ["macosx"], + darwin : ["darwin"], + ios : ["ios"], + darwin_all : ["macosx", "darwin", "ios"], + freebsd : ["freebsd"], + netbsd : ["netbsd"], + bsd_all : ["freebsd", "netbsd"], + android : ["android"] +} + + +def translate(values): + + if isinstance(values, six.integer_types): + # This is a value from the platform enumeration, translate it. + return __name_lookup[values] + elif isinstance(values, six.string_types): + # This is a raw string, return it. + return [values] + elif hasattr(values, "__iter__"): + # This is an iterable, convert each item. + result = [translate(x) for x in values] + result = list(itertools.chain(*result)) + return result + return values Index: lldb/trunk/packages/Python/lldbsuite/test/lldbplatformutil.py =================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/lldbplatformutil.py +++ lldb/trunk/packages/Python/lldbsuite/test/lldbplatformutil.py @@ -4,11 +4,13 @@ from __future__ import absolute_import # System modules +import itertools import re import subprocess import sys # Third-party modules +import six from six.moves.urllib import parse as urlparse # LLDB modules