Browse Source

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
Julian Andres Klode 7 years ago
parent
commit
06c2b40b9b
7 changed files with 34 additions and 9 deletions
  1. 1 0
      .travis.yml
  2. 2 0
      CMakeLists.txt
  3. 0 1
      README.cmake
  4. 1 0
      test/CMakeLists.txt
  5. 22 0
      test/libapt/CMakeLists.txt
  6. 1 1
      test/libapt/fileutl_test.cc
  7. 7 7
      test/libapt/hashsums_test.cc

+ 1 - 0
.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

+ 2 - 0
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)
 

+ 0 - 1
README.cmake

@@ -32,4 +32,3 @@ TODO
 The following features have not been implemented yet:
 
  - Translated docbook guides
- - unit tests

+ 1 - 0
test/CMakeLists.txt

@@ -1 +1,2 @@
+add_subdirectory(libapt)
 add_subdirectory(interactive-helper)

+ 22 - 0
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()

+ 1 - 1
test/libapt/fileutl_test.cc

@@ -216,7 +216,7 @@ TEST(FileUtlTest, Glob)
 {
    std::vector<std::string> files;
    // normal match
-   files = Glob("*akefile");
+   files = Glob("*MakeLists.txt");
    EXPECT_EQ(1, files.size());
 
    // not there

+ 7 - 7
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);