Skip to content

Commit

Permalink
Define CMake/CTest tests
Browse files Browse the repository at this point in the history
Instead of copying the test executable and the JSON files used by
the tests at install time, define CMake/CTest tests for running
the json_unit executable from any build directory with the project's
source directory as its working directory.

- call enable_testing in the main lists file to allow the definition
of tests
- remove install commands from the test directory's lists file
- define two tests
  - json_unit_default for running the default tests by executing
json_unit without any arguments
  - json_unit_all for running all the tests by executing json_unit
with the "*" argument
- update the AppVeyor configuration file to use the new testing method
  • Loading branch information
robertmrk committed May 18, 2016
1 parent 0a393b8 commit 639d632
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 11 deletions.
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ cmake_minimum_required(VERSION 3.0)
# define the project
project(nlohmann_json VERSION 2.0.0 LANGUAGES CXX)

enable_testing()

option(BuildTests "Build the unit tests" ON)

# define project variables
Expand Down
3 changes: 1 addition & 2 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,4 @@ build_script:
- cmake . -G "Visual Studio 14 2015"
- cmake --build . --config Release
test_script:
- test\Release\json_unit.exe
- test\Release\json_unit.exe "*"
- ctest -C Release -V
22 changes: 13 additions & 9 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,21 +1,25 @@
# The unit test executable.
add_executable(json_unit
set(JSON_UNITTEST_TARGET_NAME "json_unit")
add_executable(${JSON_UNITTEST_TARGET_NAME}
"src/catch.hpp"
"src/unit.cpp"
)

set_target_properties(json_unit PROPERTIES
set_target_properties(${JSON_UNITTEST_TARGET_NAME} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
COMPILE_DEFINITIONS "$<$<CXX_COMPILER_ID:MSVC>:_SCL_SECURE_NO_WARNINGS>"
COMPILE_OPTIONS "$<$<CXX_COMPILER_ID:MSVC>:/EHsc;$<$<CONFIG:Release>:/Od>>"
)

# Install the test binary.
install(TARGETS json_unit RUNTIME DESTINATION test/bin)
target_include_directories(${JSON_UNITTEST_TARGET_NAME} PRIVATE "src")
target_link_libraries(${JSON_UNITTEST_TARGET_NAME} ${JSON_TARGET_NAME})

# Copy the test data to the install tree.
install(DIRECTORY data/ DESTINATION test/data)

target_include_directories(json_unit PRIVATE "src")
target_link_libraries(json_unit ${JSON_TARGET_NAME})
add_test(NAME "${JSON_UNITTEST_TARGET_NAME}_default"
COMMAND ${JSON_UNITTEST_TARGET_NAME}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
add_test(NAME "${JSON_UNITTEST_TARGET_NAME}_all"
COMMAND ${JSON_UNITTEST_TARGET_NAME} "*"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)

0 comments on commit 639d632

Please sign in to comment.