summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorVictor Costan <costan@google.com>2022-01-03 20:57:56 +0000
committerVictor Costan <pwnall@chromium.org>2022-01-03 21:05:04 +0000
commit8f464e7f68fd9d50ed39b2866ef8dac9c837439d (patch)
treeb6014b27534d4677bf761b4c84746a75aaa08c7d /CMakeLists.txt
parentb2801ee1a0e3a5c0c393dc04eef63691f79ed694 (diff)
downloadleveldb-8f464e7f68fd9d50ed39b2866ef8dac9c837439d.tar.gz
Remove main() from most tests.
This gives some flexibility to embedders. Currently, embedders have to build a binary for each test file. After this CL, embedders can still choose to have a binary for each test file, by linking each test file with a googletest target that includes main() (usually "gtest_main"). Embedders can also choose to build a single binary for almost all test files, and link with a googletest target that includes main(). The latter is more convenient for projects that have very few test binaries, like Chromium. PiperOrigin-RevId: 419470798
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt88
1 files changed, 54 insertions, 34 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7690302..b829c94 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -306,6 +306,60 @@ if(LEVELDB_BUILD_TESTS)
APPEND PROPERTY COMPILE_OPTIONS -Wno-missing-field-initializers)
endif(LEVELDB_HAVE_NO_MISSING_FIELD_INITIALIZERS)
+ add_executable(leveldb_tests "")
+ target_sources(leveldb_tests
+ PRIVATE
+ # "db/fault_injection_test.cc"
+ # "issues/issue178_test.cc"
+ # "issues/issue200_test.cc"
+ # "issues/issue320_test.cc"
+ "${PROJECT_BINARY_DIR}/${LEVELDB_PORT_CONFIG_DIR}/port_config.h"
+ # "util/env_test.cc"
+ "util/status_test.cc"
+ "util/no_destructor_test.cc"
+ "util/testutil.cc"
+ "util/testutil.h"
+ )
+ if(NOT BUILD_SHARED_LIBS)
+ target_sources(leveldb_tests
+ PRIVATE
+ "db/autocompact_test.cc"
+ "db/corruption_test.cc"
+ "db/db_test.cc"
+ "db/dbformat_test.cc"
+ "db/filename_test.cc"
+ "db/log_test.cc"
+ "db/recovery_test.cc"
+ "db/skiplist_test.cc"
+ "db/version_edit_test.cc"
+ "db/version_set_test.cc"
+ "db/write_batch_test.cc"
+ "helpers/memenv/memenv_test.cc"
+ "table/filter_block_test.cc"
+ "table/table_test.cc"
+ "util/arena_test.cc"
+ "util/bloom_test.cc"
+ "util/cache_test.cc"
+ "util/coding_test.cc"
+ "util/crc32c_test.cc"
+ "util/hash_test.cc"
+ "util/logging_test.cc"
+ )
+ endif(NOT BUILD_SHARED_LIBS)
+ target_link_libraries(leveldb_tests leveldb gmock gtest gtest_main)
+ target_compile_definitions(leveldb_tests
+ PRIVATE
+ ${LEVELDB_PLATFORM_NAME}=1
+ )
+ if (NOT HAVE_CXX17_HAS_INCLUDE)
+ target_compile_definitions(leveldb_tests
+ PRIVATE
+ LEVELDB_HAS_PORT_CONFIG_H=1
+ )
+ endif(NOT HAVE_CXX17_HAS_INCLUDE)
+
+ add_test(NAME "leveldb_tests" COMMAND "leveldb_tests")
+
function(leveldb_test test_file)
get_filename_component(test_target_name "${test_file}" NAME_WE)
@@ -334,42 +388,8 @@ if(LEVELDB_BUILD_TESTS)
endfunction(leveldb_test)
leveldb_test("db/c_test.c")
- leveldb_test("db/fault_injection_test.cc")
-
- leveldb_test("issues/issue178_test.cc")
- leveldb_test("issues/issue200_test.cc")
- leveldb_test("issues/issue320_test.cc")
-
- leveldb_test("util/env_test.cc")
- leveldb_test("util/status_test.cc")
- leveldb_test("util/no_destructor_test.cc")
if(NOT BUILD_SHARED_LIBS)
- leveldb_test("db/autocompact_test.cc")
- leveldb_test("db/corruption_test.cc")
- leveldb_test("db/db_test.cc")
- leveldb_test("db/dbformat_test.cc")
- leveldb_test("db/filename_test.cc")
- leveldb_test("db/log_test.cc")
- leveldb_test("db/recovery_test.cc")
- leveldb_test("db/skiplist_test.cc")
- leveldb_test("db/version_edit_test.cc")
- leveldb_test("db/version_set_test.cc")
- leveldb_test("db/write_batch_test.cc")
-
- leveldb_test("helpers/memenv/memenv_test.cc")
-
- leveldb_test("table/filter_block_test.cc")
- leveldb_test("table/table_test.cc")
-
- leveldb_test("util/arena_test.cc")
- leveldb_test("util/bloom_test.cc")
- leveldb_test("util/cache_test.cc")
- leveldb_test("util/coding_test.cc")
- leveldb_test("util/crc32c_test.cc")
- leveldb_test("util/hash_test.cc")
- leveldb_test("util/logging_test.cc")
-
# TODO(costan): This test also uses
# "util/env_{posix|windows}_test_helper.h"
if (WIN32)