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
tags/devuan/2.0.1+devuan1
Julian Andres Klode 4 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 View File

@@ -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 View File

@@ -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 View File

@@ -32,4 +32,3 @@ TODO
The following features have not been implemented yet:

- Translated docbook guides
- unit tests

+ 1
- 0
test/CMakeLists.txt View File

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

+ 22
- 0
test/libapt/CMakeLists.txt View File

@@ -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 View File

@@ -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 View File

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


Loading…
Cancel
Save