Browse Source

Cleanup of CMakeLists.txt files, and removed boost dependency from tests

merge-requests/37/head
eidheim 8 years ago
parent
commit
d978517ec2
  1. 9
      CMakeLists.txt
  2. 11
      README.md
  3. 4
      ci/compile.sh
  4. 11
      src/CMakeLists.txt
  5. 65
      tests/CMakeLists.txt
  6. 36
      tests/CompletionString_H_Test.cc
  7. 18
      tests/Cursor_H_Test.cc
  8. 19
      tests/Diagnostics_Test.cc
  9. 2
      tests/Entry.cc
  10. 17
      tests/SourceLocation_H_Test.cc
  11. 19
      tests/Token_H_Test.cc
  12. 14
      tests/code_complete_results_test.cc
  13. 35
      tests/completion_string_test.cc
  14. 15
      tests/cursor_test.cc
  15. 20
      tests/diagnostics_test.cc
  16. 18
      tests/source_location_test.cc
  17. 20
      tests/token_test.cc
  18. 9
      tests/translation_unit_test.cc

9
CMakeLists.txt

@ -2,7 +2,10 @@ cmake_minimum_required (VERSION 2.8.4)
set(project_name clangmm) set(project_name clangmm)
project(${project_name}) 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) if(APPLE)
set(Boost_USE_STATIC_LIBS "YES") set(Boost_USE_STATIC_LIBS "YES")
@ -11,7 +14,9 @@ endif()
add_subdirectory(src) add_subdirectory(src)
if(LIBCLANGMM_BUILD_TESTS) option(BUILD_TESTING Off)
# To enable tests: cmake -DBUILD_TESTING=1 ..
if(BUILD_TESTING)
enable_testing() enable_testing()
add_subdirectory(tests) add_subdirectory(tests)
endif() endif()

11
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) See [installation guide](https://github.com/cppit/libclangmm/blob/master/docs/install.md)
# Tests # # Tests #
To run the unit tests, first enable the CMake option `LIBCLANGMM_BUILD_TESTS`: To run the unit tests:
```sh ```sh
mkdir build && cd build mkdir build && cd build
cmake -DLIBCLANGMM_BUILD_TESTS=ON .. cmake -DBUILD_TESTING=1 ..
```
Then, run the tests:
```sh
make make
cd ../tests make test
../build/tests/clangmm_tests --log_level=all
``` ```
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).

4
ci/compile.sh

@ -7,10 +7,10 @@ if [ "${cmake_command}" == "" ]; then
else else
mingw="mingw32" mingw="mingw32"
fi 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" make_command="make"
else else
cmake_command="cmake -LIBCLANGMM_BUILD_TESTS=ON .." cmake_command="cmake -DBUILD_TESTING=1 .."
fi fi
fi fi

11
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(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 set(header_files
clangmm.h clangmm.h
CodeCompleteResults.h CodeCompleteResults.h

65
tests/CMakeLists.txt

@ -1,36 +1,33 @@
set(project_tests ${project_name}_tests) set(project_tests ${project_name}_tests)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DLIBCLANGMM_TESTS_PATH=\\\"${CMAKE_CURRENT_SOURCE_DIR}\\\"")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_HOME_DIRECTORY}/cmake/Modules/") include_directories(${LIBCLANG_INCLUDE_DIRS} "${PROJECT_SOURCE_DIR}/src")
add_definitions(-DBOOST_TEST_STATIC_LINK) add_executable(code_complete_results_test code_complete_results_test.cc)
target_link_libraries(code_complete_results_test ${LIBCLANG_LIBRARIES} clangmm)
message("Searching for libclang") add_test(code_complete_results_test code_complete_results_test)
#LIBCLANG_FOUND System has libclang.
#LIBCLANG_INCLUDE_DIRS The libclang include directories. add_executable(completion_string_test completion_string_test.cc)
#LIBCLANG_LIBRARIES The libraries needed to use libclang. target_link_libraries(completion_string_test ${LIBCLANG_LIBRARIES} clangmm)
#LIBCLANG_LIBRARY_DIR The path to the directory containing libclang. add_test(completion_string_test completion_string_test)
#LIBCLANG_KNOWN_LLVM_VERSIONS Known LLVM release numbers.
find_package(LibClang REQUIRED) add_executable(cursor_test cursor_test.cc)
find_package(Boost 1.55 COMPONENTS unit_test_framework system filesystem REQUIRED) target_link_libraries(cursor_test ${LIBCLANG_LIBRARIES} clangmm)
add_test(cursor_test cursor_test)
add_executable(${project_tests}
Entry.cc add_executable(diagnostics_test diagnostics_test.cc)
TranslationUnit_Test.cc target_link_libraries(diagnostics_test ${LIBCLANG_LIBRARIES} clangmm)
CompletionString_H_Test.cc add_test(diagnostics_test diagnostics_test)
CodeCompleteResults_H_Test.cc
Cursor_H_Test.cc add_executable(source_location_test source_location_test.cc)
Token_H_Test.cc target_link_libraries(source_location_test ${LIBCLANG_LIBRARIES} clangmm)
SourceLocation_H_Test.cc add_test(source_location_test source_location_test)
Diagnostics_Test.cc
) add_executable(token_test token_test.cc)
target_link_libraries(token_test ${LIBCLANG_LIBRARIES} clangmm)
include_directories(${LIBCLANG_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} "${CMAKE_SOURCE_DIR}/src") add_test(token_test token_test)
target_link_libraries(${project_tests} ${LIBCLANG_LIBRARIES} ${Boost_LIBRARIES} clangmm)
add_executable(translation_unit_test translation_unit_test.cc)
set(tests target_link_libraries(translation_unit_test ${LIBCLANG_LIBRARIES} clangmm)
${project_tests} add_test(translation_unit_test translation_unit_test)
)
add_test(${tests} ${tests})

