From d978517ec201cb2421168417124de12ff7ef8457 Mon Sep 17 00:00:00 2001 From: eidheim Date: Mon, 28 Aug 2017 09:18:59 +0200 Subject: [PATCH] Cleanup of CMakeLists.txt files, and removed boost dependency from tests --- CMakeLists.txt | 9 ++- README.md | 11 +--- ci/compile.sh | 4 +- src/CMakeLists.txt | 11 ---- tests/CMakeLists.txt | 65 +++++++++---------- tests/CompletionString_H_Test.cc | 36 ---------- tests/Cursor_H_Test.cc | 18 ----- tests/Diagnostics_Test.cc | 19 ------ tests/Entry.cc | 2 - tests/SourceLocation_H_Test.cc | 17 ----- tests/Token_H_Test.cc | 19 ------ ..._Test.cc => code_complete_results_test.cc} | 14 ++-- tests/completion_string_test.cc | 35 ++++++++++ tests/cursor_test.cc | 15 +++++ tests/diagnostics_test.cc | 20 ++++++ tests/source_location_test.cc | 18 +++++ tests/token_test.cc | 20 ++++++ ...nUnit_Test.cc => translation_unit_test.cc} | 9 +-- 18 files changed, 161 insertions(+), 181 deletions(-) delete mode 100644 tests/CompletionString_H_Test.cc delete mode 100644 tests/Cursor_H_Test.cc delete mode 100644 tests/Diagnostics_Test.cc delete mode 100644 tests/Entry.cc delete mode 100644 tests/SourceLocation_H_Test.cc delete mode 100644 tests/Token_H_Test.cc rename tests/{CodeCompleteResults_H_Test.cc => code_complete_results_test.cc} (75%) create mode 100644 tests/completion_string_test.cc create mode 100644 tests/cursor_test.cc create mode 100644 tests/diagnostics_test.cc create mode 100644 tests/source_location_test.cc create mode 100644 tests/token_test.cc rename tests/{TranslationUnit_Test.cc => translation_unit_test.cc} (67%) diff --git a/CMakeLists.txt b/CMakeLists.txt index d7de0ff..e53a925 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,10 @@ cmake_minimum_required (VERSION 2.8.4) set(project_name clangmm) project(${project_name}) -option(LIBCLANGMM_BUILD_TESTS "Build unit tests" OFF) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O3 -Wall -Wextra -Wno-unused-parameter") + +list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/Modules") +find_package(LibClang REQUIRED) if(APPLE) set(Boost_USE_STATIC_LIBS "YES") @@ -11,7 +14,9 @@ endif() add_subdirectory(src) -if(LIBCLANGMM_BUILD_TESTS) +option(BUILD_TESTING Off) +# To enable tests: cmake -DBUILD_TESTING=1 .. +if(BUILD_TESTING) enable_testing() add_subdirectory(tests) endif() diff --git a/README.md b/README.md index 8ac14d1..0b621a3 100644 --- a/README.md +++ b/README.md @@ -14,15 +14,10 @@ Developed for [juCi++](https://github.com/cppit/jucipp), a lightweight, platform See [installation guide](https://github.com/cppit/libclangmm/blob/master/docs/install.md) # Tests # -To run the unit tests, first enable the CMake option `LIBCLANGMM_BUILD_TESTS`: +To run the unit tests: ```sh mkdir build && cd build -cmake -DLIBCLANGMM_BUILD_TESTS=ON .. -``` -Then, run the tests: -```sh +cmake -DBUILD_TESTING=1 .. make -cd ../tests -../build/tests/clangmm_tests --log_level=all +make test ``` -For more options, see the [documentation of boost’s unit testing framework](http://www.boost.org/doc/libs/1_58_0/libs/test/doc/html/utf/user-guide/runtime-config/reference.html). diff --git a/ci/compile.sh b/ci/compile.sh index 451bdcd..5d6d073 100755 --- a/ci/compile.sh +++ b/ci/compile.sh @@ -7,10 +7,10 @@ if [ "${cmake_command}" == "" ]; then else mingw="mingw32" fi - cmake_command="cmake -G\"MSYS Makefiles\" -DCMAKE_INSTALL_PREFIX=/${mingw} -LIBCLANGMM_BUILD_TESTS=ON .." + cmake_command="cmake -G\"MSYS Makefiles\" -DCMAKE_INSTALL_PREFIX=/${mingw} -DBUILD_TESTING=1 .." make_command="make" else - cmake_command="cmake -LIBCLANGMM_BUILD_TESTS=ON .." + cmake_command="cmake -DBUILD_TESTING=1 .." fi fi diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 75506fc..afc07c4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,16 +1,5 @@ -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O3 -Wall -Wextra -Wno-unused-parameter -Wno-reorder") set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_HOME_DIRECTORY}/cmake/Modules/") - -message("Searcing for libclang") -#LIBCLANG_FOUND System has libclang. -#LIBCLANG_INCLUDE_DIRS The libclang include directories. -#LIBCLANG_LIBRARIES The libraries needed to use libclang. -#LIBCLANG_LIBRARY_DIR The path to the directory containing libclang. -#LIBCLANG_KNOWN_LLVM_VERSIONS Known LLVM release numbers. -find_package(LibClang REQUIRED) - set(header_files clangmm.h CodeCompleteResults.h diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 10befc3..4d3f318 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,36 +1,33 @@ set(project_tests ${project_name}_tests) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") - -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_HOME_DIRECTORY}/cmake/Modules/") - -add_definitions(-DBOOST_TEST_STATIC_LINK) - -message("Searching for libclang") -#LIBCLANG_FOUND System has libclang. -#LIBCLANG_INCLUDE_DIRS The libclang include directories. -#LIBCLANG_LIBRARIES The libraries needed to use libclang. -#LIBCLANG_LIBRARY_DIR The path to the directory containing libclang. -#LIBCLANG_KNOWN_LLVM_VERSIONS Known LLVM release numbers. -find_package(LibClang REQUIRED) -find_package(Boost 1.55 COMPONENTS unit_test_framework system filesystem REQUIRED) - -add_executable(${project_tests} - Entry.cc - TranslationUnit_Test.cc - CompletionString_H_Test.cc - CodeCompleteResults_H_Test.cc - Cursor_H_Test.cc - Token_H_Test.cc - SourceLocation_H_Test.cc - Diagnostics_Test.cc - ) - -include_directories(${LIBCLANG_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} "${CMAKE_SOURCE_DIR}/src") -target_link_libraries(${project_tests} ${LIBCLANG_LIBRARIES} ${Boost_LIBRARIES} clangmm) - -set(tests - ${project_tests} - ) - -add_test(${tests} ${tests}) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DLIBCLANGMM_TESTS_PATH=\\\"${CMAKE_CURRENT_SOURCE_DIR}\\\"") + +include_directories(${LIBCLANG_INCLUDE_DIRS} "${PROJECT_SOURCE_DIR}/src") + +add_executable(code_complete_results_test code_complete_results_test.cc) +target_link_libraries(code_complete_results_test ${LIBCLANG_LIBRARIES} clangmm) +add_test(code_complete_results_test code_complete_results_test) + +add_executable(completion_string_test completion_string_test.cc) +target_link_libraries(completion_string_test ${LIBCLANG_LIBRARIES} clangmm) +add_test(completion_string_test completion_string_test) + +add_executable(cursor_test cursor_test.cc) +target_link_libraries(cursor_test ${LIBCLANG_LIBRARIES} clangmm) +add_test(cursor_test cursor_test) + +add_executable(diagnostics_test diagnostics_test.cc) +target_link_libraries(diagnostics_test ${LIBCLANG_LIBRARIES} clangmm) +add_test(diagnostics_test diagnostics_test) + +add_executable(source_location_test source_location_test.cc) +target_link_libraries(source_location_test ${LIBCLANG_LIBRARIES} clangmm) +add_test(source_location_test source_location_test) + +add_executable(token_test token_test.cc) +target_link_libraries(token_test ${LIBCLANG_LIBRARIES} clangmm) +add_test(token_test token_test) + +add_executable(translation_unit_test translation_unit_test.cc) +target_link_libraries(translation_unit_test ${LIBCLANG_LIBRARIES} clangmm) +add_test(translation_unit_test translation_unit_test) diff --git a/tests/CompletionString_H_Test.cc b/tests/CompletionString_H_Test.cc deleted file mode 100644 index 558066a..0000000 --- a/tests/CompletionString_H_Test.cc +++ /dev/null @@ -1,36 +0,0 @@ -#include -#include "clangmm.h" -#include - -BOOST_AUTO_TEST_CASE(completion_chunk) { - clangmm::CompletionChunk str("(", clangmm::CompletionChunk_LeftBrace); - - BOOST_CHECK(str.chunk == "("); - BOOST_CHECK(str.kind == clangmm::CompletionChunk_LeftBrace); -} - -BOOST_AUTO_TEST_CASE(completion_string) { - - // [ Should be changed with mockery - - std::string path("./case/main.cpp"); - - clangmm::Index index(0, 0); - clangmm::TranslationUnit tu(index, path, {}); - - std::string buffer="#include \n" - "int main(int argc, char *argv[]) {\n" - "std::string str;\n" - "str.\n" - "return 0\n" - "}"; - - tu.reparse(buffer); - auto results=tu.get_code_completions(buffer, 4, 5); - // ] - - auto str = results.get(0); - - BOOST_CHECK(str.get_num_chunks()>0); - BOOST_CHECK(str.get_chunks().size()>0); -} diff --git a/tests/Cursor_H_Test.cc b/tests/Cursor_H_Test.cc deleted file mode 100644 index 6c54299..0000000 --- a/tests/Cursor_H_Test.cc +++ /dev/null @@ -1,18 +0,0 @@ -#include -#include "clangmm.h" -#include - -BOOST_AUTO_TEST_CASE(cursor) { - // [ Should be changed with mockery - - std::string path("./case/main.cpp"); - - clangmm::Index index(0, 0); - clangmm::TranslationUnit tu(index, path, {}); - - // ] - - auto cursor=tu.get_cursor(path, 103); - - BOOST_CHECK(cursor.get_kind() == clangmm::Cursor::Kind::ReturnStmt); -} diff --git a/tests/Diagnostics_Test.cc b/tests/Diagnostics_Test.cc deleted file mode 100644 index f24e979..0000000 --- a/tests/Diagnostics_Test.cc +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include "clangmm.h" -#include -#include - -using namespace std; - -BOOST_AUTO_TEST_CASE(diagnostics_test) { - std::string path("./case/main_error.cpp"); - - clangmm::Index index(0, 0); - - clangmm::TranslationUnit tu(index, path, {}); - - auto diagnostics=tu.get_diagnostics(); - BOOST_CHECK(diagnostics.size()>0); - BOOST_CHECK(!diagnostics[0].spelling.empty()); - BOOST_CHECK(diagnostics[0].severity==3); -} diff --git a/tests/Entry.cc b/tests/Entry.cc deleted file mode 100644 index 6979bbb..0000000 --- a/tests/Entry.cc +++ /dev/null @@ -1,2 +0,0 @@ -#define BOOST_TEST_MODULE clangmm_tests -#include diff --git a/tests/SourceLocation_H_Test.cc b/tests/SourceLocation_H_Test.cc deleted file mode 100644 index e71131b..0000000 --- a/tests/SourceLocation_H_Test.cc +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include "clangmm.h" -#include - -BOOST_AUTO_TEST_CASE(source_location) { - std::string path("./case/main.cpp"); - - clangmm::Index index(0, 0); - - clangmm::TranslationUnit tu(index, path, {}); - auto tokens=tu.get_tokens(0, 113); - - auto offsets=(*tokens)[28].offsets; - - BOOST_CHECK(offsets.first.line == 6 && offsets.first.index == 3); - BOOST_CHECK(offsets.second.line == 6 && offsets.second.index == 9); -} diff --git a/tests/Token_H_Test.cc b/tests/Token_H_Test.cc deleted file mode 100644 index 1bbd45b..0000000 --- a/tests/Token_H_Test.cc +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include "clangmm.h" -#include - -BOOST_AUTO_TEST_CASE(token) { - std::string path("./case/main.cpp"); - - clangmm::Index index(0, 0); - - clangmm::TranslationUnit tu(index, path, {}); - - auto tokens=tu.get_tokens(0, 113); - - BOOST_CHECK(tokens->size() == 32); - BOOST_CHECK((*tokens)[1].get_kind() == clangmm::Token::Kind::Identifier); - - std::string str = (*tokens)[28].get_spelling(); - BOOST_CHECK(str == "return"); -} diff --git a/tests/CodeCompleteResults_H_Test.cc b/tests/code_complete_results_test.cc similarity index 75% rename from tests/CodeCompleteResults_H_Test.cc rename to tests/code_complete_results_test.cc index d3672a2..7af133a 100644 --- a/tests/CodeCompleteResults_H_Test.cc +++ b/tests/code_complete_results_test.cc @@ -1,12 +1,10 @@ -#include #include "clangmm.h" #include +#include -BOOST_AUTO_TEST_CASE(code_complete_results) { - - // [ Should be changed with mockery - - std::string path("./case/main.cpp"); +int main() { + std::string tests_path=LIBCLANGMM_TESTS_PATH; + std::string path(tests_path+"/case/main.cpp"); clangmm::Index index(0, 0); clangmm::TranslationUnit tu(index, path, {}); @@ -18,8 +16,6 @@ BOOST_AUTO_TEST_CASE(code_complete_results) { "return 0\n" "}"; - // ] - tu.reparse(buffer); auto results=tu.get_code_completions(buffer, 4, 5); @@ -30,5 +26,5 @@ BOOST_AUTO_TEST_CASE(code_complete_results) { break; } } - BOOST_CHECK(substr_found); + assert(substr_found); } diff --git a/tests/completion_string_test.cc b/tests/completion_string_test.cc new file mode 100644 index 0000000..5922560 --- /dev/null +++ b/tests/completion_string_test.cc @@ -0,0 +1,35 @@ +#include "clangmm.h" +#include +#include + +int main() { + { + clangmm::CompletionChunk str("(", clangmm::CompletionChunk_LeftBrace); + + assert(str.chunk == "("); + assert(str.kind == clangmm::CompletionChunk_LeftBrace); + } + + { + std::string tests_path=LIBCLANGMM_TESTS_PATH; + std::string path(tests_path+"/case/main.cpp"); + + clangmm::Index index(0, 0); + clangmm::TranslationUnit tu(index, path, {}); + + std::string buffer="#include \n" + "int main(int argc, char *argv[]) {\n" + "std::string str;\n" + "str.\n" + "return 0\n" + "}"; + + tu.reparse(buffer); + auto results=tu.get_code_completions(buffer, 4, 5); + + auto str = results.get(0); + + assert(str.get_num_chunks()>0); + assert(str.get_chunks().size()>0); + } +} diff --git a/tests/cursor_test.cc b/tests/cursor_test.cc new file mode 100644 index 0000000..556f0cd --- /dev/null +++ b/tests/cursor_test.cc @@ -0,0 +1,15 @@ +#include "clangmm.h" +#include +#include + +int main() { + std::string tests_path=LIBCLANGMM_TESTS_PATH; + std::string path(tests_path+"/case/main.cpp"); + + clangmm::Index index(0, 0); + clangmm::TranslationUnit tu(index, path, {}); + + auto cursor=tu.get_cursor(path, 103); + + assert(cursor.get_kind() == clangmm::Cursor::Kind::ReturnStmt); +} diff --git a/tests/diagnostics_test.cc b/tests/diagnostics_test.cc new file mode 100644 index 0000000..c6bc419 --- /dev/null +++ b/tests/diagnostics_test.cc @@ -0,0 +1,20 @@ +#include "clangmm.h" +#include +#include +#include + +using namespace std; + +int main() { + std::string tests_path=LIBCLANGMM_TESTS_PATH; + std::string path(tests_path+"/case/main_error.cpp"); + + clangmm::Index index(0, 0); + + clangmm::TranslationUnit tu(index, path, {}); + + auto diagnostics=tu.get_diagnostics(); + assert(diagnostics.size()>0); + assert(!diagnostics[0].spelling.empty()); + assert(diagnostics[0].severity==3); +} diff --git a/tests/source_location_test.cc b/tests/source_location_test.cc new file mode 100644 index 0000000..a0d2956 --- /dev/null +++ b/tests/source_location_test.cc @@ -0,0 +1,18 @@ +#include "clangmm.h" +#include +#include + +int main() { + std::string tests_path=LIBCLANGMM_TESTS_PATH; + std::string path(tests_path+"/case/main.cpp"); + + clangmm::Index index(0, 0); + + clangmm::TranslationUnit tu(index, path, {}); + auto tokens=tu.get_tokens(0, 113); + + auto offsets=(*tokens)[28].get_source_range().get_offsets(); + + assert(offsets.first.line == 6 && offsets.first.index == 3); + assert(offsets.second.line == 6 && offsets.second.index == 9); +} diff --git a/tests/token_test.cc b/tests/token_test.cc new file mode 100644 index 0000000..1ffd22a --- /dev/null +++ b/tests/token_test.cc @@ -0,0 +1,20 @@ +#include "clangmm.h" +#include +#include + +int main() { + std::string tests_path=LIBCLANGMM_TESTS_PATH; + std::string path(tests_path+"/case/main.cpp"); + + clangmm::Index index(0, 0); + + clangmm::TranslationUnit tu(index, path, {}); + + auto tokens=tu.get_tokens(0, 113); + + assert(tokens->size() == 32); + assert((*tokens)[1].get_kind() == clangmm::Token::Kind::Identifier); + + std::string str = (*tokens)[28].get_spelling(); + assert(str == "return"); +} diff --git a/tests/TranslationUnit_Test.cc b/tests/translation_unit_test.cc similarity index 67% rename from tests/TranslationUnit_Test.cc rename to tests/translation_unit_test.cc index 75be196..0dbefc3 100644 --- a/tests/TranslationUnit_Test.cc +++ b/tests/translation_unit_test.cc @@ -1,10 +1,11 @@ -#include #include "clangmm.h" #include #include +#include -BOOST_AUTO_TEST_CASE(translation_unit) { - std::string path("./case/main.cpp"); +int main() { + std::string tests_path=LIBCLANGMM_TESTS_PATH; + std::string path(tests_path+"/case/main.cpp"); clangmm::Index index(0, 0); @@ -15,5 +16,5 @@ BOOST_AUTO_TEST_CASE(translation_unit) { "return 0\n" "}\n"; - BOOST_CHECK(tu.reparse(buffer) == 0); + assert(tu.reparse(buffer) == 0); }