Merge pull request #194 from sigiesec/add-initial-tests

Add some initial tests, add some build/version CI variants
This commit is contained in:
Luca Boccassi 2018-04-03 17:51:54 +01:00 committed by GitHub
commit 5ebc7fe32f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 117 additions and 20 deletions

View File

@ -19,6 +19,7 @@ env:
matrix: matrix:
# - BUILD_TYPE=cmake DRAFT=enabled # - BUILD_TYPE=cmake DRAFT=enabled
- BUILD_TYPE=cmake ZMQ_VERSION=4.2.5 - BUILD_TYPE=cmake ZMQ_VERSION=4.2.5
- BUILD_TYPE=cmake ZMQ_VERSION=4.2.0
matrix: matrix:
include: include:
@ -30,6 +31,15 @@ matrix:
# - llvm-toolchain-trusty-5.0 # - llvm-toolchain-trusty-5.0
# packages: # packages:
# - clang-5.0 # - clang-5.0
- os: linux
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-7
env:
- MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" BUILD_TYPE=cmake ZMQ_VERSION=4.2.5 DRAFT=1
sudo: required sudo: required
@ -37,8 +47,9 @@ before_install:
- pip install --user cpp-coveralls - pip install --user cpp-coveralls
# Build and check this project according to the BUILD_TYPE # Build and check this project according to the BUILD_TYPE
script: script:
- eval "${MATRIX_EVAL}"
- ./ci_build.sh - ./ci_build.sh
after_success: after_success:
- coveralls --root . -E ".*external.*" -E ".*CMakeFiles.*" -E ".*tests/" -E ".*libzmq/" - coveralls --root . -E ".*external.*" -E ".*CMakeFiles.*" -E ".*tests/" -E ".*demo/" -E ".*libzmq/"

View File

@ -19,6 +19,18 @@ if (ZeroMQ_FOUND AND (NOT TARGET libzmq OR NOT TARGET libzmq-static))
message(FATAL_ERROR "ZeroMQ version not supported!") message(FATAL_ERROR "ZeroMQ version not supported!")
endif() endif()
if (EXISTS "${SOURCE_DIR}/.git")
OPTION (ENABLE_DRAFTS "Build and install draft classes and methods" ON)
else ()
OPTION (ENABLE_DRAFTS "Build and install draft classes and methods" OFF)
endif ()
IF (ENABLE_DRAFTS)
ADD_DEFINITIONS (-DZMQ_BUILD_DRAFT_API)
set (pkg_config_defines "-DZMQ_BUILD_DRAFT_API=1")
ELSE (ENABLE_DRAFTS)
set (pkg_config_defines "")
ENDIF (ENABLE_DRAFTS)
message(STATUS "cppzmq v${CPPZMQ_VERSION}") message(STATUS "cppzmq v${CPPZMQ_VERSION}")
set(CPPZMQ_HEADERS set(CPPZMQ_HEADERS
@ -63,3 +75,6 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR}) DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR})
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/libzmq-pkg-config/FindZeroMQ.cmake install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/libzmq-pkg-config/FindZeroMQ.cmake
DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR}/libzmq-pkg-config) DESTINATION ${CPPZMQ_CMAKECONFIG_INSTALL_DIR}/libzmq-pkg-config)
enable_testing()
add_subdirectory(tests)

View File