36
tests/CompletionString_H_Test.cc

@ -1,36 +0,0 @@
#include <boost/test/unit_test.hpp>
#include "clangmm.h"
#include <string>
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 <string>\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);
}

18
tests/Cursor_H_Test.cc

@ -1,18 +0,0 @@
#include <boost/test/unit_test.hpp>
#include "clangmm.h"
#include <string>
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);
}

19
tests/Diagnostics_Test.cc

@ -1,19 +0,0 @@
#include <boost/test/unit_test.hpp>
#include "clangmm.h"
#include <iostream>
#include <fstream>
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);
}

2
tests/Entry.cc

@ -1,2 +0,0 @@
#define BOOST_TEST_MODULE clangmm_tests
#include <boost/test/included/unit_test.hpp>

17
tests/SourceLocation_H_Test.cc

@ -1,17 +0,0 @@
#include <boost/test/unit_test.hpp>
#include "clangmm.h"
#include <string>
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);
}

19
tests/Token_H_Test.cc

@ -1,19 +0,0 @@
#include <boost/test/unit_test.hpp>
#include "clangmm.h"
#include <string>
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");
}

14
tests/CodeCompleteResults_H_Test.cc → tests/code_complete_results_test.cc

@ -1,12 +1,10 @@
#include <boost/test/unit_test.hpp>
#include "clangmm.h" #include "clangmm.h"
#include <string> #include <string>
#include <cassert>
BOOST_AUTO_TEST_CASE(code_complete_results) { int main() {
std::string tests_path=LIBCLANGMM_TESTS_PATH;
// [ Should be changed with mockery std::string path(tests_path+"/case/main.cpp");
std::string path("./case/main.cpp");
clangmm::Index index(0, 0); clangmm::Index index(0, 0);
clangmm::TranslationUnit tu(index, path, {}); clangmm::TranslationUnit tu(index, path, {});
@ -18,8 +16,6 @@ BOOST_AUTO_TEST_CASE(code_complete_results) {
"return 0\n" "return 0\n"
"}"; "}";
// ]
tu.reparse(buffer); tu.reparse(buffer);
auto results=tu.get_code_completions(buffer, 4, 5); auto results=tu.get_code_completions(buffer, 4, 5);
@ -30,5 +26,5 @@ BOOST_AUTO_TEST_CASE(code_complete_results) {
break; break;
} }
} }
BOOST_CHECK(substr_found); assert(substr_found);
} }

35
tests/completion_string_test.cc

@ -0,0 +1,35 @@
#include "clangmm.h"
#include <string>
#include <cassert>
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 <string>\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);
}
}

15
tests/cursor_test.cc

@ -0,0 +1,15 @@
#include "clangmm.h"
#include <string>
#include <cassert>
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);
}

20
tests/diagnostics_test.cc

@ -0,0 +1,20 @@
#include "clangmm.h"
#include <iostream>
#include <fstream>
#include <cassert>
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);
}

18
tests/source_location_test.cc

@ -0,0 +1,18 @@
#include "clangmm.h"
#include <string>
#include <cassert>
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);
}

20
tests/token_test.cc

@ -0,0 +1,20 @@
#include "clangmm.h"
#include <string>
#include <cassert>
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");
}

9
tests/TranslationUnit_Test.cc → tests/translation_unit_test.cc

@ -1,10 +1,11 @@
#include <boost/test/unit_test.hpp>
#include "clangmm.h" #include "clangmm.h"
#include <string> #include <string>
#include <map> #include <map>
#include <cassert>
BOOST_AUTO_TEST_CASE(translation_unit) { int main() {
std::string path("./case/main.cpp"); std::string tests_path=LIBCLANGMM_TESTS_PATH;
std::string path(tests_path+"/case/main.cpp");
clangmm::Index index(0, 0); clangmm::Index index(0, 0);
@ -15,5 +16,5 @@ BOOST_AUTO_TEST_CASE(translation_unit) {
"return 0\n" "return 0\n"
"}\n"; "}\n";
BOOST_CHECK(tu.reparse(buffer) == 0); assert(tu.reparse(buffer) == 0);
} }
Loading…
Cancel
Save