Skip to content

Commit

Permalink
Implement run_sources_tests.py
Browse files Browse the repository at this point in the history
Add SourceTest.build method to construct a test to verify correct
formatting of a file. Add new front-end run_sources_tests.py to set up
tests to verify that uncrustify's own sources are correctly formatted.
Add a CTest to run these tests.
  • Loading branch information
mwoehlke-kitware committed Sep 3, 2018
1 parent 505d498 commit e52def3
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 1 deletion.
9 changes: 9 additions & 0 deletions tests/CMakeLists.txt
Expand Up @@ -50,6 +50,15 @@ else()
endforeach()
endif()

add_test(
NAME sources_format
COMMAND ${PYTHON_EXECUTABLE} run_sources_tests.py
--executable $<TARGET_FILE:uncrustify>
-d --git ${GIT_EXECUTABLE}
--result-dir ${CMAKE_CURRENT_BINARY_DIR}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)

add_test(
NAME cli_options
COMMAND ${PYTHON_EXECUTABLE}
Expand Down
2 changes: 1 addition & 1 deletion tests/run_format_tests.py
Expand Up @@ -17,7 +17,7 @@

# -----------------------------------------------------------------------------
def main(argv):
parser = argparse.ArgumentParser(description='Run uncrustify tests')
parser = argparse.ArgumentParser(description='Run uncrustify format tests')
tu.add_format_tests_arguments(parser)
args = tu.parse_args(parser)

Expand Down
47 changes: 47 additions & 0 deletions tests/run_sources_tests.py
@@ -0,0 +1,47 @@
#!/usr/bin/env python
#
# Checks the formatting of uncrustify's own sources.
#
# * @author Matthew Woehlke June 2018
#

import argparse
import os
import sys

import test_uncrustify as tu


# -----------------------------------------------------------------------------
def main(argv):
parser = argparse.ArgumentParser(description='Run uncrustify source tests')
tu.add_source_tests_arguments(parser)
args = tu.parse_args(parser)

# Get required filesystem information
root = os.path.dirname(tu.test_dir)
src_dir = os.path.join(root, 'src')
config = os.path.join(root, 'forUncrustifySources.cfg')

# Create tests
tests = []
for s in os.listdir(src_dir):
if os.path.splitext(s)[1] in ('.cpp', '.h'):
t = tu.SourceTest()
t.build(test_input=os.path.join(src_dir, s),
test_lang='CPP', test_config=config)
tests.append(t)

counts = tu.run_tests(tests, args)
tu.report(counts)

if counts['failing'] > 0:
sys.exit(2)
if counts['mismatch'] > 0:
sys.exit(1)


# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

if __name__ == '__main__':
sys.exit(main(sys.argv))
8 changes: 8 additions & 0 deletions tests/test_uncrustify/test.py
Expand Up @@ -45,6 +45,14 @@ def _diff(self, expected, actual):
cmd = [config.git_exe, 'diff', '--no-index', expected, actual]
subprocess.call(cmd)

# -------------------------------------------------------------------------
def build(self, test_input, test_lang, test_config):
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_input

# -------------------------------------------------------------------------
def _check(self):
self._check_attr('test_name')
Expand Down

0 comments on commit e52def3

Please sign in to comment.