2020-08-11 18:11:55 +00:00
|
|
|
set(crypto-test_ADD_SOURCES crypto-test-ref.h)
|
|
|
|
set(subprocess-test_ADD_SOURCES subprocess-test.cmd)
|
|
|
|
|
|
|
|
add_compile_options(
|
|
|
|
${CXX_WARNING_FLAGS}
|
|
|
|
)
|
|
|
|
|
|
|
|
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
|
|
|
# patches welcomed
|
|
|
|
add_compile_options(-Wno-sign-compare)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
add_definitions(
|
|
|
|
-D__TRANSMISSION__
|
|
|
|
)
|
|
|
|
|
|
|
|
include_directories(
|
|
|
|
${CMAKE_SOURCE_DIR}/libtransmission
|
|
|
|
${CMAKE_SOURCE_DIR}/tests/libtransmission
|
|
|
|
${CMAKE_BINARY_DIR}/libtransmission
|
|
|
|
)
|
|
|
|
include_directories(
|
|
|
|
SYSTEM
|
|
|
|
${CURL_INCLUDE_DIRS}
|
|
|
|
${EVENT2_INCLUDE_DIRS}
|
|
|
|
)
|
|
|
|
|
|
|
|
set_property(DIRECTORY PROPERTY FOLDER "UnitTests")
|
|
|
|
set_property(DIRECTORY PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded")
|
|
|
|
|
Add in-kernel file copying for several platforms. (#1092)
* Add in-kernel copying support for Linux (sendfile64(2), copy_file_range(2)), FreeBSD 13 (copy_file_range(2)), MacOS (copyfile(2)), and Windows (CopyFileExA).
* Fix macro name USE_COPY_FILE_RANGE.
* Minor bugfixes for userspace fallback.
* Fix linux sendfile64 bugs.
* Remove some overzealous asserts.
* Allow transmission-test-copy to take an optional argument for an external reference file.
* Fix return value error of tr_sys_path_copy.
* Use COPYFILE_ALL for Macs without COPYFILE_CLONE.
* Add in-kernel file copying for several platforms.
Numerous operating systems now have support for copying files directly in the
kernel, which is generally more efficient than copying in a userspace read(2)/
write(2) loop. (This becomes particularly relevant for 4th gen PCI-E storage,
which approaches the latency of DRAM.) For Linux I use sendfile64(2), and, for
later kernels, copy_file_range(2). FreeBSD 13 will also support
copy_file_range(2). MacOS has copyfile(2), and Windows has CopyFileExA.
Operating systems lacking such a syscall continue to use the existing
read(2)/write(2) loop.
* Appease uncrustify.
* Appease uncrustify.
* copy-test: generate random content at run time.
* copy-test: Stylistic changes and more check()s.
* copy-test: files_are_identical should follow test idioms
* tr_sys_path_copy: numerous tweaks as requested by review.
* s/old file/source file; s/new file/destination file.
* tr_sys_path_copy: handle win32 wide characters in paths.
* Uncrustify.
* test-copy: Use non-string create_file_with_contents.
* tr_sys_path_copy: numerous fixes.
Per review: generate test file content at runtime; tidy use of check();
fix style; re-measure file sizes in the copy; define a macro when the
system does not provide it; use Unicode APIs on Windows; and fix
documentation.
* Updated as per comments.
* Rebase kernel-copy changes onto 3.0 with gtest.
* Undo irrelevant comment change.
* Fix syntax error.
* Use tr_malloc() instead of tr_valloc().
* Use EXPECT instead of TR_ASSERT in gtest.
* Add error handling.
* Acceptable coding style has changed again.
Now it's camelCase. Also use nullptr instead of NULL, etc.
* Fix east/west const.
Co-authored-by: Mike Gelfand <mikedld@users.noreply.github.com>
2021-08-07 09:04:03 +00:00
|
|
|
foreach(T bitfield blocklist clients copy crypto error file getopt
|
2020-08-11 18:11:55 +00:00
|
|
|
history json magnet makemeta metainfo move peer-msgs
|
|
|
|
quark rename rpc session subprocess utils variant watchdir)
|
|
|
|
set(TP libtransmission-test-${T})
|
|
|
|
add_executable(${TP} ${T}-test.cc)
|
|
|
|
target_link_libraries(${TP} gtestall ${TR_NAME})
|
|
|
|
add_test(NAME ${TP} COMMAND ${TP})
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
add_custom_command(
|
|
|
|
TARGET libtransmission-test-subprocess
|
|
|
|
PRE_BUILD
|
|
|
|
COMMAND
|
|
|
|
${CMAKE_COMMAND} -E copy_if_different
|
|
|
|
${PROJECT_SOURCE_DIR}/tests/libtransmission/subprocess-test.cmd
|
|
|
|
$<TARGET_FILE_DIR:libtransmission-test-subprocess>/libtransmission-test-subprocess.cmd
|
|
|
|
)
|