diff --git a/.gitignore b/.gitignore index 6fa2f8f7..be64a71e 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,6 @@ install_manifest.txt *.swp *.pyc *.cbp +build/ +_codeql_build_dir/ +_codeql_detected_source_root diff --git a/_codeql_build_dir/CPackConfig.cmake b/_codeql_build_dir/CPackConfig.cmake new file mode 100644 index 00000000..3c5105ae --- /dev/null +++ b/_codeql_build_dir/CPackConfig.cmake @@ -0,0 +1,76 @@ +# This file will be configured to contain variables for CPack. These variables +# should be set in the CMake list file of the project before CPack module is +# included. The list of available CPACK_xxx variables and their associated +# documentation may be obtained using +# cpack --help-variable-list +# +# Some variables are common to all generators (e.g. CPACK_PACKAGE_NAME) +# and some are specific to a generator +# (e.g. CPACK_NSIS_EXTRA_INSTALL_COMMANDS). The generator specific variables +# usually begin with CPACK__xxxx. + + +set(CPACK_BINARY_DEB "OFF") +set(CPACK_BINARY_FREEBSD "OFF") +set(CPACK_BINARY_IFW "OFF") +set(CPACK_BINARY_NSIS "OFF") +set(CPACK_BINARY_RPM "OFF") +set(CPACK_BINARY_STGZ "ON") +set(CPACK_BINARY_TBZ2 "OFF") +set(CPACK_BINARY_TGZ "ON") +set(CPACK_BINARY_TXZ "OFF") +set(CPACK_BINARY_TZ "ON") +set(CPACK_BUILD_SOURCE_DIRS "/home/runner/work/timewarrior/timewarrior;/home/runner/work/timewarrior/timewarrior/_codeql_build_dir") +set(CPACK_CMAKE_GENERATOR "Unix Makefiles") +set(CPACK_COMPONENT_UNSPECIFIED_HIDDEN "TRUE") +set(CPACK_COMPONENT_UNSPECIFIED_REQUIRED "TRUE") +set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_FILE "/usr/local/share/cmake-3.31/Templates/CPack.GenericDescription.txt") +set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_SUMMARY "timew built using CMake") +set(CPACK_GENERATOR "STGZ;TGZ;TZ") +set(CPACK_INNOSETUP_ARCHITECTURE "x64") +set(CPACK_INSTALL_CMAKE_PROJECTS "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir;timew;ALL;/") +set(CPACK_INSTALL_PREFIX "/usr/local") +set(CPACK_MODULE_PATH "/home/runner/work/timewarrior/timewarrior/cmake") +set(CPACK_NSIS_DISPLAY_NAME "timew 0.1.1") +set(CPACK_NSIS_INSTALLER_ICON_CODE "") +set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "") +set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") +set(CPACK_NSIS_PACKAGE_NAME "timew 0.1.1") +set(CPACK_NSIS_UNINSTALL_NAME "Uninstall") +set(CPACK_OBJCOPY_EXECUTABLE "/usr/bin/objcopy") +set(CPACK_OBJDUMP_EXECUTABLE "/usr/bin/objdump") +set(CPACK_OUTPUT_CONFIG_FILE "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/CPackConfig.cmake") +set(CPACK_PACKAGE_DEFAULT_LOCATION "/") +set(CPACK_PACKAGE_DESCRIPTION_FILE "/usr/local/share/cmake-3.31/Templates/CPack.GenericDescription.txt") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "timew built using CMake") +set(CPACK_PACKAGE_FILE_NAME "timew-0.1.1-Linux") +set(CPACK_PACKAGE_INSTALL_DIRECTORY "timew 0.1.1") +set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "timew 0.1.1") +set(CPACK_PACKAGE_NAME "timew") +set(CPACK_PACKAGE_RELOCATABLE "true") +set(CPACK_PACKAGE_VENDOR "Humanity") +set(CPACK_PACKAGE_VERSION "0.1.1") +set(CPACK_PACKAGE_VERSION_MAJOR "0") +set(CPACK_PACKAGE_VERSION_MINOR "1") +set(CPACK_PACKAGE_VERSION_PATCH "1") +set(CPACK_READELF_EXECUTABLE "/usr/bin/readelf") +set(CPACK_RESOURCE_FILE_LICENSE "/usr/local/share/cmake-3.31/Templates/CPack.GenericLicense.txt") +set(CPACK_RESOURCE_FILE_README "/usr/local/share/cmake-3.31/Templates/CPack.GenericDescription.txt") +set(CPACK_RESOURCE_FILE_WELCOME "/usr/local/share/cmake-3.31/Templates/CPack.GenericWelcome.txt") +set(CPACK_SET_DESTDIR "OFF") +set(CPACK_SOURCE_GENERATOR "TGZ") +set(CPACK_SOURCE_IGNORE_FILES "CMakeCache;CMakeFiles;CPackConfig;CPackSourceConfig;_CPack_Packages;cmake_install;cmake.h$;commit.h$;install_manifest;Makefile$;package-config;src/timew$;src/libtimew.a;src/commands/libcommands.a;src/lex$;src/libshared.a;src/liblibshared.a;src/libshared/test;/\\.pre-commit-config.yaml;/\\.gitmodules;/\\.github/;/\\.gitignore;/\\.git/;swp$") +set(CPACK_SOURCE_OUTPUT_CONFIG_FILE "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/CPackSourceConfig.cmake") +set(CPACK_SOURCE_PACKAGE_FILE_NAME "timew-1.9.1-dev") +set(CPACK_SYSTEM_NAME "Linux") +set(CPACK_THREADS "1") +set(CPACK_TOPLEVEL_TAG "Linux") +set(CPACK_WIX_SIZEOF_VOID_P "8") + +if(NOT CPACK_PROPERTIES_FILE) + set(CPACK_PROPERTIES_FILE "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/CPackProperties.cmake") +endif() + +if(EXISTS ${CPACK_PROPERTIES_FILE}) + include(${CPACK_PROPERTIES_FILE}) +endif() diff --git a/_codeql_build_dir/CPackSourceConfig.cmake b/_codeql_build_dir/CPackSourceConfig.cmake new file mode 100644 index 00000000..c779bfaf --- /dev/null +++ b/_codeql_build_dir/CPackSourceConfig.cmake @@ -0,0 +1,82 @@ +# This file will be configured to contain variables for CPack. These variables +# should be set in the CMake list file of the project before CPack module is +# included. The list of available CPACK_xxx variables and their associated +# documentation may be obtained using +# cpack --help-variable-list +# +# Some variables are common to all generators (e.g. CPACK_PACKAGE_NAME) +# and some are specific to a generator +# (e.g. CPACK_NSIS_EXTRA_INSTALL_COMMANDS). The generator specific variables +# usually begin with CPACK__xxxx. + + +set(CPACK_BINARY_DEB "OFF") +set(CPACK_BINARY_FREEBSD "OFF") +set(CPACK_BINARY_IFW "OFF") +set(CPACK_BINARY_NSIS "OFF") +set(CPACK_BINARY_RPM "OFF") +set(CPACK_BINARY_STGZ "ON") +set(CPACK_BINARY_TBZ2 "OFF") +set(CPACK_BINARY_TGZ "ON") +set(CPACK_BINARY_TXZ "OFF") +set(CPACK_BINARY_TZ "ON") +set(CPACK_BUILD_SOURCE_DIRS "/home/runner/work/timewarrior/timewarrior;/home/runner/work/timewarrior/timewarrior/_codeql_build_dir") +set(CPACK_CMAKE_GENERATOR "Unix Makefiles") +set(CPACK_COMPONENT_UNSPECIFIED_HIDDEN "TRUE") +set(CPACK_COMPONENT_UNSPECIFIED_REQUIRED "TRUE") +set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_FILE "/usr/local/share/cmake-3.31/Templates/CPack.GenericDescription.txt") +set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_SUMMARY "timew built using CMake") +set(CPACK_GENERATOR "TGZ") +set(CPACK_IGNORE_FILES "CMakeCache;CMakeFiles;CPackConfig;CPackSourceConfig;_CPack_Packages;cmake_install;cmake.h$;commit.h$;install_manifest;Makefile$;package-config;src/timew$;src/libtimew.a;src/commands/libcommands.a;src/lex$;src/libshared.a;src/liblibshared.a;src/libshared/test;/\\.pre-commit-config.yaml;/\\.gitmodules;/\\.github/;/\\.gitignore;/\\.git/;swp$") +set(CPACK_INNOSETUP_ARCHITECTURE "x64") +set(CPACK_INSTALLED_DIRECTORIES "/home/runner/work/timewarrior/timewarrior;/") +set(CPACK_INSTALL_CMAKE_PROJECTS "") +set(CPACK_INSTALL_PREFIX "/usr/local") +set(CPACK_MODULE_PATH "/home/runner/work/timewarrior/timewarrior/cmake") +set(CPACK_NSIS_DISPLAY_NAME "timew 0.1.1") +set(CPACK_NSIS_INSTALLER_ICON_CODE "") +set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "") +set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") +set(CPACK_NSIS_PACKAGE_NAME "timew 0.1.1") +set(CPACK_NSIS_UNINSTALL_NAME "Uninstall") +set(CPACK_OBJCOPY_EXECUTABLE "/usr/bin/objcopy") +set(CPACK_OBJDUMP_EXECUTABLE "/usr/bin/objdump") +set(CPACK_OUTPUT_CONFIG_FILE "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/CPackConfig.cmake") +set(CPACK_PACKAGE_DEFAULT_LOCATION "/") +set(CPACK_PACKAGE_DESCRIPTION_FILE "/usr/local/share/cmake-3.31/Templates/CPack.GenericDescription.txt") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "timew built using CMake") +set(CPACK_PACKAGE_FILE_NAME "timew-1.9.1-dev") +set(CPACK_PACKAGE_INSTALL_DIRECTORY "timew 0.1.1") +set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "timew 0.1.1") +set(CPACK_PACKAGE_NAME "timew") +set(CPACK_PACKAGE_RELOCATABLE "true") +set(CPACK_PACKAGE_VENDOR "Humanity") +set(CPACK_PACKAGE_VERSION "0.1.1") +set(CPACK_PACKAGE_VERSION_MAJOR "0") +set(CPACK_PACKAGE_VERSION_MINOR "1") +set(CPACK_PACKAGE_VERSION_PATCH "1") +set(CPACK_READELF_EXECUTABLE "/usr/bin/readelf") +set(CPACK_RESOURCE_FILE_LICENSE "/usr/local/share/cmake-3.31/Templates/CPack.GenericLicense.txt") +set(CPACK_RESOURCE_FILE_README "/usr/local/share/cmake-3.31/Templates/CPack.GenericDescription.txt") +set(CPACK_RESOURCE_FILE_WELCOME "/usr/local/share/cmake-3.31/Templates/CPack.GenericWelcome.txt") +set(CPACK_RPM_PACKAGE_SOURCES "ON") +set(CPACK_SET_DESTDIR "OFF") +set(CPACK_SOURCE_GENERATOR "TGZ") +set(CPACK_SOURCE_IGNORE_FILES "CMakeCache;CMakeFiles;CPackConfig;CPackSourceConfig;_CPack_Packages;cmake_install;cmake.h$;commit.h$;install_manifest;Makefile$;package-config;src/timew$;src/libtimew.a;src/commands/libcommands.a;src/lex$;src/libshared.a;src/liblibshared.a;src/libshared/test;/\\.pre-commit-config.yaml;/\\.gitmodules;/\\.github/;/\\.gitignore;/\\.git/;swp$") +set(CPACK_SOURCE_INSTALLED_DIRECTORIES "/home/runner/work/timewarrior/timewarrior;/") +set(CPACK_SOURCE_OUTPUT_CONFIG_FILE "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/CPackSourceConfig.cmake") +set(CPACK_SOURCE_PACKAGE_FILE_NAME "timew-1.9.1-dev") +set(CPACK_SOURCE_TOPLEVEL_TAG "Linux-Source") +set(CPACK_STRIP_FILES "") +set(CPACK_SYSTEM_NAME "Linux") +set(CPACK_THREADS "1") +set(CPACK_TOPLEVEL_TAG "Linux-Source") +set(CPACK_WIX_SIZEOF_VOID_P "8") + +if(NOT CPACK_PROPERTIES_FILE) + set(CPACK_PROPERTIES_FILE "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/CPackProperties.cmake") +endif() + +if(EXISTS ${CPACK_PROPERTIES_FILE}) + include(${CPACK_PROPERTIES_FILE}) +endif() diff --git a/_codeql_build_dir/compile_commands.json b/_codeql_build_dir/compile_commands.json new file mode 100644 index 00000000..b2e8e94d --- /dev/null +++ b/_codeql_build_dir/compile_commands.json @@ -0,0 +1,578 @@ +[ +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/Args.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Args.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Args.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Args.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/Color.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Color.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Color.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Color.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/Composite.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Composite.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Composite.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Composite.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/Configuration.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Configuration.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Configuration.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Configuration.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/Datetime.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Datetime.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Datetime.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Datetime.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/Duration.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Duration.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Duration.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Duration.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/FS.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/FS.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/FS.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/FS.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/JSON.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/JSON.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/JSON.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/JSON.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/Lexer.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Lexer.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Lexer.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Lexer.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/Log.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Log.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Log.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Log.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/Msg.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Msg.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Msg.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Msg.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/Packrat.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Packrat.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Packrat.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Packrat.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/Palette.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Palette.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Palette.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Palette.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/PEG.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/PEG.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/PEG.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/PEG.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/Pig.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Pig.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Pig.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Pig.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/RX.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/RX.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/RX.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/RX.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/SAX.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/SAX.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/SAX.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/SAX.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/Table.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Table.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Table.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Table.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/Timer.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Timer.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Timer.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Timer.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/Tree.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Tree.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Tree.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Tree.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/format.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/format.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/format.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/format.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/ip.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/ip.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/ip.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/ip.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/shared.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/shared.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/shared.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/shared.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/unicode.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/unicode.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/unicode.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/unicode.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.dir/utf8.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/utf8.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/utf8.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/utf8.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/src", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/lex_executable.dir/lex.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/lex.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/lex.cpp", + "output": "src/libshared/src/CMakeFiles/lex_executable.dir/lex.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/args.t.dir/args.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/args.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/args.t.cpp", + "output": "src/libshared/test/CMakeFiles/args.t.dir/args.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/args.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/args.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/autocomplete.t.dir/autocomplete.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/autocomplete.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/autocomplete.t.cpp", + "output": "src/libshared/test/CMakeFiles/autocomplete.t.dir/autocomplete.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/autocomplete.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/autocomplete.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/charliteral.t.dir/charliteral.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/charliteral.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/charliteral.t.cpp", + "output": "src/libshared/test/CMakeFiles/charliteral.t.dir/charliteral.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/charliteral.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/charliteral.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/composite.t.dir/composite.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/composite.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/composite.t.cpp", + "output": "src/libshared/test/CMakeFiles/composite.t.dir/composite.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/composite.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/composite.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/color.t.dir/color.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/color.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/color.t.cpp", + "output": "src/libshared/test/CMakeFiles/color.t.dir/color.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/color.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/color.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/configuration.t.dir/configuration.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/configuration.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/configuration.t.cpp", + "output": "src/libshared/test/CMakeFiles/configuration.t.dir/configuration.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/configuration.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/configuration.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/dates.t.dir/dates.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/dates.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/dates.t.cpp", + "output": "src/libshared/test/CMakeFiles/dates.t.dir/dates.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/dates.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/dates.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/datetime.t.dir/datetime.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/datetime.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/datetime.t.cpp", + "output": "src/libshared/test/CMakeFiles/datetime.t.dir/datetime.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/datetime.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/datetime.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/duration.t.dir/duration.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/duration.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/duration.t.cpp", + "output": "src/libshared/test/CMakeFiles/duration.t.dir/duration.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/duration.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/duration.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/external.t.dir/external.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/external.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/external.t.cpp", + "output": "src/libshared/test/CMakeFiles/external.t.dir/external.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/external.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/external.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/format.t.dir/format.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/format.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/format.t.cpp", + "output": "src/libshared/test/CMakeFiles/format.t.dir/format.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/format.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/format.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/fs.t.dir/fs.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/fs.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/fs.t.cpp", + "output": "src/libshared/test/CMakeFiles/fs.t.dir/fs.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/fs.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/fs.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/intrinsic.t.dir/intrinsic.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/intrinsic.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/intrinsic.t.cpp", + "output": "src/libshared/test/CMakeFiles/intrinsic.t.dir/intrinsic.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/intrinsic.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/intrinsic.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/json.t.dir/json.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/json.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/json.t.cpp", + "output": "src/libshared/test/CMakeFiles/json.t.dir/json.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/json.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/json.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/json_test.dir/json_test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/json_test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/json_test.cpp", + "output": "src/libshared/test/CMakeFiles/json_test.dir/json_test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/json_test.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/json_test.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/lexer.t.dir/lexer.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/lexer.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/lexer.t.cpp", + "output": "src/libshared/test/CMakeFiles/lexer.t.dir/lexer.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/lexer.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/lexer.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/list.t.dir/list.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/list.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/list.t.cpp", + "output": "src/libshared/test/CMakeFiles/list.t.dir/list.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/list.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/list.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/msg.t.dir/msg.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/msg.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/msg.t.cpp", + "output": "src/libshared/test/CMakeFiles/msg.t.dir/msg.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/msg.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/msg.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/negative.t.dir/negative.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/negative.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/negative.t.cpp", + "output": "src/libshared/test/CMakeFiles/negative.t.dir/negative.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/negative.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/negative.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/palette.t.dir/palette.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/palette.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/palette.t.cpp", + "output": "src/libshared/test/CMakeFiles/palette.t.dir/palette.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/palette.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/palette.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/peg.t.dir/peg.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/peg.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/peg.t.cpp", + "output": "src/libshared/test/CMakeFiles/peg.t.dir/peg.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/peg.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/peg.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/pig.t.dir/pig.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/pig.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/pig.t.cpp", + "output": "src/libshared/test/CMakeFiles/pig.t.dir/pig.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/pig.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/pig.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/plus.t.dir/plus.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/plus.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/plus.t.cpp", + "output": "src/libshared/test/CMakeFiles/plus.t.dir/plus.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/plus.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/plus.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/positive.t.dir/positive.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/positive.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/positive.t.cpp", + "output": "src/libshared/test/CMakeFiles/positive.t.dir/positive.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/positive.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/positive.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/question.t.dir/question.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/question.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/question.t.cpp", + "output": "src/libshared/test/CMakeFiles/question.t.dir/question.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/question.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/question.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/rx.t.dir/rx.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/rx.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/rx.t.cpp", + "output": "src/libshared/test/CMakeFiles/rx.t.dir/rx.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/rx.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/rx.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/sax_test.dir/sax_test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/sax_test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/sax_test.cpp", + "output": "src/libshared/test/CMakeFiles/sax_test.dir/sax_test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/sax_test.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/sax_test.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.t.dir/shared.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/shared.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/shared.t.cpp", + "output": "src/libshared/test/CMakeFiles/shared.t.dir/shared.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/shared.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/shared.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/star.t.dir/star.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/star.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/star.t.cpp", + "output": "src/libshared/test/CMakeFiles/star.t.dir/star.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/star.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/star.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/stringliteral.t.dir/stringliteral.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/stringliteral.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/stringliteral.t.cpp", + "output": "src/libshared/test/CMakeFiles/stringliteral.t.dir/stringliteral.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/stringliteral.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/stringliteral.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/table.t.dir/table.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/table.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/table.t.cpp", + "output": "src/libshared/test/CMakeFiles/table.t.dir/table.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/table.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/table.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/timer.t.dir/timer.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/timer.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/timer.t.cpp", + "output": "src/libshared/test/CMakeFiles/timer.t.dir/timer.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/timer.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/timer.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/tree.t.dir/tree.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/tree.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/tree.t.cpp", + "output": "src/libshared/test/CMakeFiles/tree.t.dir/tree.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/tree.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/tree.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/unicode.t.dir/unicode.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/unicode.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/unicode.t.cpp", + "output": "src/libshared/test/CMakeFiles/unicode.t.dir/unicode.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/unicode.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/unicode.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/utf8.t.dir/utf8.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/utf8.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/utf8.t.cpp", + "output": "src/libshared/test/CMakeFiles/utf8.t.dir/utf8.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/_codeql_build_dir/src/libshared/test", + "command": "/tmp/codeql-scratch-43dfc3bcedaae582/dbs/cpp/working/autobuild/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/utf8.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/utf8.t.dir/test.cpp.o" +} +] \ No newline at end of file diff --git a/_codeql_build_dir/src/commands/libcommands.a b/_codeql_build_dir/src/commands/libcommands.a new file mode 100644 index 00000000..b03b76f5 Binary files /dev/null and b/_codeql_build_dir/src/commands/libcommands.a differ diff --git a/_codeql_build_dir/src/libshared/src/lex b/_codeql_build_dir/src/libshared/src/lex new file mode 100755 index 00000000..62180ce5 Binary files /dev/null and b/_codeql_build_dir/src/libshared/src/lex differ diff --git a/_codeql_build_dir/src/libshared/src/libshared.a b/_codeql_build_dir/src/libshared/src/libshared.a new file mode 100644 index 00000000..e6a91305 Binary files /dev/null and b/_codeql_build_dir/src/libshared/src/libshared.a differ diff --git a/_codeql_build_dir/src/libshared/test/problems b/_codeql_build_dir/src/libshared/test/problems new file mode 100755 index 00000000..765ac031 --- /dev/null +++ b/_codeql_build_dir/src/libshared/test/problems @@ -0,0 +1,146 @@ +#!/usr/bin/env python3 + +import sys +import re +import argparse +from collections import defaultdict + + +def color(text, c): + """ + Add color on the keyword that identifies the state of the test + """ + if sys.stdout.isatty(): + clear = "\033[0m" + + colors = { + "red": "\033[1m\033[91m", + "yellow": "\033[1m\033[93m", + "green": "\033[1m\033[92m", + } + return colors[c] + text + clear + else: + return text + + +def parse_args(): + parser = argparse.ArgumentParser(description="Report on test results") + parser.add_argument('--summary', action="store_true", + help="Display only the totals in each category") + parser.add_argument('tapfile', default="all.log", nargs="?", + help="File containing TAP output") + return parser.parse_args() + + +def print_category(tests): + if not cmd_args.summary: + for key in sorted(tests): + print("%-32s %4d" % (key, tests[key])) + + +def pad(i): + return " " * i + + +if __name__ == "__main__": + cmd_args = parse_args() + + errors = defaultdict(int) + skipped = defaultdict(int) + expected = defaultdict(int) + unexpected = defaultdict(int) + passed = defaultdict(int) + + file = re.compile(r"^# (?:./)?(\S+\.t)(?:\.exe)?$") + timestamp = re.compile(r"^# (\d+(?:\.\d+)?) ==>.*$") + + expected_fail = re.compile(r"^not ok.*?#\s*TODO", re.I) + unexpected_pass = re.compile(r"^ok .*?#\s*TODO", re.I) + skip = re.compile(r"^ok .*?#\s*skip", re.I) + ok = re.compile(r"^ok ", re.I) + not_ok = re.compile(r"^not ok", re.I) + comment = re.compile(r"^#") + plan = re.compile(r"^1..\d+\s*(?:#.*)?$") + + start = None + stop = None + + with open(cmd_args.tapfile) as fh: + for line in fh: + if start is None: + # First line contains the starting timestamp + start = float(timestamp.match(line).group(1)) + continue + + match = file.match(line) + if match: + filename = match.group(1) + + elif expected_fail.match(line): + expected[filename] += 1 + + elif unexpected_pass.match(line): + unexpected[filename] += 1 + + elif skip.match(line): + skipped[filename] += 1 + + # It's important these come last, since they're sub-patterns of the above + + elif ok.match(line): + passed[filename] += 1 + + elif not_ok.match(line): + errors[filename] += 1 + + elif comment.match(line): + pass + + elif plan.match(line): + pass + + else: + # Uncomment if you want to see malformed things we caught as well... + # print(color("Malformed TAP (" + filename + "): " + line, "red")) + pass + + # Last line contains the ending timestamp + stop = float(timestamp.match(line).group(1)) + + v = "{0:>5d}" + passed_str = "Passed:" + pad(24) + passed_int = v.format(sum(passed.values())) + error_str = "Failed:" + pad(24) + error_int = v.format(sum(errors.values())) + unexpected_str = "Unexpected successes:" + pad(10) + unexpected_int = v.format(sum(unexpected.values())) + skipped_str = "Skipped:" + pad(23) + skipped_int = v.format(sum(skipped.values())) + expected_str = "Expected failures:" + pad(13) + expected_int = v.format(sum(expected.values())) + runtime_str = "Runtime:" + pad(20) + runtime_int = "{0:>8.2f} seconds".format(stop - start) + + if cmd_args.summary: + print(color(passed_str, "green"), passed_int) + print(color(error_str, "red"), error_int) + print(color(unexpected_str, "red"), unexpected_int) + print(color(skipped_str, "yellow"), skipped_int) + print(color(expected_str, "yellow"), expected_int) + print(runtime_str, runtime_int) + + else: + print(color(error_str, "red")) + print_category(errors) + print() + print(color(unexpected_str, "red")) + print_category(unexpected) + print() + print(color(skipped_str, "yellow")) + print_category(skipped) + print() + print(color(expected_str, "yellow")) + print_category(expected) + + # If we encountered any failures, return non-zero code + sys.exit(1 if int(error_int) or int(unexpected_int) else 0) diff --git a/_codeql_build_dir/src/libshared/test/run_all b/_codeql_build_dir/src/libshared/test/run_all new file mode 100755 index 00000000..e3220f2a --- /dev/null +++ b/_codeql_build_dir/src/libshared/test/run_all @@ -0,0 +1,224 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import os +import sys +import glob +import argparse +import logging +import time +import codecs +from multiprocessing import cpu_count +from threading import Thread +from subprocess import call, Popen, PIPE +from queue import Queue, Empty + +TIMEOUT = .2 + + +def run_test(testqueue, outqueue, threadname): + start = time.time() + while True: + try: + test = testqueue.get(block=True, timeout=TIMEOUT) + except Empty: + break + + log.info("Running test %s", test) + + try: + p = Popen(os.path.abspath(test), stdout=PIPE, stderr=PIPE, + env=os.environ) + out, err = p.communicate() + except Exception as e: + log.exception(e) + # Premature end + break + + out, err = out.decode('utf-8'), err.decode('utf-8') + + output = ("# {0}\n".format(os.path.basename(test)), out, err) + log.debug("Collected output %s", output) + outqueue.put(output) + + testqueue.task_done() + + log.warning("Finished %s thread after %s seconds", + threadname, round(time.time() - start, 3)) + + +class TestRunner(object): + def __init__(self): + self.threads = [] + self.tap = open(cmd_args.tapfile, 'w', errors='ignore') + self._parallelq = Queue() + self._serialq = Queue() + self._outputq = Queue() + + def _find_tests(self): + for test in glob.glob("*.t") + glob.glob("*.t.exe"): + if os.access(test, os.X_OK): + # Executables only + if self._is_parallelizable(test): + log.debug("Treating as parallel: %s", test) + self._parallelq.put(test) + else: + log.debug("Treating as serial: %s", test) + self._serialq.put(test) + else: + log.debug("Ignored test %s as it is not executable", test) + + log.info("Parallel tests: %s", self._parallelq.qsize()) + log.info("Serial tests: %s", self._serialq.qsize()) + + def _prepare_threads(self): + # Serial thread + self.threads.append( + Thread(target=run_test, args=(self._serialq, self._outputq, "Serial")) + ) + # Parallel threads + self.threads.extend([ + Thread(target=run_test, args=(self._parallelq, self._outputq, "Parallel")) + for i in range(cpu_count()) + ]) + log.info("Spawned %s threads to run tests", len(self.threads)) + + def _start_threads(self): + for thread in self.threads: + # Threads die when main thread dies + log.debug("Starting thread %s", thread) + thread.daemon = True + thread.start() + + def _print_timestamp_to_tap(self): + now = time.time() + timestamp = "# {0} ==> {1}\n".format( + now, + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(now)), + ) + + log.debug("Adding timestamp %s to TAP file", timestamp) + self.tap.write(timestamp) + + def _is_parallelizable(self, test): + if cmd_args.serial: + return False + + # This is a pretty weird way to do it, and not realiable. + # We are dealing with some binary tests though. + with open(test, 'rb') as fh: + header = fh.read(100).split(b"\n") + if len(header) >= 2 and \ + ((b"/usr/bin/env python" in header[0]) or \ + (header[1][-14:] == b"bash_tap_tw.sh")): + return True + else: + return False + + def _get_remaining_tests(self): + return self._parallelq.qsize() + self._serialq.qsize() + + def is_running(self): + for thread in self.threads: + if thread.is_alive(): + return True + + return False + + def start(self): + self._find_tests() + self._prepare_threads() + + self._print_timestamp_to_tap() + + finished = 0 + total = self._get_remaining_tests() + + self._start_threads() + + while self.is_running() or not self._outputq.empty(): + try: + outputs = self._outputq.get(block=True, timeout=TIMEOUT) + except Empty: + continue + + log.debug("Outputting to TAP: %s", outputs) + + for output in outputs: + self.tap.write(output) + + if cmd_args.verbose: + sys.stdout.write(output) + + self._outputq.task_done() + finished += 1 + + log.warning("Finished %s out of %s tests", finished, total) + + self._print_timestamp_to_tap() + + if not self._parallelq.empty() or not self._serialq.empty(): + raise RuntimeError( + "Something went wrong, not all tests were ran. {0} " + "remaining.".format(self._get_remaining_tests())) + + def show_report(self): + self.tap.flush() + sys.stdout.flush() + sys.stderr.flush() + + log.debug("Calling 'problems --summary' for report") + return call([os.path.abspath("problems"), "--summary", cmd_args.tapfile]) + + +def parse_args(): + parser = argparse.ArgumentParser(description="Run Taskwarrior tests") + parser.add_argument('--verbose', '-v', action="store_true", + help="Also send TAP output to stdout") + parser.add_argument('--logging', '-l', action="count", + default=0, + help="Logging level. -lll is the highest level") + parser.add_argument('--serial', action="store_true", + help="Do not run tests in parallel") + parser.add_argument('--tapfile', default="all.log", + help="File to use for TAP output") + return parser.parse_args() + + +def main(): + sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach()) + + runner = TestRunner() + runner.start() + + # Propagate the return code + return runner.show_report() + + +if __name__ == "__main__": + cmd_args = parse_args() + + if cmd_args.logging == 1: + level = logging.WARN + elif cmd_args.logging == 2: + level = logging.INFO + elif cmd_args.logging >= 3: + level = logging.DEBUG + else: + level = logging.ERROR + + logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(message)s", + level=level, + ) + log = logging.getLogger(__name__) + + log.debug("Parsed commandline arguments: %s", cmd_args) + + try: + sys.exit(main()) + except Exception as e: + log.exception(e) + sys.exit(1) + +# vim: ai sts=4 et sw=4 diff --git a/_codeql_build_dir/src/libtimew.a b/_codeql_build_dir/src/libtimew.a new file mode 100644 index 00000000..72730c53 Binary files /dev/null and b/_codeql_build_dir/src/libtimew.a differ diff --git a/_codeql_build_dir/src/timew b/_codeql_build_dir/src/timew new file mode 100755 index 00000000..ec58c99a Binary files /dev/null and b/_codeql_build_dir/src/timew differ diff --git a/_codeql_build_dir/test/problems b/_codeql_build_dir/test/problems new file mode 100755 index 00000000..e36f945c --- /dev/null +++ b/_codeql_build_dir/test/problems @@ -0,0 +1,208 @@ +#!/usr/bin/env python3 + +import argparse +import re +import sys +from collections import defaultdict + + +def color(text, c): + """ + Add color on the keyword that identifies the state of the test + """ + if sys.stdout.isatty(): + clear = "\033[0m" + + colors = { + "red": "\033[1m\033[91m", + "yellow": "\033[1m\033[93m", + "green": "\033[1m\033[92m", + } + return colors[c] + text + clear + else: + return text + + +def parse_args(): + parser = argparse.ArgumentParser(description="Report on test results") + parser.add_argument('--summary', action="store_true", + help="Display only the totals in each category") + parser.add_argument('--details', action="store_true", + help="Display details in each category") + parser.add_argument('tapfile', default="all.log", nargs="?", + help="File containing TAP output") + return parser.parse_args() + + +def print_category(tests): + if not cmd_args.summary: + for key in sorted(tests): + print("%-32s %4d" % (key, tests[key])) + + +def print_category_with_details(tests, details): + if not cmd_args.summary: + for key in sorted(tests): + print("%s (%d):" % (key, tests[key])) + print(details[key]) + + +def pad(i): + return " " * i + + +if __name__ == "__main__": + cmd_args = parse_args() + + errors = defaultdict(int) + details_errors = defaultdict(str) + skipped = defaultdict(int) + details_skipped = defaultdict(str) + expected = defaultdict(int) + details_expected = defaultdict(str) + unexpected = defaultdict(int) + details_unexpected = defaultdict(str) + passed = defaultdict(int) + details_passed = defaultdict(str) + + file = re.compile(r"^# (?:./)?(\S+\.t)(?:\.exe)?$") + detail = re.compile("^[^:]+?: (.+)$") + timestamp = re.compile(r"^# (\d+(?:\.\d+)?) ==>.*$") + + expected_fail = re.compile(r"^not ok.*?#\s*TODO", re.I) + unexpected_pass = re.compile(r"^ok .*?#\s*TODO", re.I) + skip = re.compile(r"^ok .*?#\s*skip", re.I) + ok = re.compile(r"^ok ", re.I) + not_ok = re.compile(r"^not ok", re.I) + comment = re.compile(r"^#") + plan = re.compile(r"^1..(\d+)\s*(?:#.*)?$") + + start = None + stop = None + filename = None + expected_test_count = 0 + need_plan = False + + with open(cmd_args.tapfile) as fh: + for line in fh: + if start is None: + # First line contains the starting timestamp + start = float(timestamp.match(line).group(1)) + continue + + match = file.match(line) + if match: + if filename: + if expected_test_count > 0: + print(color("'{}' failed to run all tests.".format(filename), "red"), file=sys.stderr) + errors[filename] += expected_test_count + elif need_plan: + print(color("'{}' failed to run any tests.".format(filename), "red"), file=sys.stderr) + errors[filename] += 1 + filename = match.group(1) + need_plan = True + continue + + match = plan.match(line) + if match: + expected_test_count = int(match.group(1)) + need_plan = False + continue + + match = expected_fail.match(line) + if match: + expected[filename] += 1 + details_expected[filename] += line + expected_test_count -= 1 + continue + + match = unexpected_pass.match(line) + if match: + unexpected[filename] += 1 + details_unexpected[filename] += line + expected_test_count -= 1 + continue + + match = skip.match(line) + if match: + skipped[filename] += 1 + details_skipped[filename] += line + expected_test_count -= 1 + continue + + # It's important these come last, since they're sub-patterns of the above + + match = ok.match(line) + if match: + passed[filename] += 1 + details_passed[filename] += line + expected_test_count -= 1 + continue + + match = not_ok.match(line) + if match: + errors[filename] += 1 + details_errors[filename] += " - " + detail.match(line).group(1) + "\n" + expected_test_count -= 1 + continue + + match = comment.match(line) + if match: + continue + + # Uncomment if you want to see malformed things we caught as well... + # print(color("Malformed TAP (" + filename + "): " + line, "red")) + + # Last line contains the ending timestamp + stop = float(timestamp.match(line).group(1)) + + v = "{0:>5d}" + passed_str = "Passed:" + pad(24) + passed_int = v.format(sum(passed.values())) + error_str = "Failed:" + pad(24) + error_int = v.format(sum(errors.values())) + unexpected_str = "Unexpected successes:" + pad(10) + unexpected_int = v.format(sum(unexpected.values())) + skipped_str = "Skipped:" + pad(23) + skipped_int = v.format(sum(skipped.values())) + expected_str = "Expected failures:" + pad(13) + expected_int = v.format(sum(expected.values())) + runtime_str = "Runtime:" + pad(20) + runtime_int = "{0:>8.2f} seconds".format(stop - start) + + if cmd_args.summary: + print(color(passed_str, "green"), passed_int) + print(color(error_str, "red"), error_int) + print(color(unexpected_str, "red"), unexpected_int) + print(color(skipped_str, "yellow"), skipped_int) + print(color(expected_str, "yellow"), expected_int) + print(runtime_str, runtime_int) + + elif cmd_args.details: + print(color(error_str, "red")) + print_category_with_details(errors, details_errors) + print() + print(color(unexpected_str, "red")) + print_category_with_details(unexpected, details_unexpected) + print() + print(color(skipped_str, "yellow")) + print_category_with_details(skipped, details_skipped) + print() + print(color(expected_str, "yellow")) + print_category_with_details(expected, details_expected) + + else: + print(color(error_str, "red")) + print_category(errors) + print() + print(color(unexpected_str, "red")) + print_category(unexpected) + print() + print(color(skipped_str, "yellow")) + print_category(skipped) + print() + print(color(expected_str, "yellow")) + print_category(expected) + + # If we encountered any failures, return non-zero code + sys.exit(1 if int(error_int) or int(unexpected_int) else 0) diff --git a/_codeql_build_dir/test/run_all b/_codeql_build_dir/test/run_all new file mode 100755 index 00000000..e1ad423a --- /dev/null +++ b/_codeql_build_dir/test/run_all @@ -0,0 +1,229 @@ +#!/usr/bin/env python3 + +import argparse +import codecs +import glob +import logging +import os +import sys +import time +from builtins import object +from builtins import range +from multiprocessing import cpu_count +from queue import Queue, Empty +from subprocess import call, Popen, PIPE +from threading import Thread + +TIMEOUT = .2 + + +def run_test(testqueue, outqueue, threadname): + start = time.time() + while True: + try: + test = testqueue.get(block=True, timeout=TIMEOUT) + except Empty: + break + + log.info("Running test %s", test) + + try: + p = Popen(os.path.abspath(test), stdout=PIPE, stderr=PIPE, env=os.environ) + out, err = p.communicate() + except Exception as e: + log.exception(e) + # Premature end + break + + out, err = out.decode('utf-8'), err.decode('utf-8') + + output = ("# {0}\n".format(os.path.basename(test)), out, err) + log.debug("Collected output %s", output) + outqueue.put(output) + + testqueue.task_done() + + log.warning("Finished %s thread after %s seconds", + threadname, round(time.time() - start, 3)) + + +class TestRunner(object): + def __init__(self): + self.threads = [] + self.tap = open(cmd_args.tapfile, 'w', errors='ignore') + + self._parallelq = Queue() + self._serialq = Queue() + self._outputq = Queue() + + def _find_tests(self): + for test in glob.glob("*.t") + glob.glob("*.t.exe"): + if os.access(test, os.X_OK): + # Executables only + if self._is_parallelizable(test): + log.debug("Treating as parallel: %s", test) + self._parallelq.put(test) + else: + log.debug("Treating as serial: %s", test) + self._serialq.put(test) + else: + log.debug("Ignored test %s as it is not executable", test) + + log.info("Parallel tests: %s", self._parallelq.qsize()) + log.info("Serial tests: %s", self._serialq.qsize()) + + def _prepare_threads(self): + # Serial thread + self.threads.append( + Thread(target=run_test, args=(self._serialq, self._outputq, "Serial")) + ) + # Parallel threads + self.threads.extend([ + Thread(target=run_test, args=(self._parallelq, self._outputq, "Parallel")) + for i in range(cpu_count()) + ]) + log.info("Spawned %s threads to run tests", len(self.threads)) + + def _start_threads(self): + for thread in self.threads: + # Threads die when main thread dies + log.debug("Starting thread %s", thread) + thread.daemon = True + thread.start() + + def _print_timestamp_to_tap(self): + now = time.time() + timestamp = "# {0} ==> {1}\n".format( + now, + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(now)), + ) + + log.debug("Adding timestamp %s to TAP file", timestamp) + self.tap.write(timestamp) + + def _is_parallelizable(self, test): + if cmd_args.serial: + return False + + # This is a pretty weird way to do it, and not reliable. + # We are dealing with some binary tests though. + with open(test, 'rb') as fh: + header = fh.read(100).split(b"\n") + if len(header) >= 2 and \ + ((b"/usr/bin/env python" in header[0]) or + (header[1][-14:] == b"bash_tap_tw.sh")): + return True + else: + return False + + def _get_remaining_tests(self): + return self._parallelq.qsize() + self._serialq.qsize() + + def is_running(self): + for thread in self.threads: + if thread.is_alive(): + return True + + return False + + def start(self): + self._find_tests() + self._prepare_threads() + + self._print_timestamp_to_tap() + + finished = 0 + total = self._get_remaining_tests() + + self._start_threads() + + while self.is_running() or not self._outputq.empty(): + try: + outputs = self._outputq.get(block=True, timeout=TIMEOUT) + except Empty: + continue + + log.debug("Outputting to TAP: %s", outputs) + + for output in outputs: + self.tap.write(output) + + if cmd_args.verbose: + sys.stdout.write(output) + + self._outputq.task_done() + finished += 1 + + log.warning("Finished %s out of %s tests", finished, total) + + self._print_timestamp_to_tap() + + if not self._parallelq.empty() or not self._serialq.empty(): + raise RuntimeError( + "Something went wrong, not all tests were ran. {0} " + "remaining.".format(self._get_remaining_tests())) + + def show_report(self): + self.tap.flush() + sys.stdout.flush() + sys.stderr.flush() + + log.debug("Calling 'problems --summary' for report") + return call([os.path.abspath("problems"), "--summary", cmd_args.tapfile]) + + +def parse_args(): + parser = argparse.ArgumentParser(description="Run Timewarrior tests") + parser.add_argument('--verbose', + '-v', + action="store_true", + help="Also send TAP output to stdout") + parser.add_argument('--logging', + '-l', + action="count", + default=0, + help="Logging level. -lll is the highest level") + parser.add_argument('--serial', + action="store_true", + help="Do not run tests in parallel") + parser.add_argument('--tapfile', + default="all.log", + help="File to use for TAP output") + return parser.parse_args() + + +def main(): + sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach()) + + runner = TestRunner() + runner.start() + + # Propagate the return code + return runner.show_report() + + +if __name__ == "__main__": + cmd_args = parse_args() + + if cmd_args.logging == 1: + level = logging.WARN + elif cmd_args.logging == 2: + level = logging.INFO + elif cmd_args.logging >= 3: + level = logging.DEBUG + else: + level = logging.ERROR + + logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(message)s", + level=level, + ) + log = logging.getLogger(__name__) + + log.debug("Parsed commandline arguments: %s", cmd_args) + + try: + sys.exit(main()) + except Exception as e: + log.exception(e) + sys.exit(1) diff --git a/_codeql_detected_source_root b/_codeql_detected_source_root new file mode 120000 index 00000000..945c9b46 --- /dev/null +++ b/_codeql_detected_source_root @@ -0,0 +1 @@ +. \ No newline at end of file diff --git a/build/CPackConfig.cmake b/build/CPackConfig.cmake new file mode 100644 index 00000000..cc8f60f1 --- /dev/null +++ b/build/CPackConfig.cmake @@ -0,0 +1,76 @@ +# This file will be configured to contain variables for CPack. These variables +# should be set in the CMake list file of the project before CPack module is +# included. The list of available CPACK_xxx variables and their associated +# documentation may be obtained using +# cpack --help-variable-list +# +# Some variables are common to all generators (e.g. CPACK_PACKAGE_NAME) +# and some are specific to a generator +# (e.g. CPACK_NSIS_EXTRA_INSTALL_COMMANDS). The generator specific variables +# usually begin with CPACK__xxxx. + + +set(CPACK_BINARY_DEB "OFF") +set(CPACK_BINARY_FREEBSD "OFF") +set(CPACK_BINARY_IFW "OFF") +set(CPACK_BINARY_NSIS "OFF") +set(CPACK_BINARY_RPM "OFF") +set(CPACK_BINARY_STGZ "ON") +set(CPACK_BINARY_TBZ2 "OFF") +set(CPACK_BINARY_TGZ "ON") +set(CPACK_BINARY_TXZ "OFF") +set(CPACK_BINARY_TZ "ON") +set(CPACK_BUILD_SOURCE_DIRS "/home/runner/work/timewarrior/timewarrior;/home/runner/work/timewarrior/timewarrior/build") +set(CPACK_CMAKE_GENERATOR "Unix Makefiles") +set(CPACK_COMPONENT_UNSPECIFIED_HIDDEN "TRUE") +set(CPACK_COMPONENT_UNSPECIFIED_REQUIRED "TRUE") +set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_FILE "/usr/local/share/cmake-3.31/Templates/CPack.GenericDescription.txt") +set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_SUMMARY "timew built using CMake") +set(CPACK_GENERATOR "STGZ;TGZ;TZ") +set(CPACK_INNOSETUP_ARCHITECTURE "x64") +set(CPACK_INSTALL_CMAKE_PROJECTS "/home/runner/work/timewarrior/timewarrior/build;timew;ALL;/") +set(CPACK_INSTALL_PREFIX "/usr/local") +set(CPACK_MODULE_PATH "/home/runner/work/timewarrior/timewarrior/cmake") +set(CPACK_NSIS_DISPLAY_NAME "timew 0.1.1") +set(CPACK_NSIS_INSTALLER_ICON_CODE "") +set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "") +set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") +set(CPACK_NSIS_PACKAGE_NAME "timew 0.1.1") +set(CPACK_NSIS_UNINSTALL_NAME "Uninstall") +set(CPACK_OBJCOPY_EXECUTABLE "/usr/bin/objcopy") +set(CPACK_OBJDUMP_EXECUTABLE "/usr/bin/objdump") +set(CPACK_OUTPUT_CONFIG_FILE "/home/runner/work/timewarrior/timewarrior/build/CPackConfig.cmake") +set(CPACK_PACKAGE_DEFAULT_LOCATION "/") +set(CPACK_PACKAGE_DESCRIPTION_FILE "/usr/local/share/cmake-3.31/Templates/CPack.GenericDescription.txt") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "timew built using CMake") +set(CPACK_PACKAGE_FILE_NAME "timew-0.1.1-Linux") +set(CPACK_PACKAGE_INSTALL_DIRECTORY "timew 0.1.1") +set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "timew 0.1.1") +set(CPACK_PACKAGE_NAME "timew") +set(CPACK_PACKAGE_RELOCATABLE "true") +set(CPACK_PACKAGE_VENDOR "Humanity") +set(CPACK_PACKAGE_VERSION "0.1.1") +set(CPACK_PACKAGE_VERSION_MAJOR "0") +set(CPACK_PACKAGE_VERSION_MINOR "1") +set(CPACK_PACKAGE_VERSION_PATCH "1") +set(CPACK_READELF_EXECUTABLE "/usr/bin/readelf") +set(CPACK_RESOURCE_FILE_LICENSE "/usr/local/share/cmake-3.31/Templates/CPack.GenericLicense.txt") +set(CPACK_RESOURCE_FILE_README "/usr/local/share/cmake-3.31/Templates/CPack.GenericDescription.txt") +set(CPACK_RESOURCE_FILE_WELCOME "/usr/local/share/cmake-3.31/Templates/CPack.GenericWelcome.txt") +set(CPACK_SET_DESTDIR "OFF") +set(CPACK_SOURCE_GENERATOR "TGZ") +set(CPACK_SOURCE_IGNORE_FILES "CMakeCache;CMakeFiles;CPackConfig;CPackSourceConfig;_CPack_Packages;cmake_install;cmake.h$;commit.h$;install_manifest;Makefile$;package-config;src/timew$;src/libtimew.a;src/commands/libcommands.a;src/lex$;src/libshared.a;src/liblibshared.a;src/libshared/test;/\\.pre-commit-config.yaml;/\\.gitmodules;/\\.github/;/\\.gitignore;/\\.git/;swp$") +set(CPACK_SOURCE_OUTPUT_CONFIG_FILE "/home/runner/work/timewarrior/timewarrior/build/CPackSourceConfig.cmake") +set(CPACK_SOURCE_PACKAGE_FILE_NAME "timew-1.9.1-dev") +set(CPACK_SYSTEM_NAME "Linux") +set(CPACK_THREADS "1") +set(CPACK_TOPLEVEL_TAG "Linux") +set(CPACK_WIX_SIZEOF_VOID_P "8") + +if(NOT CPACK_PROPERTIES_FILE) + set(CPACK_PROPERTIES_FILE "/home/runner/work/timewarrior/timewarrior/build/CPackProperties.cmake") +endif() + +if(EXISTS ${CPACK_PROPERTIES_FILE}) + include(${CPACK_PROPERTIES_FILE}) +endif() diff --git a/build/CPackSourceConfig.cmake b/build/CPackSourceConfig.cmake new file mode 100644 index 00000000..30a1c409 --- /dev/null +++ b/build/CPackSourceConfig.cmake @@ -0,0 +1,82 @@ +# This file will be configured to contain variables for CPack. These variables +# should be set in the CMake list file of the project before CPack module is +# included. The list of available CPACK_xxx variables and their associated +# documentation may be obtained using +# cpack --help-variable-list +# +# Some variables are common to all generators (e.g. CPACK_PACKAGE_NAME) +# and some are specific to a generator +# (e.g. CPACK_NSIS_EXTRA_INSTALL_COMMANDS). The generator specific variables +# usually begin with CPACK__xxxx. + + +set(CPACK_BINARY_DEB "OFF") +set(CPACK_BINARY_FREEBSD "OFF") +set(CPACK_BINARY_IFW "OFF") +set(CPACK_BINARY_NSIS "OFF") +set(CPACK_BINARY_RPM "OFF") +set(CPACK_BINARY_STGZ "ON") +set(CPACK_BINARY_TBZ2 "OFF") +set(CPACK_BINARY_TGZ "ON") +set(CPACK_BINARY_TXZ "OFF") +set(CPACK_BINARY_TZ "ON") +set(CPACK_BUILD_SOURCE_DIRS "/home/runner/work/timewarrior/timewarrior;/home/runner/work/timewarrior/timewarrior/build") +set(CPACK_CMAKE_GENERATOR "Unix Makefiles") +set(CPACK_COMPONENT_UNSPECIFIED_HIDDEN "TRUE") +set(CPACK_COMPONENT_UNSPECIFIED_REQUIRED "TRUE") +set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_FILE "/usr/local/share/cmake-3.31/Templates/CPack.GenericDescription.txt") +set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_SUMMARY "timew built using CMake") +set(CPACK_GENERATOR "TGZ") +set(CPACK_IGNORE_FILES "CMakeCache;CMakeFiles;CPackConfig;CPackSourceConfig;_CPack_Packages;cmake_install;cmake.h$;commit.h$;install_manifest;Makefile$;package-config;src/timew$;src/libtimew.a;src/commands/libcommands.a;src/lex$;src/libshared.a;src/liblibshared.a;src/libshared/test;/\\.pre-commit-config.yaml;/\\.gitmodules;/\\.github/;/\\.gitignore;/\\.git/;swp$") +set(CPACK_INNOSETUP_ARCHITECTURE "x64") +set(CPACK_INSTALLED_DIRECTORIES "/home/runner/work/timewarrior/timewarrior;/") +set(CPACK_INSTALL_CMAKE_PROJECTS "") +set(CPACK_INSTALL_PREFIX "/usr/local") +set(CPACK_MODULE_PATH "/home/runner/work/timewarrior/timewarrior/cmake") +set(CPACK_NSIS_DISPLAY_NAME "timew 0.1.1") +set(CPACK_NSIS_INSTALLER_ICON_CODE "") +set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "") +set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") +set(CPACK_NSIS_PACKAGE_NAME "timew 0.1.1") +set(CPACK_NSIS_UNINSTALL_NAME "Uninstall") +set(CPACK_OBJCOPY_EXECUTABLE "/usr/bin/objcopy") +set(CPACK_OBJDUMP_EXECUTABLE "/usr/bin/objdump") +set(CPACK_OUTPUT_CONFIG_FILE "/home/runner/work/timewarrior/timewarrior/build/CPackConfig.cmake") +set(CPACK_PACKAGE_DEFAULT_LOCATION "/") +set(CPACK_PACKAGE_DESCRIPTION_FILE "/usr/local/share/cmake-3.31/Templates/CPack.GenericDescription.txt") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "timew built using CMake") +set(CPACK_PACKAGE_FILE_NAME "timew-1.9.1-dev") +set(CPACK_PACKAGE_INSTALL_DIRECTORY "timew 0.1.1") +set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "timew 0.1.1") +set(CPACK_PACKAGE_NAME "timew") +set(CPACK_PACKAGE_RELOCATABLE "true") +set(CPACK_PACKAGE_VENDOR "Humanity") +set(CPACK_PACKAGE_VERSION "0.1.1") +set(CPACK_PACKAGE_VERSION_MAJOR "0") +set(CPACK_PACKAGE_VERSION_MINOR "1") +set(CPACK_PACKAGE_VERSION_PATCH "1") +set(CPACK_READELF_EXECUTABLE "/usr/bin/readelf") +set(CPACK_RESOURCE_FILE_LICENSE "/usr/local/share/cmake-3.31/Templates/CPack.GenericLicense.txt") +set(CPACK_RESOURCE_FILE_README "/usr/local/share/cmake-3.31/Templates/CPack.GenericDescription.txt") +set(CPACK_RESOURCE_FILE_WELCOME "/usr/local/share/cmake-3.31/Templates/CPack.GenericWelcome.txt") +set(CPACK_RPM_PACKAGE_SOURCES "ON") +set(CPACK_SET_DESTDIR "OFF") +set(CPACK_SOURCE_GENERATOR "TGZ") +set(CPACK_SOURCE_IGNORE_FILES "CMakeCache;CMakeFiles;CPackConfig;CPackSourceConfig;_CPack_Packages;cmake_install;cmake.h$;commit.h$;install_manifest;Makefile$;package-config;src/timew$;src/libtimew.a;src/commands/libcommands.a;src/lex$;src/libshared.a;src/liblibshared.a;src/libshared/test;/\\.pre-commit-config.yaml;/\\.gitmodules;/\\.github/;/\\.gitignore;/\\.git/;swp$") +set(CPACK_SOURCE_INSTALLED_DIRECTORIES "/home/runner/work/timewarrior/timewarrior;/") +set(CPACK_SOURCE_OUTPUT_CONFIG_FILE "/home/runner/work/timewarrior/timewarrior/build/CPackSourceConfig.cmake") +set(CPACK_SOURCE_PACKAGE_FILE_NAME "timew-1.9.1-dev") +set(CPACK_SOURCE_TOPLEVEL_TAG "Linux-Source") +set(CPACK_STRIP_FILES "") +set(CPACK_SYSTEM_NAME "Linux") +set(CPACK_THREADS "1") +set(CPACK_TOPLEVEL_TAG "Linux-Source") +set(CPACK_WIX_SIZEOF_VOID_P "8") + +if(NOT CPACK_PROPERTIES_FILE) + set(CPACK_PROPERTIES_FILE "/home/runner/work/timewarrior/timewarrior/build/CPackProperties.cmake") +endif() + +if(EXISTS ${CPACK_PROPERTIES_FILE}) + include(${CPACK_PROPERTIES_FILE}) +endif() diff --git a/build/compile_commands.json b/build/compile_commands.json new file mode 100644 index 00000000..dda7a8ac --- /dev/null +++ b/build/compile_commands.json @@ -0,0 +1,578 @@ +[ +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/Args.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Args.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Args.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Args.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/Color.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Color.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Color.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Color.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/Composite.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Composite.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Composite.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Composite.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/Configuration.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Configuration.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Configuration.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Configuration.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/Datetime.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Datetime.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Datetime.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Datetime.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/Duration.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Duration.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Duration.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Duration.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/FS.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/FS.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/FS.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/FS.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/JSON.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/JSON.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/JSON.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/JSON.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/Lexer.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Lexer.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Lexer.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Lexer.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/Log.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Log.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Log.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Log.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/Msg.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Msg.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Msg.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Msg.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/Packrat.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Packrat.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Packrat.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Packrat.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/Palette.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Palette.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Palette.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Palette.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/PEG.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/PEG.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/PEG.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/PEG.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/Pig.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Pig.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Pig.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Pig.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/RX.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/RX.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/RX.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/RX.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/SAX.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/SAX.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/SAX.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/SAX.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/Table.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Table.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Table.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Table.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/Timer.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Timer.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Timer.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Timer.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/Tree.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/Tree.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/Tree.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/Tree.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/format.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/format.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/format.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/format.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/ip.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/ip.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/ip.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/ip.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/shared.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/shared.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/shared.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/shared.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/unicode.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/unicode.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/unicode.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/unicode.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.dir/utf8.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/utf8.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/utf8.cpp", + "output": "src/libshared/src/CMakeFiles/shared.dir/utf8.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/src", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/lex_executable.dir/lex.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/src/lex.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/src/lex.cpp", + "output": "src/libshared/src/CMakeFiles/lex_executable.dir/lex.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/args.t.dir/args.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/args.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/args.t.cpp", + "output": "src/libshared/test/CMakeFiles/args.t.dir/args.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/args.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/args.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/autocomplete.t.dir/autocomplete.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/autocomplete.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/autocomplete.t.cpp", + "output": "src/libshared/test/CMakeFiles/autocomplete.t.dir/autocomplete.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/autocomplete.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/autocomplete.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/charliteral.t.dir/charliteral.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/charliteral.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/charliteral.t.cpp", + "output": "src/libshared/test/CMakeFiles/charliteral.t.dir/charliteral.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/charliteral.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/charliteral.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/composite.t.dir/composite.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/composite.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/composite.t.cpp", + "output": "src/libshared/test/CMakeFiles/composite.t.dir/composite.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/composite.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/composite.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/color.t.dir/color.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/color.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/color.t.cpp", + "output": "src/libshared/test/CMakeFiles/color.t.dir/color.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/color.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/color.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/configuration.t.dir/configuration.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/configuration.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/configuration.t.cpp", + "output": "src/libshared/test/CMakeFiles/configuration.t.dir/configuration.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/configuration.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/configuration.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/dates.t.dir/dates.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/dates.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/dates.t.cpp", + "output": "src/libshared/test/CMakeFiles/dates.t.dir/dates.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/dates.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/dates.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/datetime.t.dir/datetime.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/datetime.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/datetime.t.cpp", + "output": "src/libshared/test/CMakeFiles/datetime.t.dir/datetime.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/datetime.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/datetime.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/duration.t.dir/duration.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/duration.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/duration.t.cpp", + "output": "src/libshared/test/CMakeFiles/duration.t.dir/duration.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/duration.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/duration.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/external.t.dir/external.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/external.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/external.t.cpp", + "output": "src/libshared/test/CMakeFiles/external.t.dir/external.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/external.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/external.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/format.t.dir/format.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/format.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/format.t.cpp", + "output": "src/libshared/test/CMakeFiles/format.t.dir/format.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/format.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/format.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/fs.t.dir/fs.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/fs.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/fs.t.cpp", + "output": "src/libshared/test/CMakeFiles/fs.t.dir/fs.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/fs.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/fs.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/intrinsic.t.dir/intrinsic.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/intrinsic.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/intrinsic.t.cpp", + "output": "src/libshared/test/CMakeFiles/intrinsic.t.dir/intrinsic.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/intrinsic.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/intrinsic.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/json.t.dir/json.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/json.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/json.t.cpp", + "output": "src/libshared/test/CMakeFiles/json.t.dir/json.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/json.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/json.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/json_test.dir/json_test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/json_test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/json_test.cpp", + "output": "src/libshared/test/CMakeFiles/json_test.dir/json_test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/json_test.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/json_test.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/lexer.t.dir/lexer.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/lexer.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/lexer.t.cpp", + "output": "src/libshared/test/CMakeFiles/lexer.t.dir/lexer.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/lexer.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/lexer.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/list.t.dir/list.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/list.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/list.t.cpp", + "output": "src/libshared/test/CMakeFiles/list.t.dir/list.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/list.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/list.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/msg.t.dir/msg.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/msg.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/msg.t.cpp", + "output": "src/libshared/test/CMakeFiles/msg.t.dir/msg.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/msg.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/msg.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/negative.t.dir/negative.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/negative.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/negative.t.cpp", + "output": "src/libshared/test/CMakeFiles/negative.t.dir/negative.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/negative.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/negative.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/palette.t.dir/palette.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/palette.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/palette.t.cpp", + "output": "src/libshared/test/CMakeFiles/palette.t.dir/palette.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/palette.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/palette.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/peg.t.dir/peg.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/peg.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/peg.t.cpp", + "output": "src/libshared/test/CMakeFiles/peg.t.dir/peg.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/peg.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/peg.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/pig.t.dir/pig.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/pig.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/pig.t.cpp", + "output": "src/libshared/test/CMakeFiles/pig.t.dir/pig.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/pig.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/pig.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/plus.t.dir/plus.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/plus.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/plus.t.cpp", + "output": "src/libshared/test/CMakeFiles/plus.t.dir/plus.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/plus.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/plus.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/positive.t.dir/positive.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/positive.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/positive.t.cpp", + "output": "src/libshared/test/CMakeFiles/positive.t.dir/positive.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/positive.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/positive.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/question.t.dir/question.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/question.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/question.t.cpp", + "output": "src/libshared/test/CMakeFiles/question.t.dir/question.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/question.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/question.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/rx.t.dir/rx.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/rx.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/rx.t.cpp", + "output": "src/libshared/test/CMakeFiles/rx.t.dir/rx.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/rx.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/rx.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/sax_test.dir/sax_test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/sax_test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/sax_test.cpp", + "output": "src/libshared/test/CMakeFiles/sax_test.dir/sax_test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/sax_test.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/sax_test.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.t.dir/shared.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/shared.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/shared.t.cpp", + "output": "src/libshared/test/CMakeFiles/shared.t.dir/shared.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/shared.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/shared.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/star.t.dir/star.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/star.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/star.t.cpp", + "output": "src/libshared/test/CMakeFiles/star.t.dir/star.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/star.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/star.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/stringliteral.t.dir/stringliteral.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/stringliteral.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/stringliteral.t.cpp", + "output": "src/libshared/test/CMakeFiles/stringliteral.t.dir/stringliteral.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/stringliteral.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/stringliteral.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/table.t.dir/table.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/table.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/table.t.cpp", + "output": "src/libshared/test/CMakeFiles/table.t.dir/table.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/table.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/table.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/timer.t.dir/timer.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/timer.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/timer.t.cpp", + "output": "src/libshared/test/CMakeFiles/timer.t.dir/timer.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/timer.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/timer.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/tree.t.dir/tree.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/tree.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/tree.t.cpp", + "output": "src/libshared/test/CMakeFiles/tree.t.dir/tree.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/tree.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/tree.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/unicode.t.dir/unicode.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/unicode.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/unicode.t.cpp", + "output": "src/libshared/test/CMakeFiles/unicode.t.dir/unicode.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/unicode.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/unicode.t.dir/test.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/utf8.t.dir/utf8.t.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/utf8.t.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/utf8.t.cpp", + "output": "src/libshared/test/CMakeFiles/utf8.t.dir/utf8.t.cpp.o" +}, +{ + "directory": "/home/runner/work/timewarrior/timewarrior/build/src/libshared/test", + "command": "/usr/bin/c++ -I/home/runner/work/timewarrior/timewarrior -I/home/runner/work/timewarrior/timewarrior/src -I/home/runner/work/timewarrior/timewarrior/src/commands -I/home/runner/work/timewarrior/timewarrior/src/libshared/src -I/home/runner/work/timewarrior/timewarrior/test -Wall -Wextra -Wsign-compare -Wreturn-type -Wall -Wextra -Wsign-compare -Wreturn-type -g -std=gnu++17 -o CMakeFiles/utf8.t.dir/test.cpp.o -c /home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "file": "/home/runner/work/timewarrior/timewarrior/src/libshared/test/test.cpp", + "output": "src/libshared/test/CMakeFiles/utf8.t.dir/test.cpp.o" +} +] \ No newline at end of file diff --git a/build/src/commands/libcommands.a b/build/src/commands/libcommands.a new file mode 100644 index 00000000..33b64398 Binary files /dev/null and b/build/src/commands/libcommands.a differ diff --git a/build/src/libshared/src/lex b/build/src/libshared/src/lex new file mode 100755 index 00000000..ccaf0c55 Binary files /dev/null and b/build/src/libshared/src/lex differ diff --git a/build/src/libshared/src/libshared.a b/build/src/libshared/src/libshared.a new file mode 100644 index 00000000..beb10002 Binary files /dev/null and b/build/src/libshared/src/libshared.a differ diff --git a/build/src/libshared/test/problems b/build/src/libshared/test/problems new file mode 100755 index 00000000..765ac031 --- /dev/null +++ b/build/src/libshared/test/problems @@ -0,0 +1,146 @@ +#!/usr/bin/env python3 + +import sys +import re +import argparse +from collections import defaultdict + + +def color(text, c): + """ + Add color on the keyword that identifies the state of the test + """ + if sys.stdout.isatty(): + clear = "\033[0m" + + colors = { + "red": "\033[1m\033[91m", + "yellow": "\033[1m\033[93m", + "green": "\033[1m\033[92m", + } + return colors[c] + text + clear + else: + return text + + +def parse_args(): + parser = argparse.ArgumentParser(description="Report on test results") + parser.add_argument('--summary', action="store_true", + help="Display only the totals in each category") + parser.add_argument('tapfile', default="all.log", nargs="?", + help="File containing TAP output") + return parser.parse_args() + + +def print_category(tests): + if not cmd_args.summary: + for key in sorted(tests): + print("%-32s %4d" % (key, tests[key])) + + +def pad(i): + return " " * i + + +if __name__ == "__main__": + cmd_args = parse_args() + + errors = defaultdict(int) + skipped = defaultdict(int) + expected = defaultdict(int) + unexpected = defaultdict(int) + passed = defaultdict(int) + + file = re.compile(r"^# (?:./)?(\S+\.t)(?:\.exe)?$") + timestamp = re.compile(r"^# (\d+(?:\.\d+)?) ==>.*$") + + expected_fail = re.compile(r"^not ok.*?#\s*TODO", re.I) + unexpected_pass = re.compile(r"^ok .*?#\s*TODO", re.I) + skip = re.compile(r"^ok .*?#\s*skip", re.I) + ok = re.compile(r"^ok ", re.I) + not_ok = re.compile(r"^not ok", re.I) + comment = re.compile(r"^#") + plan = re.compile(r"^1..\d+\s*(?:#.*)?$") + + start = None + stop = None + + with open(cmd_args.tapfile) as fh: + for line in fh: + if start is None: + # First line contains the starting timestamp + start = float(timestamp.match(line).group(1)) + continue + + match = file.match(line) + if match: + filename = match.group(1) + + elif expected_fail.match(line): + expected[filename] += 1 + + elif unexpected_pass.match(line): + unexpected[filename] += 1 + + elif skip.match(line): + skipped[filename] += 1 + + # It's important these come last, since they're sub-patterns of the above + + elif ok.match(line): + passed[filename] += 1 + + elif not_ok.match(line): + errors[filename] += 1 + + elif comment.match(line): + pass + + elif plan.match(line): + pass + + else: + # Uncomment if you want to see malformed things we caught as well... + # print(color("Malformed TAP (" + filename + "): " + line, "red")) + pass + + # Last line contains the ending timestamp + stop = float(timestamp.match(line).group(1)) + + v = "{0:>5d}" + passed_str = "Passed:" + pad(24) + passed_int = v.format(sum(passed.values())) + error_str = "Failed:" + pad(24) + error_int = v.format(sum(errors.values())) + unexpected_str = "Unexpected successes:" + pad(10) + unexpected_int = v.format(sum(unexpected.values())) + skipped_str = "Skipped:" + pad(23) + skipped_int = v.format(sum(skipped.values())) + expected_str = "Expected failures:" + pad(13) + expected_int = v.format(sum(expected.values())) + runtime_str = "Runtime:" + pad(20) + runtime_int = "{0:>8.2f} seconds".format(stop - start) + + if cmd_args.summary: + print(color(passed_str, "green"), passed_int) + print(color(error_str, "red"), error_int) + print(color(unexpected_str, "red"), unexpected_int) + print(color(skipped_str, "yellow"), skipped_int) + print(color(expected_str, "yellow"), expected_int) + print(runtime_str, runtime_int) + + else: + print(color(error_str, "red")) + print_category(errors) + print() + print(color(unexpected_str, "red")) + print_category(unexpected) + print() + print(color(skipped_str, "yellow")) + print_category(skipped) + print() + print(color(expected_str, "yellow")) + print_category(expected) + + # If we encountered any failures, return non-zero code + sys.exit(1 if int(error_int) or int(unexpected_int) else 0) diff --git a/build/src/libshared/test/run_all b/build/src/libshared/test/run_all new file mode 100755 index 00000000..e3220f2a --- /dev/null +++ b/build/src/libshared/test/run_all @@ -0,0 +1,224 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import os +import sys +import glob +import argparse +import logging +import time +import codecs +from multiprocessing import cpu_count +from threading import Thread +from subprocess import call, Popen, PIPE +from queue import Queue, Empty + +TIMEOUT = .2 + + +def run_test(testqueue, outqueue, threadname): + start = time.time() + while True: + try: + test = testqueue.get(block=True, timeout=TIMEOUT) + except Empty: + break + + log.info("Running test %s", test) + + try: + p = Popen(os.path.abspath(test), stdout=PIPE, stderr=PIPE, + env=os.environ) + out, err = p.communicate() + except Exception as e: + log.exception(e) + # Premature end + break + + out, err = out.decode('utf-8'), err.decode('utf-8') + + output = ("# {0}\n".format(os.path.basename(test)), out, err) + log.debug("Collected output %s", output) + outqueue.put(output) + + testqueue.task_done() + + log.warning("Finished %s thread after %s seconds", + threadname, round(time.time() - start, 3)) + + +class TestRunner(object): + def __init__(self): + self.threads = [] + self.tap = open(cmd_args.tapfile, 'w', errors='ignore') + self._parallelq = Queue() + self._serialq = Queue() + self._outputq = Queue() + + def _find_tests(self): + for test in glob.glob("*.t") + glob.glob("*.t.exe"): + if os.access(test, os.X_OK): + # Executables only + if self._is_parallelizable(test): + log.debug("Treating as parallel: %s", test) + self._parallelq.put(test) + else: + log.debug("Treating as serial: %s", test) + self._serialq.put(test) + else: + log.debug("Ignored test %s as it is not executable", test) + + log.info("Parallel tests: %s", self._parallelq.qsize()) + log.info("Serial tests: %s", self._serialq.qsize()) + + def _prepare_threads(self): + # Serial thread + self.threads.append( + Thread(target=run_test, args=(self._serialq, self._outputq, "Serial")) + ) + # Parallel threads + self.threads.extend([ + Thread(target=run_test, args=(self._parallelq, self._outputq, "Parallel")) + for i in range(cpu_count()) + ]) + log.info("Spawned %s threads to run tests", len(self.threads)) + + def _start_threads(self): + for thread in self.threads: + # Threads die when main thread dies + log.debug("Starting thread %s", thread) + thread.daemon = True + thread.start() + + def _print_timestamp_to_tap(self): + now = time.time() + timestamp = "# {0} ==> {1}\n".format( + now, + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(now)), + ) + + log.debug("Adding timestamp %s to TAP file", timestamp) + self.tap.write(timestamp) + + def _is_parallelizable(self, test): + if cmd_args.serial: + return False + + # This is a pretty weird way to do it, and not realiable. + # We are dealing with some binary tests though. + with open(test, 'rb') as fh: + header = fh.read(100).split(b"\n") + if len(header) >= 2 and \ + ((b"/usr/bin/env python" in header[0]) or \ + (header[1][-14:] == b"bash_tap_tw.sh")): + return True + else: + return False + + def _get_remaining_tests(self): + return self._parallelq.qsize() + self._serialq.qsize() + + def is_running(self): + for thread in self.threads: + if thread.is_alive(): + return True + + return False + + def start(self): + self._find_tests() + self._prepare_threads() + + self._print_timestamp_to_tap() + + finished = 0 + total = self._get_remaining_tests() + + self._start_threads() + + while self.is_running() or not self._outputq.empty(): + try: + outputs = self._outputq.get(block=True, timeout=TIMEOUT) + except Empty: + continue + + log.debug("Outputting to TAP: %s", outputs) + + for output in outputs: + self.tap.write(output) + + if cmd_args.verbose: + sys.stdout.write(output) + + self._outputq.task_done() + finished += 1 + + log.warning("Finished %s out of %s tests", finished, total) + + self._print_timestamp_to_tap() + + if not self._parallelq.empty() or not self._serialq.empty(): + raise RuntimeError( + "Something went wrong, not all tests were ran. {0} " + "remaining.".format(self._get_remaining_tests())) + + def show_report(self): + self.tap.flush() + sys.stdout.flush() + sys.stderr.flush() + + log.debug("Calling 'problems --summary' for report") + return call([os.path.abspath("problems"), "--summary", cmd_args.tapfile]) + + +def parse_args(): + parser = argparse.ArgumentParser(description="Run Taskwarrior tests") + parser.add_argument('--verbose', '-v', action="store_true", + help="Also send TAP output to stdout") + parser.add_argument('--logging', '-l', action="count", + default=0, + help="Logging level. -lll is the highest level") + parser.add_argument('--serial', action="store_true", + help="Do not run tests in parallel") + parser.add_argument('--tapfile', default="all.log", + help="File to use for TAP output") + return parser.parse_args() + + +def main(): + sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach()) + + runner = TestRunner() + runner.start() + + # Propagate the return code + return runner.show_report() + + +if __name__ == "__main__": + cmd_args = parse_args() + + if cmd_args.logging == 1: + level = logging.WARN + elif cmd_args.logging == 2: + level = logging.INFO + elif cmd_args.logging >= 3: + level = logging.DEBUG + else: + level = logging.ERROR + + logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(message)s", + level=level, + ) + log = logging.getLogger(__name__) + + log.debug("Parsed commandline arguments: %s", cmd_args) + + try: + sys.exit(main()) + except Exception as e: + log.exception(e) + sys.exit(1) + +# vim: ai sts=4 et sw=4 diff --git a/build/src/libtimew.a b/build/src/libtimew.a new file mode 100644 index 00000000..5a4ad3d7 Binary files /dev/null and b/build/src/libtimew.a differ diff --git a/build/src/timew b/build/src/timew new file mode 100755 index 00000000..dbd0538d Binary files /dev/null and b/build/src/timew differ diff --git a/build/test/problems b/build/test/problems new file mode 100755 index 00000000..e36f945c --- /dev/null +++ b/build/test/problems @@ -0,0 +1,208 @@ +#!/usr/bin/env python3 + +import argparse +import re +import sys +from collections import defaultdict + + +def color(text, c): + """ + Add color on the keyword that identifies the state of the test + """ + if sys.stdout.isatty(): + clear = "\033[0m" + + colors = { + "red": "\033[1m\033[91m", + "yellow": "\033[1m\033[93m", + "green": "\033[1m\033[92m", + } + return colors[c] + text + clear + else: + return text + + +def parse_args(): + parser = argparse.ArgumentParser(description="Report on test results") + parser.add_argument('--summary', action="store_true", + help="Display only the totals in each category") + parser.add_argument('--details', action="store_true", + help="Display details in each category") + parser.add_argument('tapfile', default="all.log", nargs="?", + help="File containing TAP output") + return parser.parse_args() + + +def print_category(tests): + if not cmd_args.summary: + for key in sorted(tests): + print("%-32s %4d" % (key, tests[key])) + + +def print_category_with_details(tests, details): + if not cmd_args.summary: + for key in sorted(tests): + print("%s (%d):" % (key, tests[key])) + print(details[key]) + + +def pad(i): + return " " * i + + +if __name__ == "__main__": + cmd_args = parse_args() + + errors = defaultdict(int) + details_errors = defaultdict(str) + skipped = defaultdict(int) + details_skipped = defaultdict(str) + expected = defaultdict(int) + details_expected = defaultdict(str) + unexpected = defaultdict(int) + details_unexpected = defaultdict(str) + passed = defaultdict(int) + details_passed = defaultdict(str) + + file = re.compile(r"^# (?:./)?(\S+\.t)(?:\.exe)?$") + detail = re.compile("^[^:]+?: (.+)$") + timestamp = re.compile(r"^# (\d+(?:\.\d+)?) ==>.*$") + + expected_fail = re.compile(r"^not ok.*?#\s*TODO", re.I) + unexpected_pass = re.compile(r"^ok .*?#\s*TODO", re.I) + skip = re.compile(r"^ok .*?#\s*skip", re.I) + ok = re.compile(r"^ok ", re.I) + not_ok = re.compile(r"^not ok", re.I) + comment = re.compile(r"^#") + plan = re.compile(r"^1..(\d+)\s*(?:#.*)?$") + + start = None + stop = None + filename = None + expected_test_count = 0 + need_plan = False + + with open(cmd_args.tapfile) as fh: + for line in fh: + if start is None: + # First line contains the starting timestamp + start = float(timestamp.match(line).group(1)) + continue + + match = file.match(line) + if match: + if filename: + if expected_test_count > 0: + print(color("'{}' failed to run all tests.".format(filename), "red"), file=sys.stderr) + errors[filename] += expected_test_count + elif need_plan: + print(color("'{}' failed to run any tests.".format(filename), "red"), file=sys.stderr) + errors[filename] += 1 + filename = match.group(1) + need_plan = True + continue + + match = plan.match(line) + if match: + expected_test_count = int(match.group(1)) + need_plan = False + continue + + match = expected_fail.match(line) + if match: + expected[filename] += 1 + details_expected[filename] += line + expected_test_count -= 1 + continue + + match = unexpected_pass.match(line) + if match: + unexpected[filename] += 1 + details_unexpected[filename] += line + expected_test_count -= 1 + continue + + match = skip.match(line) + if match: + skipped[filename] += 1 + details_skipped[filename] += line + expected_test_count -= 1 + continue + + # It's important these come last, since they're sub-patterns of the above + + match = ok.match(line) + if match: + passed[filename] += 1 + details_passed[filename] += line + expected_test_count -= 1 + continue + + match = not_ok.match(line) + if match: + errors[filename] += 1 + details_errors[filename] += " - " + detail.match(line).group(1) + "\n" + expected_test_count -= 1 + continue + + match = comment.match(line) + if match: + continue + + # Uncomment if you want to see malformed things we caught as well... + # print(color("Malformed TAP (" + filename + "): " + line, "red")) + + # Last line contains the ending timestamp + stop = float(timestamp.match(line).group(1)) + + v = "{0:>5d}" + passed_str = "Passed:" + pad(24) + passed_int = v.format(sum(passed.values())) + error_str = "Failed:" + pad(24) + error_int = v.format(sum(errors.values())) + unexpected_str = "Unexpected successes:" + pad(10) + unexpected_int = v.format(sum(unexpected.values())) + skipped_str = "Skipped:" + pad(23) + skipped_int = v.format(sum(skipped.values())) + expected_str = "Expected failures:" + pad(13) + expected_int = v.format(sum(expected.values())) + runtime_str = "Runtime:" + pad(20) + runtime_int = "{0:>8.2f} seconds".format(stop - start) + + if cmd_args.summary: + print(color(passed_str, "green"), passed_int) + print(color(error_str, "red"), error_int) + print(color(unexpected_str, "red"), unexpected_int) + print(color(skipped_str, "yellow"), skipped_int) + print(color(expected_str, "yellow"), expected_int) + print(runtime_str, runtime_int) + + elif cmd_args.details: + print(color(error_str, "red")) + print_category_with_details(errors, details_errors) + print() + print(color(unexpected_str, "red")) + print_category_with_details(unexpected, details_unexpected) + print() + print(color(skipped_str, "yellow")) + print_category_with_details(skipped, details_skipped) + print() + print(color(expected_str, "yellow")) + print_category_with_details(expected, details_expected) + + else: + print(color(error_str, "red")) + print_category(errors) + print() + print(color(unexpected_str, "red")) + print_category(unexpected) + print() + print(color(skipped_str, "yellow")) + print_category(skipped) + print() + print(color(expected_str, "yellow")) + print_category(expected) + + # If we encountered any failures, return non-zero code + sys.exit(1 if int(error_int) or int(unexpected_int) else 0) diff --git a/build/test/run_all b/build/test/run_all new file mode 100755 index 00000000..e1ad423a --- /dev/null +++ b/build/test/run_all @@ -0,0 +1,229 @@ +#!/usr/bin/env python3 + +import argparse +import codecs +import glob +import logging +import os +import sys +import time +from builtins import object +from builtins import range +from multiprocessing import cpu_count +from queue import Queue, Empty +from subprocess import call, Popen, PIPE +from threading import Thread + +TIMEOUT = .2 + + +def run_test(testqueue, outqueue, threadname): + start = time.time() + while True: + try: + test = testqueue.get(block=True, timeout=TIMEOUT) + except Empty: + break + + log.info("Running test %s", test) + + try: + p = Popen(os.path.abspath(test), stdout=PIPE, stderr=PIPE, env=os.environ) + out, err = p.communicate() + except Exception as e: + log.exception(e) + # Premature end + break + + out, err = out.decode('utf-8'), err.decode('utf-8') + + output = ("# {0}\n".format(os.path.basename(test)), out, err) + log.debug("Collected output %s", output) + outqueue.put(output) + + testqueue.task_done() + + log.warning("Finished %s thread after %s seconds", + threadname, round(time.time() - start, 3)) + + +class TestRunner(object): + def __init__(self): + self.threads = [] + self.tap = open(cmd_args.tapfile, 'w', errors='ignore') + + self._parallelq = Queue() + self._serialq = Queue() + self._outputq = Queue() + + def _find_tests(self): + for test in glob.glob("*.t") + glob.glob("*.t.exe"): + if os.access(test, os.X_OK): + # Executables only + if self._is_parallelizable(test): + log.debug("Treating as parallel: %s", test) + self._parallelq.put(test) + else: + log.debug("Treating as serial: %s", test) + self._serialq.put(test) + else: + log.debug("Ignored test %s as it is not executable", test) + + log.info("Parallel tests: %s", self._parallelq.qsize()) + log.info("Serial tests: %s", self._serialq.qsize()) + + def _prepare_threads(self): + # Serial thread + self.threads.append( + Thread(target=run_test, args=(self._serialq, self._outputq, "Serial")) + ) + # Parallel threads + self.threads.extend([ + Thread(target=run_test, args=(self._parallelq, self._outputq, "Parallel")) + for i in range(cpu_count()) + ]) + log.info("Spawned %s threads to run tests", len(self.threads)) + + def _start_threads(self): + for thread in self.threads: + # Threads die when main thread dies + log.debug("Starting thread %s", thread) + thread.daemon = True + thread.start() + + def _print_timestamp_to_tap(self): + now = time.time() + timestamp = "# {0} ==> {1}\n".format( + now, + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(now)), + ) + + log.debug("Adding timestamp %s to TAP file", timestamp) + self.tap.write(timestamp) + + def _is_parallelizable(self, test): + if cmd_args.serial: + return False + + # This is a pretty weird way to do it, and not reliable. + # We are dealing with some binary tests though. + with open(test, 'rb') as fh: + header = fh.read(100).split(b"\n") + if len(header) >= 2 and \ + ((b"/usr/bin/env python" in header[0]) or + (header[1][-14:] == b"bash_tap_tw.sh")): + return True + else: + return False + + def _get_remaining_tests(self): + return self._parallelq.qsize() + self._serialq.qsize() + + def is_running(self): + for thread in self.threads: + if thread.is_alive(): + return True + + return False + + def start(self): + self._find_tests() + self._prepare_threads() + + self._print_timestamp_to_tap() + + finished = 0 + total = self._get_remaining_tests() + + self._start_threads() + + while self.is_running() or not self._outputq.empty(): + try: + outputs = self._outputq.get(block=True, timeout=TIMEOUT) + except Empty: + continue + + log.debug("Outputting to TAP: %s", outputs) + + for output in outputs: + self.tap.write(output) + + if cmd_args.verbose: + sys.stdout.write(output) + + self._outputq.task_done() + finished += 1 + + log.warning("Finished %s out of %s tests", finished, total) + + self._print_timestamp_to_tap() + + if not self._parallelq.empty() or not self._serialq.empty(): + raise RuntimeError( + "Something went wrong, not all tests were ran. {0} " + "remaining.".format(self._get_remaining_tests())) + + def show_report(self): + self.tap.flush() + sys.stdout.flush() + sys.stderr.flush() + + log.debug("Calling 'problems --summary' for report") + return call([os.path.abspath("problems"), "--summary", cmd_args.tapfile]) + + +def parse_args(): + parser = argparse.ArgumentParser(description="Run Timewarrior tests") + parser.add_argument('--verbose', + '-v', + action="store_true", + help="Also send TAP output to stdout") + parser.add_argument('--logging', + '-l', + action="count", + default=0, + help="Logging level. -lll is the highest level") + parser.add_argument('--serial', + action="store_true", + help="Do not run tests in parallel") + parser.add_argument('--tapfile', + default="all.log", + help="File to use for TAP output") + return parser.parse_args() + + +def main(): + sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach()) + + runner = TestRunner() + runner.start() + + # Propagate the return code + return runner.show_report() + + +if __name__ == "__main__": + cmd_args = parse_args() + + if cmd_args.logging == 1: + level = logging.WARN + elif cmd_args.logging == 2: + level = logging.INFO + elif cmd_args.logging >= 3: + level = logging.DEBUG + else: + level = logging.ERROR + + logging.basicConfig( + format="%(asctime)s - %(levelname)s - %(message)s", + level=level, + ) + log = logging.getLogger(__name__) + + log.debug("Parsed commandline arguments: %s", cmd_args) + + try: + sys.exit(main()) + except Exception as e: + log.exception(e) + sys.exit(1) diff --git a/src/Journal.cpp b/src/Journal.cpp index 9cde0fe4..7443b1a7 100644 --- a/src/Journal.cpp +++ b/src/Journal.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include //////////////////////////////////////////////////////////////////////////////// @@ -39,27 +40,53 @@ bool Journal::enabled () const //////////////////////////////////////////////////////////////////////////////// -std::vector loadJournal (AtomicFile& undo) +static std::vector loadJournal (AtomicFile& undo) { std::vector read_lines; undo.read (read_lines); undo.close (); + // Find first non-empty line to detect format + std::string firstLine; + for (auto& line : read_lines) + { + if (! line.empty ()) + { + firstLine = line; + break; + } + } + + if (firstLine.empty ()) + return {}; + TransactionsFactory transactionsFactory; - for (auto& line: read_lines) + if (firstLine[0] == '{') + { + // JSON format: each non-empty line is a complete transaction + for (auto& line : read_lines) + { + if (! line.empty ()) + transactionsFactory.parseJsonLine (line); + } + } + else { - transactionsFactory.parseLine (line); + // Legacy text format: multiple lines per transaction + for (auto& line : read_lines) + transactionsFactory.parseLine (line); } return transactionsFactory.get (); } //////////////////////////////////////////////////////////////////////////////// -void Journal::initialize (const std::string& location, int size) +void Journal::initialize (const std::string& location, int size, const std::string& format) { _location = location; _size = size; + _useJsonFormat = (format == "json"); if (! enabled ()) { @@ -68,6 +95,53 @@ void Journal::initialize (const std::string& location, int size) { undo.remove (); } + return; + } + + // Detect format of existing file and warn or migrate as needed + AtomicFile undo (_location); + if (undo.exists () && undo.size () > 0) + { + std::vector lines; + undo.read (lines); + undo.close (); + + // Find first non-empty line to detect format + std::string firstLine; + for (auto& line : lines) + { + if (! line.empty ()) + { + firstLine = line; + break; + } + } + + bool isLegacyFormat = (! firstLine.empty () && firstLine.compare (0, 4, "txn:") == 0); + + if (isLegacyFormat) + { + if (_useJsonFormat) + { + // Migrate legacy format to JSON + std::cout << "Migrating undo.data to JSON format." << std::endl; + + TransactionsFactory factory; + for (auto& line : lines) + factory.parseLine (line); + + std::vector transactions = factory.get (); + + undo.truncate (); + for (auto& txn : transactions) + undo.append (txn.toJson ()); + } + else + { + // Warn about the new format being available + warn ("undo.data uses a legacy format. Set 'journal.format=json' in your configuration to switch to the new JSON format and trigger automatic migration."); + } + } } } @@ -117,7 +191,7 @@ void Journal::endTransaction () undo.truncate (); for (; it != end; ++it) { - undo.append (it->toString ()); + undo.append (_useJsonFormat ? it->toJson () : it->toString ()); } } else if (_size == 1) @@ -125,7 +199,7 @@ void Journal::endTransaction () undo.truncate (); } - undo.append (_currentTransaction->toString ()); + undo.append (_useJsonFormat ? _currentTransaction->toJson () : _currentTransaction->toString ()); _currentTransaction.reset (); } @@ -190,7 +264,7 @@ Transaction Journal::popLastTransaction () for (auto& transaction : transactions) { - undo.append (transaction.toString ()); + undo.append (_useJsonFormat ? transaction.toJson () : transaction.toString ()); } undo.close (); diff --git a/src/Journal.h b/src/Journal.h index 237b96a8..5a401497 100644 --- a/src/Journal.h +++ b/src/Journal.h @@ -40,7 +40,7 @@ class Journal Journal(const Journal&) = delete; Journal& operator= (const Journal&) = delete; - void initialize(const std::string&, int); + void initialize(const std::string&, int, const std::string& format = ""); void startTransaction (); void endTransaction (); @@ -56,6 +56,7 @@ class Journal std::string _location {}; std::shared_ptr _currentTransaction = nullptr; int _size {0}; + bool _useJsonFormat {false}; }; #endif diff --git a/src/Rules.cpp b/src/Rules.cpp index 6be6a3c1..9a221ec8 100644 --- a/src/Rules.cpp +++ b/src/Rules.cpp @@ -98,6 +98,7 @@ Rules::Rules () // Options for the journal / undo file. {"journal.size", "-1"}, + {"journal.format", ""}, }; } diff --git a/src/Transaction.cpp b/src/Transaction.cpp index 1d7f8cf5..3c6281a4 100644 --- a/src/Transaction.cpp +++ b/src/Transaction.cpp @@ -50,3 +50,20 @@ std::string Transaction::toString () const return output; } + +std::string Transaction::toJson () const +{ + std::string output = "{\"actions\":["; + bool first = true; + + for (auto& action : _actions) + { + if (! first) + output += ","; + output += action.toJson (); + first = false; + } + + output += "]}\n"; + return output; +} diff --git a/src/Transaction.h b/src/Transaction.h index 11363307..b8efaf91 100644 --- a/src/Transaction.h +++ b/src/Transaction.h @@ -36,6 +36,7 @@ class Transaction void addUndoAction(const std::string&, const std::string&, const std::string&); std::string toString() const; + std::string toJson() const; std::vector getActions () const; diff --git a/src/TransactionsFactory.cpp b/src/TransactionsFactory.cpp index 49af2921..5f30466d 100644 --- a/src/TransactionsFactory.cpp +++ b/src/TransactionsFactory.cpp @@ -24,7 +24,9 @@ // //////////////////////////////////////////////////////////////////////////////// +#include #include +#include #include void TransactionsFactory::parseLine (const std::string& line) @@ -56,3 +58,50 @@ std::vector TransactionsFactory::get () { return _transactions; } + +void TransactionsFactory::parseJsonLine (const std::string& line) +{ + std::unique_ptr parsed (json::parse (line)); + auto* root = dynamic_cast (parsed.get ()); + + if (! root) + throw std::string ("Invalid JSON transaction line: ") + line; + + auto actionsIt = root->_data.find ("actions"); + if (actionsIt == root->_data.end ()) + throw std::string ("Missing 'actions' in JSON transaction: ") + line; + + auto* actions = dynamic_cast (actionsIt->second); + if (! actions) + throw std::string ("'actions' is not an array in JSON transaction: ") + line; + + _transactions.emplace_back (); + + for (auto* item : actions->_data) + { + auto* action = dynamic_cast (item); + if (! action) + throw std::string ("Action is not an object in JSON transaction"); + + auto typeIt = action->_data.find ("type"); + if (typeIt == action->_data.end ()) + throw std::string ("Missing 'type' in action"); + + auto* typeVal = dynamic_cast (typeIt->second); + if (! typeVal) + throw std::string ("'type' is not a string in action"); + std::string type = typeVal->_data; + + std::string before; + auto beforeIt = action->_data.find ("before"); + if (beforeIt != action->_data.end () && beforeIt->second->type () == json::j_string) + before = json::decode (dynamic_cast (beforeIt->second)->_data); + + std::string after; + auto afterIt = action->_data.find ("after"); + if (afterIt != action->_data.end () && afterIt->second->type () == json::j_string) + after = json::decode (dynamic_cast (afterIt->second)->_data); + + _transactions.back ().addUndoAction (type, before, after); + } +} diff --git a/src/TransactionsFactory.h b/src/TransactionsFactory.h index a4fd6cc4..2e587bfa 100644 --- a/src/TransactionsFactory.h +++ b/src/TransactionsFactory.h @@ -34,6 +34,7 @@ class TransactionsFactory { public: void parseLine(const std::string& line); + void parseJsonLine(const std::string& line); std::vector< Transaction > get(); diff --git a/src/UndoAction.cpp b/src/UndoAction.cpp index d4d4d875..63d633b6 100644 --- a/src/UndoAction.cpp +++ b/src/UndoAction.cpp @@ -24,6 +24,7 @@ // //////////////////////////////////////////////////////////////////////////////// +#include #include #include @@ -38,6 +39,24 @@ std::string UndoAction::toString () const " after: " + _after + "\n"; } +std::string UndoAction::toJson () const +{ + std::string out = "{\"type\":\"" + json::encode (_type) + "\""; + + if (_before.empty ()) + out += ",\"before\":null"; + else + out += ",\"before\":\"" + json::encode (_before) + "\""; + + if (_after.empty ()) + out += ",\"after\":null"; + else + out += ",\"after\":\"" + json::encode (_after) + "\""; + + out += "}"; + return out; +} + std::string UndoAction::getType () const { return _type; diff --git a/src/UndoAction.h b/src/UndoAction.h index 4144bae8..b82e2a16 100644 --- a/src/UndoAction.h +++ b/src/UndoAction.h @@ -39,6 +39,7 @@ class UndoAction std::string getAfter() const; std::string toString () const; + std::string toJson () const; private: const std::string _type; diff --git a/src/init.cpp b/src/init.cpp index ae2d0943..6c8a9343 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -187,7 +187,7 @@ void initializeDataJournalAndRules ( } std::string dbDataDir = paths::dbDataDir (); - journal.initialize (dbDataDir + "/undo.data", rules.getInteger ("journal.size")); + journal.initialize (dbDataDir + "/undo.data", rules.getInteger ("journal.size"), rules.get ("journal.format")); // Initialize the database (no data read), but files are enumerated. database.initialize (dbDataDir, journal); } diff --git a/test/undo.t b/test/undo.t index fa85ca40..7e2eacb5 100755 --- a/test/undo.t +++ b/test/undo.t @@ -706,6 +706,77 @@ class TestUndo(TestCase): self.t("undo") self.assertEqual(before_a, self.t.export()) + def test_undo_json_format(self): + """Test that undo works correctly when journal.format=json is set""" + self.t("config journal.format json :yes") + + now_utc = datetime.now(timezone.utc) + one_hour_before_utc = now_utc - timedelta(hours=1) + two_hours_before_utc = now_utc - timedelta(hours=2) + + self.t("track {:%Y%m%dT%H%M%SZ} - {:%Y%m%dT%H%M%SZ} foo".format(two_hours_before_utc, one_hour_before_utc)) + + undo_data_path = os.path.join(self.t.env["TIMEWARRIORDB"], "data", "undo.data") + with open(undo_data_path) as f: + first_line = f.readline().strip() + self.assertTrue(first_line.startswith("{"), msg="Expected JSON format in undo.data, got: {}".format(first_line)) + + j = self.t.export() + self.assertEqual(len(j), 1, msg="Expected 1 interval before undo, got {}".format(len(j))) + + self.t("undo") + + j = self.t.export() + self.assertEqual(len(j), 0, msg="Expected 0 intervals after undo, got {}".format(len(j))) + + def test_undo_json_format_warning_for_legacy(self): + """Test that a warning is shown when undo.data uses the legacy format""" + now_utc = datetime.now(timezone.utc) + one_hour_before_utc = now_utc - timedelta(hours=1) + two_hours_before_utc = now_utc - timedelta(hours=2) + + # Track in default (legacy) format + self.t("track {:%Y%m%dT%H%M%SZ} - {:%Y%m%dT%H%M%SZ} foo".format(two_hours_before_utc, one_hour_before_utc)) + + # Next invocation should show a warning about the legacy format + code, out, err = self.t("track {:%Y%m%dT%H%M%SZ} - {:%Y%m%dT%H%M%SZ} bar".format(one_hour_before_utc, now_utc)) + self.assertIn("legacy format", err, msg="Expected warning about legacy format in stderr") + self.assertIn("journal.format=json", err, msg="Expected hint about journal.format=json in stderr") + + def test_undo_json_format_migration(self): + """Test that undo.data is migrated from legacy to JSON when journal.format=json is set""" + now_utc = datetime.now(timezone.utc) + one_hour_before_utc = now_utc - timedelta(hours=1) + two_hours_before_utc = now_utc - timedelta(hours=2) + + # Track in default (legacy) format + self.t("track {:%Y%m%dT%H%M%SZ} - {:%Y%m%dT%H%M%SZ} foo".format(two_hours_before_utc, one_hour_before_utc)) + + undo_data_path = os.path.join(self.t.env["TIMEWARRIORDB"], "data", "undo.data") + with open(undo_data_path) as f: + first_line = f.readline().strip() + self.assertTrue(first_line.startswith("txn:"), msg="Expected legacy format before migration, got: {}".format(first_line)) + + # Enable JSON format - next invocation should migrate + self.t("config journal.format json :yes") + + # Run any command - migration should happen + code, out, err = self.t("track {:%Y%m%dT%H%M%SZ} - {:%Y%m%dT%H%M%SZ} bar".format(one_hour_before_utc, now_utc)) + self.assertIn("Migrating undo.data to JSON format", out, msg="Expected migration message in stdout") + + with open(undo_data_path) as f: + first_line = f.readline().strip() + self.assertTrue(first_line.startswith("{"), msg="Expected JSON format after migration, got: {}".format(first_line)) + + # Undo should still work after migration + j = self.t.export() + self.assertEqual(len(j), 2, msg="Expected 2 intervals before undo, got {}".format(len(j))) + + self.t("undo") + + j = self.t.export() + self.assertEqual(len(j), 1, msg="Expected 1 interval after undo, got {}".format(len(j))) + def test_undo_process_commands_when_disabled(self): """Test that disabling the journal clears it."""