diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 35e22aecd002f99ab09ed69060506cea32d143db..7a0ad4ef03c2985cf1679f394b35f6db801e6a5c 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -1,4 +1,11 @@ ARG CI_REGISTRY_IMAGE FROM $CI_REGISTRY_IMAGE -# TODO install caosdb-cpplib +WORKDIR /libcaosdb/ +RUN mkdir build +WORKDIR /libcaosdb/build +RUN cmake .. +RUN cmake --build . +RUN cmake --install . + +CMD /bin/bash diff --git a/CMakeLists.txt b/CMakeLists.txt index 403877b8d9e8bd109a0eba639c31b8ac2139e308..894e9f399e7b5fe412ca51e9f5bc4bba0ee2edd5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,4 +27,7 @@ project(libcaosdb_inttests set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) + +set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) enable_testing() +add_subdirectory(test) diff --git a/cmake/FetchGTest.cmake b/cmake/FetchGTest.cmake new file mode 100644 index 0000000000000000000000000000000000000000..6e075cff55d6c7f662d173ec55b4fd7bac7fa39b --- /dev/null +++ b/cmake/FetchGTest.cmake @@ -0,0 +1,41 @@ +# Copyright 2008, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +include(FetchContent) + +FetchContent_Declare( + googletest + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG release-1.10.0 + GIT_SHALLOW 1 +) + +# For Windows: Prevent overriding the parent project's compiler/linker settings +set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) +FetchContent_MakeAvailable(googletest) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..f2921f40e46a2470efc658aceb39caf6548ec0c4 --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,43 @@ +# +# This file is a part of the CaosDB Project. +# +# Copyright (C) 2021 Timm Fitschen <t.fitschen@indiscale.com> +# Copyright (C) 2021 IndiScale GmbH <info@indiscale.com> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. +# + +# append all the test cases here (file name without the ".cpp" suffix) +set(test_cases + test_connection + ) + +find_package(caosdb PATHS /home/tf/libcaosdb/lib/libcaosdb-0.0.1/ REQUIRED) + +include(FetchGTest) +# add special cmake functions for gtest +include(GoogleTest) + +# loop over all test cases and add them to the test runner +list(LENGTH test_cases len_test_cases) +math(EXPR len_test_cases "${len_test_cases} - 1") +foreach (i RANGE "${len_test_cases}") + list(GET test_cases ${i} test_case_name) + add_executable(${test_case_name} ${test_case_name}.cpp) + target_link_libraries(${test_case_name} PRIVATE gtest_main caosdb::caosdb) + set_target_properties(${test_case_name} PROPERTIES CXX_CLANG_TIDY "") + gtest_discover_tests(${test_case_name} + PROPERTIES + LABELS "caosdb-cpplib-int-tests") +endforeach () diff --git a/test/test_connection.cpp b/test/test_connection.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ba64060f9b564ffff7aa3beec57a3bb7047d87c4 --- /dev/null +++ b/test/test_connection.cpp @@ -0,0 +1,34 @@ +/* + * + * This file is a part of the CaosDB Project. + * + * Copyright (C) 2021 Timm Fitschen <t.fitschen@indiscale.com> + * Copyright (C) 2021 IndiScale GmbH <info@indiscale.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + * + */ + +#include "connection.h" +#include <gtest/gtest-message.h> +#include <gtest/gtest-test-part.h> +#include <memory> +#include "gtest/gtest_pred_impl.h" + +TEST(test_connection, localhost_8080) { + caosdb::CaosDBConnectionConfig config("localhost", 8000); + + EXPECT_EQ("localhost", config.getHost()); + EXPECT_EQ(8000, config.getPort()); +}