From 67e0ceb48dfdc5f4e7fe8fc54c360c82b609ee4d Mon Sep 17 00:00:00 2001 From: Mihai Tudor Panu Date: Fri, 3 Feb 2017 21:26:42 -0800 Subject: [PATCH] tests: add test for duplicate headers Signed-off-by: Mihai Tudor Panu --- tests/CMakeLists.txt | 5 +++++ tests/check_duplicate_headers.py | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 tests/check_duplicate_headers.py diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2a6f732c..ca7f6509 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -9,6 +9,11 @@ if (PYTHON_DEFAULT_AVAILABLE) add_test (NAME check_file_encoding COMMAND ${PYTHON_DEFAULT_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/check_file_encoding.py WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src) + + # Check for duplicate headers + add_test (NAME check_duplicate_headers COMMAND ${PYTHON_DEFAULT_EXECUTABLE} + ${CMAKE_CURRENT_SOURCE_DIR}/check_duplicate_headers.py + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) endif (PYTHON_DEFAULT_AVAILABLE) # Add some java tests diff --git a/tests/check_duplicate_headers.py b/tests/check_duplicate_headers.py new file mode 100644 index 00000000..cd4e6e06 --- /dev/null +++ b/tests/check_duplicate_headers.py @@ -0,0 +1,27 @@ +#!/usr/bin/python + +import unittest +import os + +class DuplicateHeadersTests(unittest.TestCase): + '''Checks for duplicate header names. Since all sensor headers get + installed as part of the API, duplicate headers can cause bad linking, + namespace class collisions and so on.''' + + def test_duplicate_headers(self): + # Keep a list of all the header files in library + header_files = [] + + # Recusively search cwd for headers and add them to the list + for root, dirs, files in os.walk(os.curdir): + for file in files: + if file.endswith(('.h', '.hpp', '.hxx')): + header_files.append(file) + + # Test for duplicates + duplicates = len(header_files) - len(set(header_files)) + self.assertEqual(duplicates, 0, + "\nDuplicate headers: %d\n" % duplicates) + +if __name__ == '__main__': + unittest.main()