summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortastytea2020-01-03 09:47:16 +0100
committertastytea2020-01-03 09:49:41 +0100
commitcf19753de0abf5adda3d93ee8d145a41910e0d55 (patch)
treed81e753cb75fb429580c8e10e6c124381899adf5
parentdd93dab0a663850358a0d69883f0f94ac93a52f8 (diff)
downloadmastodonpp-cf19753de0abf5adda3d93ee8d145a41910e0d55.tar
mastodonpp-cf19753de0abf5adda3d93ee8d145a41910e0d55.tar.gz
mastodonpp-cf19753de0abf5adda3d93ee8d145a41910e0d55.zip
Add first test.
-rw-r--r--.drone.yml8
-rw-r--r--CMakeLists.txt8
-rw-r--r--tests/CMakeLists.txt27
-rw-r--r--tests/main.cpp19
-rw-r--r--tests/test_instanciation.cpp51
5 files changed, 107 insertions, 6 deletions
diff --git a/.drone.yml b/.drone.yml
index 867a640..6f08113 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -26,10 +26,12 @@ steps:
- alias apt-get='rm -f /var/cache/apt/archives/lock && apt-get'
- apt-get update -q
- apt-get install -qq build-essential cmake
+ - apt-get install -qq catch
- rm -rf build && mkdir -p build && cd build
- - cmake -G "Unix Makefiles" ..
+ - cmake -G "Unix Makefiles" -DWITH_TESTS=YES ..
- make VERBOSE=1
- make install DESTDIR=install
+ - cd tests && ctest -V
volumes:
- name: debian-package-cache
path: /var/cache/apt/archives
@@ -47,10 +49,12 @@ steps:
- alias apt-get='rm -f /var/cache/apt/archives/lock && apt-get'
- apt-get update -q
- apt-get install -qq build-essential cmake
+ - apt-get install -qq catch
- rm -rf build && mkdir -p build && cd build
- - cmake -G "Unix Makefiles" ..
+ - cmake -G "Unix Makefiles" -DWITH_TESTS=YES ..
- make VERBOSE=1
- make install DESTDIR=install
+ - cd tests && ctest -V
volumes:
- name: debian-package-cache
path: /var/cache/apt/archives
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7d56a9d..5bc30ed 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -18,7 +18,7 @@ project(mastodonpp
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
# Project build options.
-# option(WITH_TESTS "Compile tests." NO)
+option(WITH_TESTS "Compile tests." NO)
# option(WITH_DOC "Generate HTML documentation." YES)
# option(WITH_EXAMPLES "Compile examples." NO)
# option(WITH_DEB "Prepare for the building of .deb packages." NO)
@@ -32,8 +32,8 @@ include(debug_flags)
add_subdirectory(src)
-# if(WITH_TESTS)
-# add_subdirectory(tests)
-# endif()
+if(WITH_TESTS)
+ add_subdirectory(tests)
+endif()
# include(cmake/packages.cmake)
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
new file mode 100644
index 0000000..3f7107b
--- /dev/null
+++ b/tests/CMakeLists.txt
@@ -0,0 +1,27 @@
+include(CTest)
+
+file(GLOB sources_tests test_*.cpp)
+
+find_package(Catch2 CONFIG)
+if(Catch2_FOUND) # Catch 2.x
+ include(Catch)
+ add_executable(all_tests main.cpp ${sources_tests})
+ target_link_libraries(all_tests
+ PRIVATE Catch2::Catch2 ${PROJECT_NAME})
+ target_include_directories(all_tests PRIVATE "/usr/include/catch2")
+ catch_discover_tests(all_tests EXTRA_ARGS "${EXTRA_TEST_ARGS}")
+else() # Catch 1.x
+ if(EXISTS "/usr/include/catch.hpp")
+ message(STATUS "Catch 1.x found.")
+ foreach(src ${sources_tests})
+ get_filename_component(bin ${src} NAME_WE)
+ add_executable(${bin} main.cpp ${src})
+ target_link_libraries(${bin}
+ PRIVATE ${PROJECT_NAME})
+ add_test(${bin} ${bin} "${EXTRA_TEST_ARGS}")
+ endforeach()
+ else()
+ message(FATAL_ERROR
+ "Neither Catch 2.x nor Catch 1.x could be found.")
+ endif()
+endif()
diff --git a/tests/main.cpp b/tests/main.cpp
new file mode 100644
index 0000000..162dfdf
--- /dev/null
+++ b/tests/main.cpp
@@ -0,0 +1,19 @@
+/* This file is part of mastodonpp.
+ * Copyright © 2020 tastytea <tastytea@tastytea.de>
+ *
+ * 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, version 3.
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#define CATCH_CONFIG_MAIN
+
+#include <catch.hpp>
diff --git a/tests/test_instanciation.cpp b/tests/test_instanciation.cpp
new file mode 100644
index 0000000..3fbc0f3
--- /dev/null
+++ b/tests/test_instanciation.cpp
@@ -0,0 +1,51 @@
+/* This file is part of mastodonpp.
+ * Copyright © 2020 tastytea <tastytea@tastytea.de>
+ *
+ * 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, version 3.
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#include "mastodonpp.hpp"
+
+#include <catch.hpp>
+
+#include <exception>
+#include <string>
+
+namespace mastodonpp
+{
+
+using std::string;
+
+SCENARIO ("API can be instantiated.")
+{
+ bool exception = false;
+
+ GIVEN ("One instanciation.")
+ {
+ try
+ {
+ API masto("example.com", "");
+ }
+ catch (const std::exception &e)
+ {
+ exception = true;
+ }
+
+ THEN ("No exception is thrown")
+ {
+ REQUIRE_FALSE(exception);
+ }
+ }
+}
+
+} // namespace mastodonpp