From 06c2b40b9b9094f4f6391bd1d17cfc3725313070 Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Sun, 7 Aug 2016 18:22:14 +0200 Subject: CMake: Add unit tests Add support for our GTest based unit tests. By default, CMake will look in /usr/src/gtest for the external GTest project, but this can be overriden by defining GTEST_ROOT when invoking cmake. Gbp-Dch: ignore --- .travis.yml | 1 + CMakeLists.txt | 2 ++ README.cmake | 1 - test/CMakeLists.txt | 1 + test/libapt/CMakeLists.txt | 22 ++++++++++++++++++++++ test/libapt/fileutl_test.cc | 2 +- test/libapt/hashsums_test.cc | 14 +++++++------- 7 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 test/libapt/CMakeLists.txt diff --git a/.travis.yml b/.travis.yml index 755640831..3c4b59319 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,6 +16,7 @@ before_script: - ( mkdir build && cd build && cmake .. ) - make -C build -j4 script: + - make -C build test - ./test/integration/run-tests -q - sudo adduser --force-badname --system --home /nonexistent --no-create-home --quiet _apt || true - sudo ./test/integration/run-tests -q diff --git a/CMakeLists.txt b/CMakeLists.txt index 6baa8f14f..9e85e7b84 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,8 @@ project(apt) cmake_minimum_required(VERSION 3.3.0) +enable_testing() + option(WITH_DOC "Build documentation." OFF) option(USE_NLS "Localisation support." ON) diff --git a/README.cmake b/README.cmake index 0ffd08efc..5afe0449f 100644 --- a/README.cmake +++ b/README.cmake @@ -32,4 +32,3 @@ TODO The following features have not been implemented yet: - Translated docbook guides - - unit tests diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 599f62aff..2f47b5c32 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1 +1,2 @@ +add_subdirectory(libapt) add_subdirectory(interactive-helper) diff --git a/test/libapt/CMakeLists.txt b/test/libapt/CMakeLists.txt new file mode 100644 index 000000000..7f9990526 --- /dev/null +++ b/test/libapt/CMakeLists.txt @@ -0,0 +1,22 @@ +include(ExternalProject) + +set(GTEST_ROOT "/usr/src/gtest" CACHE FILEPATH "Path to GTest CMake project") + +message(STATUS "Found GTest at ${GTEST_ROOT}") + +if (EXISTS ${GTEST_ROOT}) + +ExternalProject_Add(gtest PREFIX ./gtest + SOURCE_DIR ${GTEST_ROOT} + INSTALL_COMMAND true) + +link_directories(${CMAKE_CURRENT_BINARY_DIR}/gtest/src/gtest-build) +FILE(GLOB files gtest_runner.cc *-helpers.cc *_test.cc) +add_executable(libapt_test ${files}) +target_link_libraries(libapt_test -lgtest ${CMAKE_THREAD_LIBS_INIT} apt-private apt-inst) +add_dependencies(libapt_test gtest) +add_test(NAME AptTests + COMMAND libapt_test + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + +endif() diff --git a/test/libapt/fileutl_test.cc b/test/libapt/fileutl_test.cc index 0a299b51a..67bd850a1 100644 --- a/test/libapt/fileutl_test.cc +++ b/test/libapt/fileutl_test.cc @@ -216,7 +216,7 @@ TEST(FileUtlTest, Glob) { std::vector files; // normal match - files = Glob("*akefile"); + files = Glob("*MakeLists.txt"); EXPECT_EQ(1, files.size()); // not there diff --git a/test/libapt/hashsums_test.cc b/test/libapt/hashsums_test.cc index 705c0297d..fb9a25643 100644 --- a/test/libapt/hashsums_test.cc +++ b/test/libapt/hashsums_test.cc @@ -119,7 +119,7 @@ static void getSummationString(char const * const type, std::string &sum) FileFd fd; ASSERT_TRUE(fd.Open(tempfile, FileFd::WriteOnly | FileFd::Empty, compress)); ASSERT_TRUE(fd.IsOpen()); - FileFd input(__FILE__, FileFd::ReadOnly); + FileFd input("/etc/os-release", FileFd::ReadOnly); ASSERT_TRUE(input.IsOpen()); ASSERT_NE(0, input.FileSize()); ASSERT_TRUE(CopyFile(input, fd)); @@ -161,7 +161,7 @@ TEST(HashSumsTest, FileBased) SHA512SumValue sha512(summation); EXPECT_EQ(sha512.Value(), summation); - FileFd fd(__FILE__, FileFd::ReadOnly); + FileFd fd("/etc/os-release", FileFd::ReadOnly); EXPECT_TRUE(fd.IsOpen()); std::string FileSize; strprintf(FileSize, "%llu", fd.FileSize()); @@ -243,18 +243,18 @@ TEST(HashSumsTest, FileBased) fd.Close(); HashString sha2file("SHA512", sha512.Value()); - EXPECT_TRUE(sha2file.VerifyFile(__FILE__)); + EXPECT_TRUE(sha2file.VerifyFile("/etc/os-release")); HashString sha2wrong("SHA512", "00000000000"); - EXPECT_FALSE(sha2wrong.VerifyFile(__FILE__)); + EXPECT_FALSE(sha2wrong.VerifyFile("/etc/os-release")); EXPECT_EQ(sha2file, sha2file); EXPECT_TRUE(sha2file == sha2file); EXPECT_NE(sha2file, sha2wrong); EXPECT_TRUE(sha2file != sha2wrong); HashString sha2big("SHA256", sha256.Value()); - EXPECT_TRUE(sha2big.VerifyFile(__FILE__)); + EXPECT_TRUE(sha2big.VerifyFile("/etc/os-release")); HashString sha2small("sha256:" + sha256.Value()); - EXPECT_TRUE(sha2small.VerifyFile(__FILE__)); + EXPECT_TRUE(sha2small.VerifyFile("/etc/os-release")); EXPECT_EQ(sha2big, sha2small); EXPECT_TRUE(sha2big == sha2small); EXPECT_FALSE(sha2big != sha2small); @@ -283,7 +283,7 @@ TEST(HashSumsTest, FileBased) EXPECT_EQ(2, hashes.size()); EXPECT_FALSE(hashes.push_back(sha2wrong)); EXPECT_EQ(2, hashes.size()); - EXPECT_TRUE(hashes.VerifyFile(__FILE__)); + EXPECT_TRUE(hashes.VerifyFile("/etc/os-release")); EXPECT_EQ(similar, hashes); EXPECT_TRUE(similar == hashes); -- cgit v1.2.3