Add Approval Tests for cpp

* Add testcase using https://github.com/approvals/ApprovalTests.cpp and google test.
* Change google test to be downloaded if not installed with cmake
* Add a run-once-cmake.sh script to build and test with cmake
* Add a run-approval-once.sh script to build and run approval test
This commit is contained in:
Anders Arnholm authored and Anders Arnholm committed 2018-10-13 15:55:30 +02:00
1 parent a788fae859
commit c503bf8a2b
6 files changed
+100 -15

No files matched your search

+52 -15
View File
@@ -6,25 +6,62 @@ project(cpp)
set(CMAKE_THREAD_LIBS_INIT pthread)
enable_testing()
find_package(GTest REQUIRED)
find_package(GTest)
include(ExternalProject)
if(NOT ${GTEST_FOUND}) # Download gtest if not installed
message("No system gtest use external project")
ExternalProject_Add(googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG master
SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-src"
BINARY_DIR "${CMAKE_BINARY_DIR}/googletest-build"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
TEST_COMMAND ""
)
add_subdirectory(${CMAKE_BINARY_DIR}/googletest-src
${CMAKE_BINARY_DIR}/googletest-build
EXCLUDE_FROM_ALL)
set(GTEST_BOTH_LIBRARIES gtest gtest_main)
endif()
ExternalProject_Add(aprovaltest
PREFIX ${CMAKE_BINARY_DIR}/aprovaltest
URL https://github.com/approvals/ApprovalTests.cpp/releases/download/v.2.0.0/ApprovalTests.v.2.0.0.hpp
DOWNLOAD_NO_EXTRACT 1
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
)
include_directories(${GTEST_INCLUDE_DIRS})
include_directories(${CMAKE_BINARY_DIR}/aprovaltest/src)
set(GILDED_ROSE_SOURCE_FILES
add_executable(GildedRose
GildedRose.cc
GildedRose.h
GildedRoseUnitTests.cc)
set(GILDED_ROSE_TEXT_TESTS_SOURCE_FILES
GildedRose.cc
GildedRose.h
GildedRoseTextTests.cc)
set(SOURCE_FILES
${GILDED_ROSE_SOURCE_FILES}
${GILDED_ROSE_TEXT_TESTS_SOURCE_FILES})
add_executable(GildedRose ${GILDED_ROSE_SOURCE_FILES})
GildedRoseUnitTests.cc
)
target_link_libraries(GildedRose ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
add_test(NAME GildedRose COMMAND GildedRose)
add_executable(GildedRoseTextTests ${GILDED_ROSE_TEXT_TESTS_SOURCE_FILES})
add_executable(GildedRoseTextTests
GildedRose.cc
GildedRose.h
GildedRoseTextTests.cc
)
target_link_libraries(GildedRoseTextTests ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
add_test(NAME GildedRoseTextTests COMMAND GildedRoseTextTests)
add_executable(GildedRoseApprovalTests
GildedRose.cc
GildedRose.h
GildedRoseApprovalTests.cc
GildedRoseApprovalMain.cc
)
target_link_libraries(GildedRoseApprovalTests ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
set_property(TARGET GildedRoseApprovalTests PROPERTY CXX_STANDARD 14)
add_dependencies(GildedRoseApprovalTests aprovaltest)
add_test(NAME GildedRoseApprovalTests COMMAND GildedRoseApprovalTests)