# DExTer : Debugging Experience Tester # ~~~~~~ ~ ~~ ~ ~~ # # Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. # See https://llvm.org/LICENSE.txt for license information. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception """Unit test harness.""" from fnmatch import fnmatch import os import unittest from io import StringIO from dex.utils import is_native_windows, has_pywin32 from dex.utils import PreserveAutoColors, PrettyOutput from dex.utils import Timer class DexTestLoader(unittest.TestLoader): def _match_path(self, path, full_path, pattern): """Don't try to import platform-specific modules for the wrong platform during test discovery. """ d = os.path.basename(os.path.dirname(full_path)) if is_native_windows(): if d == "posix": return False if d == "windows": return has_pywin32() else: if d == "windows": return False elif d == "dbgeng": return False return fnmatch(path, pattern) def unit_tests_ok(context): unittest.TestCase.maxDiff = None # remove size limit from diff output. with Timer("unit tests"): suite = DexTestLoader().discover(context.root_directory, pattern="*.py") stream = StringIO() result = unittest.TextTestRunner(verbosity=2, stream=stream).run(suite) ok = result.wasSuccessful() if not ok or context.options.unittest == "show-all": with PreserveAutoColors(context.o): context.o.auto_reds.extend([r"FAIL(ED|\:)", r"\.\.\.\s(FAIL|ERROR)$"]) context.o.auto_greens.extend([r"^OK$", r"\.\.\.\sok$"]) context.o.auto_blues.extend([r"^Ran \d+ test"]) context.o.default("\n") for line in stream.getvalue().splitlines(True): context.o.auto(line, stream=PrettyOutput.stderr) return ok class TestUnitTests(unittest.TestCase): def test_sanity(self): self.assertEqual(1, 1)