summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2016-08-07 18:22:14 +0200
committerJulian Andres Klode <jak@debian.org>2016-08-10 16:11:43 +0200
commit06c2b40b9b9094f4f6391bd1d17cfc3725313070 (patch)
tree08f853ea0f6cf803c9ef91dbb90de55814833ac1
parent173fa882cf3396ab6d2a9be53c6ea23eda225a1d (diff)
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
-rw-r--r--.travis.yml1
-rw-r--r--CMakeLists.txt2
-rw-r--r--README.cmake1
-rw-r--r--test/CMakeLists.txt1
-rw-r--r--test/libapt/CMakeLists.txt22
-rw-r--r--test/libapt/fileutl_test.cc2
-rw-r--r--test/libapt/hashsums_test.cc14
7 files changed, 34 insertions, 9 deletions
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<std::string> 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);