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)
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()

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)
# 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).

4
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

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(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

65
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)

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 <string>
#include <cassert>
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);
}

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 <string>
#include <map>
#include <cassert>
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);
}
Loading…
Cancel
Save