@ -1,6 +1,14 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -x set -x
set -e
if [ "$DRAFT" = "1" ] ; then
# if we enable drafts during the libzmq cmake build, the pkgconfig
# data should set ZMQ_BUILD_DRAFT_API in dependent builds, but this
# does not appear to work (TODO)
export ZEROMQ_CMAKE_FLAGS="-DENABLE_DRAFTS=ON"
fi
install_zeromq() { install_zeromq() {
pushd . pushd .
@ -13,7 +21,7 @@ install_zeromq() {
mkdir build mkdir build
cd build cd build
cmake .. cmake .. ${ZEROMQ_CMAKE_FLAGS}
sudo make -j4 install sudo make -j4 install
popd popd
@ -28,12 +36,14 @@ if [ "${ZMQ_VERSION}" != "" ] ; then install_zeromq ; fi
pushd . pushd .
mkdir build mkdir build
cd build cd build
cmake .. cmake .. ${ZEROMQ_CMAKE_FLAGS}
cmake --build .
sudo make -j4 install sudo make -j4 install
make test ARGS="-V"
popd popd
# build cppzmq tests # build cppzmq demo
cd tests cd demo
mkdir build mkdir build
cd build cd build
cmake .. cmake ..

23
demo/CMakeLists.txt Normal file
View File

@ -0,0 +1,23 @@
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(cppzmq-demo CXX)
find_package(cppzmq)
enable_testing()
add_executable(
demo
main.cpp
)
target_link_libraries(
demo
libzmq
)
add_test(
NAME
demo
COMMAND
${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/demo
)

View File

@ -1,9 +1,8 @@
#include "gtest/gtest.h"
#include <zmq.hpp> #include <zmq.hpp>
TEST(create_context, add) int main(int argc, char** argv)
{ {
zmq::context_t context; zmq::context_t context;
return 0;
} }

View File

@ -4,7 +4,7 @@ pkg_check_modules(PC_LIBZMQ QUIET libzmq)
set(ZeroMQ_VERSION ${PC_LIBZMQ_VERSION}) set(ZeroMQ_VERSION ${PC_LIBZMQ_VERSION})
find_library(ZeroMQ_LIBRARY NAMES libzmq.so libzmq.dylib libzmq.dll find_library(ZeroMQ_LIBRARY NAMES libzmq.so libzmq.dylib libzmq.dll
PATHS ${PC_LIBZMQ_LIBDIR} ${PC_LIBZMQ_LIBRARY_DIRS}) PATHS ${PC_LIBZMQ_LIBDIR} ${PC_LIBZMQ_LIBRARY_DIRS})
find_library(ZeroMQ_STATIC_LIBRARY NAMES libzmq.a libzmq.dll.a find_library(ZeroMQ_STATIC_LIBRARY NAMES libzmq-static.a libzmq.a libzmq.dll.a
PATHS ${PC_LIBZMQ_LIBDIR} ${PC_LIBZMQ_LIBRARY_DIRS}) PATHS ${PC_LIBZMQ_LIBDIR} ${PC_LIBZMQ_LIBRARY_DIRS})
if(ZeroMQ_LIBRARY AND ZeroMQ_STATIC_LIBRARY) if(ZeroMQ_LIBRARY AND ZeroMQ_STATIC_LIBRARY)

View File

@ -3,12 +3,11 @@ cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(cppzmq-test CXX) project(cppzmq-test CXX)
# place binaries and libraries according to GNU standards # place binaries and libraries according to GNU standards
# TODO check if we should do this
# include(GNUInstallDirs) include(GNUInstallDirs)
# set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
# set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
# set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR})
# we use this to get code coverage # we use this to get code coverage
if(CMAKE_CXX_COMPILER_ID MATCHES GNU) if(CMAKE_CXX_COMPILER_ID MATCHES GNU)
@ -20,14 +19,12 @@ fetch_googletest(
${PROJECT_SOURCE_DIR}/cmake ${PROJECT_SOURCE_DIR}/cmake
${PROJECT_BINARY_DIR}/googletest ${PROJECT_BINARY_DIR}/googletest
) )
find_package(cppzmq)
enable_testing()
add_executable( add_executable(
unit_tests unit_tests
example_add.cpp context.cpp
socket.cpp
poller.cpp
) )
target_link_libraries( target_link_libraries(
@ -36,6 +33,8 @@ target_link_libraries(
libzmq libzmq
) )
target_include_directories(unit_tests PRIVATE ..)
add_test( add_test(
NAME NAME
unit unit

15
tests/context.cpp Normal file
View File

@ -0,0 +1,15 @@
#include <gtest/gtest.h>
#include <zmq.hpp>
TEST(context, create_default_destroy)
{
zmq::context_t context;
}
TEST(context, create_close)
{
zmq::context_t context;
context.close();
ASSERT_EQ(NULL, (void*)context);
}

9
tests/poller.cpp Normal file
View File

@ -0,0 +1,9 @@
#include <gtest/gtest.h>
#include <zmq.hpp>
#if defined(ZMQ_CPP11) && defined(ZMQ_BUILD_DRAFT_API)
TEST(poller, create_destroy)
{
zmq::poller_t context;
}
#endif

16
tests/socket.cpp Normal file
View File

@ -0,0 +1,16 @@
#include <gtest/gtest.h>
#include <zmq.hpp>
TEST(socket, create_destroy)
{
zmq::context_t context;
zmq::socket_t socket(context, ZMQ_ROUTER);
}
#ifdef ZMQ_CPP11
TEST(socket, create_by_enum_destroy)
{
zmq::context_t context;
zmq::socket_t socket(context, zmq::socket_type::router);
}
#endif