From 8b68f3040e8a3e9706e52636f194082dd47d75aa Mon Sep 17 00:00:00 2001 From: Stefan Andritoiu Date: Tue, 19 Jan 2016 16:37:21 +0200 Subject: [PATCH] java: added sanity checks for sample mapping and bindings Signed-off-by: Stefan Andritoiu Signed-off-by: Brendan Le Foll --- tests/CMakeLists.txt | 10 ++++++ tests/check_clean.py | 23 ++++++++++++++ tests/check_samplenames.py | 64 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 97 insertions(+) create mode 100755 tests/check_clean.py create mode 100755 tests/check_samplenames.py diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 8a484c9..6ebb8bd 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,3 +1,13 @@ +if (BUILDSWIGJAVA) + add_test (NAME check_clean COMMAND ${PYTHON_EXECUTABLE} + ${CMAKE_CURRENT_SOURCE_DIR}/check_clean.py + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) + + add_test (NAME check_samplenames COMMAND ${PYTHON_EXECUTABLE} + ${CMAKE_CURRENT_SOURCE_DIR}/check_samplenames.py + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) +endif() + if (BUILDSWIGPYTHON) add_test (NAME py_general COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/general_checks.py) set_tests_properties(py_general PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_BINARY_DIR}/src/python/") diff --git a/tests/check_clean.py b/tests/check_clean.py new file mode 100755 index 0000000..7b47dc6 --- /dev/null +++ b/tests/check_clean.py @@ -0,0 +1,23 @@ +#!/usr/bin/python + +import unittest as u +import re, fnmatch, os + +rootDir = 'src/java' +swigtypeStr = 'SWIGTYPE' + +class Clean(u.TestCase): + + def test_existing_swigtype(self): + unclean = [] + + for fileName in os.listdir(rootDir): + if swigtypeStr in fileName: + unclean.append(fileName) + + self.assertEqual( len(unclean), 0, + "\nmraa contains unclean Java bindings:\n" + \ + "\n".join(unclean) + "\n\n") + +if __name__ == '__main__': + u.main() diff --git a/tests/check_samplenames.py b/tests/check_samplenames.py new file mode 100755 index 0000000..75df165 --- /dev/null +++ b/tests/check_samplenames.py @@ -0,0 +1,64 @@ +#!/usr/bin/python + +import unittest as u +import re, fnmatch, os, sys + +sampleMappingFile = '../examples/samples.mapping.txt' +cSamplesDir = '../examples/' +javaSamplesDir = '../examples/java/' +cppSamplesDir = '../examples/c++/' + +class SampleNames(u.TestCase): + + def test_existing_samples(self): + missing_c_files = [] + missing_cpp_files = [] + missing_java_files = [] + + with open (sampleMappingFile, "r") as f: + for line in f: + sampleNames = line.split(); + + cSampleName = sampleNames[0] + javaSampleName = sampleNames[1] + + #check for C files + if cSampleName.endswith('.c'): + ok = False + for file in os.listdir(cSamplesDir): + if file == cSampleName: + ok = True + break + if not ok: + missing_c_files.append(cSampleName) + + #check for Cpp files + if cSampleName.endswith('.cpp'): + ok = False + for file in os.listdir(cppSamplesDir): + if file == cSampleName: + ok = True + break + if not ok: + missing_cpp_files.append(cSampleName) + + #check for java files + javaSampleName = javaSampleName.lstrip("java/") + if javaSampleName.endswith('.java'): + ok = False + for file in os.listdir(javaSamplesDir): + if file == javaSampleName: + ok = True + break + if not ok: + missing_java_files.append(javaSampleName) + + self.assertEqual( len(missing_java_files) + len(missing_c_files) + len(missing_cpp_files), 0, + "\nThe following files are missing from samples:\n" + \ + "\n".join(missing_c_files) + "\n" + \ + "\n".join(missing_cpp_files) + "\n" + \ + "\n".join(missing_java_files)) + +if __name__ == '__main__': + u.main() +