78 lines
2.2 KiB
Python
78 lines
2.2 KiB
Python
from __future__ import print_function, division
|
|
import sys
|
|
import platform
|
|
import unittest
|
|
import contextlib
|
|
import types
|
|
from llvm.tests import tests, isolated_tests # re-expose symbol
|
|
|
|
IS_PY3K = sys.version_info[0] >= 3
|
|
BITS = tuple.__itemsize__ * 8
|
|
OS = sys.platform
|
|
MACHINE = platform.machine()
|
|
INTEL_CPUS = 'i386', 'x86_64'
|
|
|
|
if sys.version_info[:2] <= (2, 6):
|
|
# create custom TestCase
|
|
class _TestCase(unittest.TestCase):
|
|
def assertIn(self, item, container):
|
|
self.assertTrue(item in container)
|
|
|
|
def assertNotIn(self, item, container):
|
|
self.assertFalse(item in container)
|
|
|
|
def assertLess(self, a, b):
|
|
self.assertTrue(a < b)
|
|
|
|
def assertIs(self, a, b):
|
|
self.assertTrue(a is b)
|
|
|
|
@contextlib.contextmanager
|
|
def assertRaises(self, exc):
|
|
try:
|
|
yield
|
|
except exc:
|
|
pass
|
|
else:
|
|
raise self.failureException("Did not raise %s" % exc)
|
|
|
|
else:
|
|
_TestCase = unittest.TestCase
|
|
|
|
class TestCase(_TestCase):
|
|
def assertClose(self, got, expect):
|
|
rel = abs(got - expect) / expect
|
|
self.assertTrue(rel < 1e-6, 'relative error = %f' % rel)
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Tests decorators
|
|
|
|
def _skipped(name, msg):
|
|
def _test(self):
|
|
if hasattr(unittest, 'SkipTest'):
|
|
raise unittest.SkipTest(msg)
|
|
else:
|
|
print('skipped %s' % name, msg)
|
|
return _test
|
|
|
|
def skip_if(cond, msg=''):
|
|
def skipper(test):
|
|
if not isinstance(test, types.FunctionType):
|
|
repl = None
|
|
else:
|
|
repl = _skipped(test, msg)
|
|
return repl if cond else test
|
|
return skipper
|
|
|
|
skip_if_not_64bits = skip_if(BITS != 64, msg='skipped not 64-bit')
|
|
|
|
skip_if_not_32bits = skip_if(BITS != 32, msg='skipped not 32-bits')
|
|
|
|
skip_if_win32 = skip_if(OS.startswith('win32'), msg='skipped win32')
|
|
|
|
skip_if_not_win32 = skip_if(not OS.startswith('win32'),
|
|
msg='skipped not win32')
|
|
skip_if_not_intel_cpu = skip_if(MACHINE not in INTEL_CPUS,
|
|
msg='skipped not Intel CPU')
|
|
|
|
|