# Build and run compiler tests using CMake - [Build and run compiler tests using CMake](#build-and-run-compiler-tests-using-cmake) - [General information](#general-information) - [How to add your tests](#how-to-add-your-tests) - [Build and run tests on Unix-like systems](#build-and-run-tests-on-unix-like-systems) - [Prerequisites:](#prerequisites) - [Build and run test with CMake](#build-and-run-test-with-cmake) - [Build and run tests on Windows](#build-and-run-tests-on-windows) - [Prerequisites:](#prerequisites-1) - [Generation of VS project with CMake, build and run on Windows](#generation-of-vs-project-with-cmake-build-and-run-on-windows) ## General information Added generic way to cover code by tests for many languages (you just need to make a correct header file for generator for your language - example in **netstd** implementation) At current moment these tests use free Catch library (https://github.com/catchorg/Catch2/tree/Catch1.x) for easy test creation and usage. Decision to use it was because of simplicity, easy usage, one header file to use, stable community and growing interest (https://cpp.libhunt.com/project/googletest-google/vs/catch?rel=cmp-cmp) Also, maybe, later it will be migrated to Catch2 (https://github.com/philsquared/Catch) - depends on need to support legacy compilers (c++98) ## How to add your tests - Open **CMakeLists.txt** - Set call of `THRIFT_ADD_COMPILER` for your language to `ON` ``` cmake THRIFT_ADD_COMPILER(netstd "Enable compiler for .NET Standard" ON) ``` - Create folder with name specified in list of languages in **CMakeLists.txt** - Create tests in folder for your language (with extensions like *.c* - cc, cpp, etc) - Don't forget to add include of catch.hpp in your test file ``` C #include "../catch/catch.hpp" ``` - If you need - add files manually to **thrift_compiler_tests_manual_SOURCES** in **CMakeLists.txt** similar to ``` cmake # you can add some files manually there set(thrift_compiler_tests_manual_SOURCES # tests file to avoid main in every test file ${CMAKE_CURRENT_SOURCE_DIR}/tests_main.cc ) ``` - Run **cmake** with arguments for your environment and compiler - Enjoy ## Build and run tests on Unix-like systems ### Prerequisites: - Install CMake - - Install winflexbison - ### Build and run test with CMake - Run commands in command line in current directory: ``` mkdir cmake-vs && cd cmake-vs cmake .. cmake --build . ctest -C Debug -V ``` ## Build and run tests on Windows ### Prerequisites: - Install CMake - - Install winflexbison - - Install VS2017 Community Edition - (ensure that you installed workload "Desktop Development with C++" for VS2017) ### Generation of VS project with CMake, build and run on Windows - Run commands in command line in current directory (ensure that VS installed): ``` mkdir cmake-vs cd cmake-vs cmake .. cmake --build . ctest -C Debug -V ```