89 lines
3.1 KiB
Markdown
89 lines
3.1 KiB
Markdown
# Build and run compiler tests using CMake
|
|
|
|
<!-- TOC -->
|
|
|
|
- [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)
|
|
|
|
<!-- /TOC -->
|
|
|
|
## 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 - <https://cmake.org/download/>
|
|
- Install winflexbison - <https://sourceforge.net/projects/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 - <https://cmake.org/download/>
|
|
- Install winflexbison - <https://sourceforge.net/projects/winflexbison/>
|
|
- Install VS2017 Community Edition - <https://www.visualstudio.com/vs/whatsnew/> (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
|
|
```
|