summaryrefslogtreecommitdiffstats
path: root/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/test.py
diff options
context:
space:
mode:
Diffstat (limited to 'debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/test.py')
-rw-r--r--debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/test.py296
1 files changed, 0 insertions, 296 deletions
diff --git a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/test.py b/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/test.py
deleted file mode 100644
index f621f40f..00000000
--- a/debian/uncrustify-trinity/uncrustify-trinity-0.78.0/tests/test_uncrustify/test.py
+++ /dev/null
@@ -1,296 +0,0 @@
-# Class encapsulating a unit test.
-#
-# * @author Ben Gardner October 2009
-# * @author Guy Maurel October 2015
-# * @author Matthew Woehlke June 2018
-#
-
-import filecmp
-import os
-import re
-import subprocess
-import sys
-import errno
-
-from .ansicolor import printc
-from .config import (config, test_dir, FAIL_ATTRS, PASS_ATTRS,
- MISMATCH_ATTRS, UNSTABLE_ATTRS)
-from .failure import (ExecutionFailure, MismatchFailure, MissingFailure,
- TestDeclarationParseError, UnexpectedlyPassingFailure,
- UnstableFailure)
-
-
-# =============================================================================
-class SourceTest(object):
- # -------------------------------------------------------------------------
- def __init__(self):
- self.test_result_dir = 'results'
-
- self.diff_text = 'MISMATCH'
- self.diff_attrs = MISMATCH_ATTRS
- self.diff_exception = MismatchFailure
-
- # -------------------------------------------------------------------------
- def _check_attr(self, name):
- if not hasattr(self, name) or getattr(self, name) is None:
- raise AttributeError(
- 'Test is missing required attribute {!r}'.format(name))
-
- # -------------------------------------------------------------------------
- def _make_abs(self, name, base):
- path = getattr(self, name)
- if not os.path.isabs(path):
- setattr(self, name, os.path.join(test_dir, base, path))
-
- # -------------------------------------------------------------------------
- def _diff(self, expected, actual):
- sys.stdout.flush()
- cmd = [config.git_exe, 'diff', '--no-index', expected, actual]
- subprocess.call(cmd)
-
- # -------------------------------------------------------------------------
- def build(self, test_input, test_lang, test_config, test_expected):
- self.test_name = os.path.basename(test_input)
- self.test_lang = test_lang
- self.test_input = test_input
- self.test_config = test_config
- self.test_expected = test_expected
- self.test_xfail = False
-
- # -------------------------------------------------------------------------
- def _check(self):
- self._check_attr('test_name')
- self._check_attr('test_lang')
- self._check_attr('test_input')
- self._check_attr('test_config')
- self._check_attr('test_expected')
- self._check_attr('test_xfail')
-
- # -------------------------------------------------------------------------
- def run(self, args):
- self._check()
-
- _expected = self.test_expected
- _result = os.path.join(args.result_dir, self.test_result_dir,
- os.path.basename(os.path.dirname(_expected)),
- os.path.basename(_expected))
-
- if args.verbose:
- print(self.test_name)
- print(' Language : {}'.format(self.test_lang))
- print(' Input : {}'.format(self.test_input))
- print(' Config : {}'.format(self.test_config))
- print(' Expected : {}'.format(_expected))
- print(' Result : {}'.format(_result))
- print(' XFail : {}'.format(self.test_xfail))
-
- if not os.path.exists(os.path.dirname(_result)):
- try:
- os.makedirs(os.path.dirname(_result))
- except OSError as e:
- if e.errno != errno.EEXIST:
- raise
-
- cmd = [
- config.uncrustify_exe,
- '-q',
- '-l', self.test_lang,
- '-c', self.test_config,
- '-f', self.test_input,
- '-o', _result
- ]
- if args.debug:
- cmd += [
- '-LA',
- '-p', _result + '.unc'
- ]
-
- else:
- cmd += ['-LA']
-
- if args.show_commands:
- printc('RUN: ', repr(cmd))
-
- try:
- output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
- except subprocess.CalledProcessError as exc:
- output = exc.output
- if not self.test_xfail:
- print(output.rstrip())
- msg = '{} (Uncrustify error code {})'
- msg = msg.format(self.test_name, exc.returncode)
- printc('FAILED: ', msg, **FAIL_ATTRS)
- raise ExecutionFailure(exc)
- elif args.xdiff:
- print(output.rstrip())
- finally:
- if args.debug:
- with open(_result + '.log', 'wt') as f:
- f.write(output)
-
- try:
- has_diff = not filecmp.cmp(_expected, _result)
- if has_diff and not self.test_xfail:
- if args.diff:
- self._diff(_expected, _result)
- printc('{}: '.format(self.diff_text),
- self.test_name, **self.diff_attrs)
- raise self.diff_exception(_expected, _result)
- if not has_diff and self.test_xfail:
- raise UnexpectedlyPassingFailure(_expected, _result)
- if has_diff and self.test_xfail:
- if args.xdiff:
- self._diff(_expected, _result)
- if not args.show_all:
- printc('XFAILED: ', self.test_name, **PASS_ATTRS)
- except OSError as exc:
- printc('MISSING: ', self.test_name, **self.diff_attrs)
- raise MissingFailure(exc, _expected)
-
-
-# =============================================================================
-class FormatTest(SourceTest):
- pass_config = ['test_config', 'test_rerun_config']
- pass_input = ['test_input', 'test_expected']
- pass_expected = ['test_expected', 'test_rerun_expected']
-
- re_test_declaration = re.compile(r'^(?P<num>\d+)(?P<mark>[~!]*)\s+'
- r'(?P<config>\S+)\s+(?P<input>\S+)'
- r'(?:\s+(?P<lang>\S+))?$')
-
- # -------------------------------------------------------------------------
- def _build_pass(self, i):
- p = SourceTest()
-
- p.test_name = self.test_name
- p.test_lang = self.test_lang
- p.test_config = getattr(self, self.pass_config[i])
- p.test_input = getattr(self, self.pass_input[i])
- p.test_expected = getattr(self, self.pass_expected[i])
- p.test_xfail = self.test_xfail
- if i == 1 and not os.path.exists(p.test_expected):
- p.test_expected = getattr(self, self.pass_expected[0])
-
- return p
-
- # -------------------------------------------------------------------------
- def _build_passes(self):
- self._check()
- self._check_attr('test_rerun_config')
- self._check_attr('test_rerun_expected')
-
- self._make_abs('test_input', 'input')
- self._make_abs('test_config', 'config')
- self._make_abs('test_expected', 'expected')
- self._make_abs('test_rerun_config', 'config')
- self._make_abs('test_rerun_expected', 'expected')
-
- self.test_passes = [
- self._build_pass(0),
- self._build_pass(1)]
-
- self.test_passes[1].test_name = self.test_name + ' (re-run)'
- self.test_passes[1].test_result_dir = 'results_2'
- self.test_passes[1].diff_text = 'UNSTABLE'
- self.test_passes[1].diff_attrs = UNSTABLE_ATTRS
- self.test_passes[1].diff_exception = UnstableFailure
-
- # -------------------------------------------------------------------------
- def build_from_declaration(self, decl, group, line_number):
- match = self.re_test_declaration.match(decl)
- if not match:
- raise TestDeclarationParseError(group, line_number)
-
- num = match.group('num')
- is_rerun = ('!' in match.group('mark'))
- is_xfail = ('~' in match.group('mark'))
-
- self.test_xfail = is_xfail
-
- self.test_config = match.group('config')
- self.test_input = match.group('input')
-
- test_dir = os.path.dirname(self.test_input)
- test_filename = os.path.basename(self.test_input)
-
- if match.group('lang'):
- self.test_lang = match.group('lang')
- else:
- self.test_lang = test_dir
-
- self.test_expected = os.path.join(
- test_dir, '{}-{}'.format(num, test_filename))
-
- def rerun_file(name):
- parts = name.split('.')
- return '.'.join(parts[:-1] + ['rerun'] + parts[-1:])
-
- if is_rerun:
- self.test_rerun_config = rerun_file(self.test_config)
- self.test_rerun_expected = rerun_file(self.test_expected)
- else:
- self.test_rerun_config = self.test_config
- self.test_rerun_expected = self.test_expected
-
- self.test_name = '{}:{}'.format(group, num)
-
- self._build_passes()
-
- # -------------------------------------------------------------------------
- def build_from_args(self, args):
- self.test_name = args.name
- self.test_lang = args.lang
- self.test_input = args.input
- self.test_config = args.config
- self.test_expected = args.expected
- self.test_rerun_config = args.rerun_config or args.config
- self.test_rerun_expected = args.rerun_expected or args.expected
- self.test_xfail = args.xfail
-
- self._build_passes()
-
- # -------------------------------------------------------------------------
- def print_as_ctest(self, out_file=sys.stdout):
- self._check()
-
- def to_cmake_path(obj):
- if type(obj) is dict:
- return {k: to_cmake_path(v) for k, v in obj.items()}
- if type(obj) is str:
- return obj.replace(os.sep, '/')
- return obj
-
- runner = os.path.join(test_dir, 'run_test.py')
-
- out_file.write(
- ('add_test({test_name}\n' +
- ' "{python_exe}" -S "{test_runner}" "{test_name}"\n' +
- ' --executable "{uncrustify_exe}"\n' +
- ' --lang "{test_lang}"\n' +
- ' --input "{test_input}"\n' +
- ' --config "{test_config}"\n' +
- ' --expected "{test_expected}"\n' +
- ' --rerun-config "{test_rerun_config}"\n' +
- ' --rerun-expected "{test_rerun_expected}"\n' +
- ' -d --git "{git_exe}"\n' +
- '{xfail}' +
- ')\n').format(
- test_runner=to_cmake_path(runner),
- python_exe=to_cmake_path(config.python_exe),
- uncrustify_exe=to_cmake_path(config.uncrustify_exe),
- git_exe=to_cmake_path(config.git_exe),
- xfail=(' --xfail\n' if self.test_xfail else ''),
- **to_cmake_path(self.__dict__)))
- out_file.write(
- ('set_tests_properties({}\n' +
- ' PROPERTIES LABELS "{}"\n)\n').format(
- self.test_name, self.test_name.split(':')[0]))
- #out_file.write(
- # ('set_tests_properties({}\n' +
- # ' PROPERTIES DEPENDS "sources_format"\n)\n').format(
- # self.test_name))
-
- # -------------------------------------------------------------------------
- def run(self, args):
- for p in self.test_passes:
- p.run(args)