mirror of
https://github.com/GothenburgBitFactory/timewarrior.git
synced 2025-07-07 20:06:39 +02:00
Introduce AtomicFiles
Introduce AtomicFile and a test of this module to the code. AtomicFile is like File, except all writes go to temporary files until the class method finalize_all () is called and the temporary files are copied over the real files. If any writes fail, like when there is no more space on the filesystem, none of the files in the database will be modified. Since we need version 1.00 of libfiu, I have only added it to the debian testing container, which includes libfiu-1.00 in the default repository. Related to #155
This commit is contained in:
parent
6db1d2b859
commit
8e99c07d85
9 changed files with 1039 additions and 6 deletions
|
@ -8,6 +8,24 @@ if(POLICY CMP0037 AND ${CMAKE_VERSION} VERSION_LESS "3.11.0")
|
|||
cmake_policy(SET CMP0037 OLD)
|
||||
endif()
|
||||
|
||||
# If this is a debug build, check if we have libfiu installed and available on
|
||||
# the system. If so, we will be able to use it to add additional tests of the
|
||||
# failure conditions
|
||||
|
||||
if (uppercase_CMAKE_BUILD_TYPE MATCHES "DEBUG")
|
||||
find_library(FIU_ENABLE fiu)
|
||||
if (FIU_ENABLE)
|
||||
message (STATUS "libfiu found")
|
||||
add_definitions (-DFIU_ENABLE)
|
||||
set (test_LIBS fiu ${TIMEW_LIBRARIES})
|
||||
else (FIU_ENABLE)
|
||||
message (STATUS "NOTE: install libfiu to run additional tests")
|
||||
set (test_LIBS ${TIMEW_LIBRARIES})
|
||||
endif (FIU_ENABLE)
|
||||
else (uppercase_CMAKE_BUILD_TYPE MATCHES "DEBUG")
|
||||
set (test_LIBS ${TIMEW_LIBRARIES})
|
||||
endif (uppercase_CMAKE_BUILD_TYPE MATCHES "DEBUG")
|
||||
|
||||
include_directories (${CMAKE_SOURCE_DIR}
|
||||
${CMAKE_SOURCE_DIR}/src
|
||||
${CMAKE_SOURCE_DIR}/src/libshared/src
|
||||
|
@ -16,7 +34,7 @@ include_directories (${CMAKE_SOURCE_DIR}
|
|||
include_directories (${CMAKE_INSTALL_PREFIX}/include)
|
||||
link_directories(${CMAKE_INSTALL_PREFIX}/lib)
|
||||
|
||||
set (test_SRCS data.t exclusion.t helper.t interval.t range.t rules.t util.t TagInfoDatabase.t)
|
||||
set (test_SRCS atomic data.t exclusion.t helper.t interval.t range.t rules.t util.t TagInfoDatabase.t)
|
||||
|
||||
add_custom_target (test ./run_all --verbose
|
||||
DEPENDS ${test_SRCS}
|
||||
|
@ -24,7 +42,7 @@ add_custom_target (test ./run_all --verbose
|
|||
|
||||
foreach (src_FILE ${test_SRCS})
|
||||
add_executable (${src_FILE} "${src_FILE}.cpp" test.cpp)
|
||||
target_link_libraries (${src_FILE} timew libshared ${TIMEW_LIBRARIES})
|
||||
target_link_libraries (${src_FILE} timew libshared ${test_LIBS})
|
||||
endforeach (src_FILE)
|
||||
|
||||
configure_file(run_all run_all COPYONLY)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue