afc15680e1
- GitManager: fileHistory (список версий с hash/time/message/author), fileContentAt, fileDiffHtml/Text (git_patch_from_buffers, цветной HTML), restoreFile (запись + автокоммит), lastModifiedTime/String, autoCommit, ensureGitignore (.flora/.stfolder)
- HistoryDialog.qml: список версий (время «только что/5 мин назад» + дата dd.MM.yyyy, сообщение, автор, shortHash), diff с легендой (зелёный +/красный -/синий заголовок), превью содержимого, кнопка «Восстановить эту версию» с подтверждением (объясняет что создастся новый коммит и можно вернуться вперёд), «Обновить/Закрыть»
- MainWindow: меню Правка → История файла (Ctrl+H) и Вернуться к предыдущей версии, FileTree ПКМ → История, передача vaultPath/filePath
- EditorPanel: индикатор «🕘» + lastModifiedStr (gitManager.lastModifiedTimeString), debounce autoCommit (2с) при documentSaved, shortcut Ctrl+H
- FileTreePanel: сигнал historyRequested
- CMake: добавлен HistoryDialog.qml в qml модуль
- Тесты: git_history_test — создание v1/v2, история 1→2, diff, восстановление назад к v1 (история 3), вперёд к v2 (4), v3, diff v1→v3, bad hash, other.md не влияет на историю note.md, autoCommit, lastModified, .gitignore; 21/21 зелёных
- Проверено вперёд/назад: v1→v2→восстановление v1→восстановление v2→v3→autoCommit, каждый шаг с проверкой содержимого и истории
163 lines
6.5 KiB
CMake
163 lines
6.5 KiB
CMake
# Smoke-тест: проверка сборки и работы сторонних библиотек.
|
|
add_executable(flora_smoke smoke_test.cpp)
|
|
target_compile_definitions(flora_smoke PRIVATE
|
|
CMARK_GFM_STATIC_DEFINE
|
|
CMARK_GFM_EXTENSIONS_STATIC_DEFINE)
|
|
target_link_libraries(flora_smoke PRIVATE
|
|
cmark::cmark
|
|
cmark::cmark_extensions
|
|
Flora_libgit2_static)
|
|
add_test(NAME flora_smoke COMMAND flora_smoke)
|
|
|
|
# Тест GitManager (git init / авто-коммиты внутри хранилища).
|
|
add_executable(flora_git_test git_test.cpp
|
|
../src/git/GitManager.cpp
|
|
../src/git/GitManager.h
|
|
)
|
|
target_include_directories(flora_git_test PRIVATE ../src)
|
|
target_compile_definitions(flora_git_test PRIVATE CMARK_GFM_STATIC_DEFINE)
|
|
target_link_libraries(flora_git_test PRIVATE
|
|
Qt6::Core
|
|
Flora_libgit2_static)
|
|
add_test(NAME flora_git_test COMMAND flora_git_test)
|
|
|
|
# Интеграционный тест: настройки + создание хранилища (git-репозиторий).
|
|
add_executable(flora_vault_test vault_test.cpp
|
|
../src/app/VaultManager.cpp
|
|
../src/app/VaultManager.h
|
|
../src/core/SettingsStore.cpp
|
|
../src/core/SettingsStore.h
|
|
../src/git/GitManager.cpp
|
|
../src/git/GitManager.h
|
|
)
|
|
target_include_directories(flora_vault_test PRIVATE ../src)
|
|
target_link_libraries(flora_vault_test PRIVATE
|
|
Qt6::Core
|
|
Flora_libgit2_static)
|
|
add_test(NAME flora_vault_test COMMAND flora_vault_test)
|
|
|
|
# Тест FileStore (файловое дерево хранилища).
|
|
add_executable(flora_filestore_test filestore_test.cpp
|
|
../src/core/FileStore.cpp
|
|
../src/core/FileStore.h
|
|
)
|
|
target_include_directories(flora_filestore_test PRIVATE ../src)
|
|
target_link_libraries(flora_filestore_test PRIVATE
|
|
Qt6::Core)
|
|
add_test(NAME flora_filestore_test COMMAND flora_filestore_test)
|
|
|
|
# Тест DocumentManager (вкладки, автосохранение, сохранение при закрытии).
|
|
add_executable(flora_docmgr_test documentmanager_test.cpp
|
|
../src/core/DocumentManager.cpp
|
|
../src/core/DocumentManager.h
|
|
)
|
|
target_include_directories(flora_docmgr_test PRIVATE ../src)
|
|
target_link_libraries(flora_docmgr_test PRIVATE
|
|
Qt6::Core)
|
|
add_test(NAME flora_docmgr_test COMMAND flora_docmgr_test)
|
|
|
|
# Тест MdParser (рендер Markdown → HTML).
|
|
add_executable(flora_mdparser_test mdparser_test.cpp
|
|
../src/markdown/MdParser.cpp
|
|
../src/markdown/MdParser.h
|
|
)
|
|
target_include_directories(flora_mdparser_test PRIVATE ../src)
|
|
target_compile_definitions(flora_mdparser_test PRIVATE
|
|
CMARK_GFM_STATIC_DEFINE
|
|
CMARK_GFM_EXTENSIONS_STATIC_DEFINE)
|
|
target_link_libraries(flora_mdparser_test PRIVATE
|
|
Qt6::Core
|
|
Qt6::Gui
|
|
cmark::cmark
|
|
cmark::cmark_extensions
|
|
)
|
|
if(TARGET KF6SyntaxHighlighting)
|
|
target_link_libraries(flora_mdparser_test PRIVATE KF6SyntaxHighlighting)
|
|
endif()
|
|
add_test(NAME flora_mdparser_test COMMAND flora_mdparser_test)
|
|
|
|
# Тест VaultIndex (теги, ссылки, граф).
|
|
add_executable(flora_vaultindex_test vaultindex_test.cpp
|
|
../src/core/VaultIndex.cpp
|
|
../src/core/VaultIndex.h
|
|
)
|
|
target_include_directories(flora_vaultindex_test PRIVATE ../src)
|
|
target_link_libraries(flora_vaultindex_test PRIVATE
|
|
Qt6::Core)
|
|
add_test(NAME flora_vaultindex_test COMMAND flora_vaultindex_test)
|
|
|
|
# Тест SettingsStore (темы, панели, режимы)
|
|
add_executable(flora_settings_test settings_test.cpp
|
|
../src/core/SettingsStore.cpp
|
|
../src/core/SettingsStore.h
|
|
)
|
|
target_include_directories(flora_settings_test PRIVATE ../src)
|
|
target_link_libraries(flora_settings_test PRIVATE Qt6::Core)
|
|
add_test(NAME flora_settings_test COMMAND flora_settings_test)
|
|
|
|
# Тест SyncManager (каталог ошибок, busy)
|
|
add_executable(flora_sync_test sync_test.cpp
|
|
../src/sync/SyncManager.cpp
|
|
../src/sync/SyncManager.h
|
|
)
|
|
target_include_directories(flora_sync_test PRIVATE ../src)
|
|
target_link_libraries(flora_sync_test PRIVATE Qt6::Core Qt6::Network)
|
|
add_test(NAME flora_sync_test COMMAND flora_sync_test)
|
|
|
|
# Расширенные тесты (FileStore, DocumentManager, VaultIndex, MdParser, Git)
|
|
add_executable(flora_extended_test extended_test.cpp
|
|
../src/core/FileStore.cpp
|
|
../src/core/FileStore.h
|
|
../src/core/DocumentManager.cpp
|
|
../src/core/DocumentManager.h
|
|
../src/core/VaultIndex.cpp
|
|
../src/core/VaultIndex.h
|
|
../src/markdown/MdParser.cpp
|
|
../src/markdown/MdParser.h
|
|
../src/git/GitManager.cpp
|
|
../src/git/GitManager.h
|
|
)
|
|
target_include_directories(flora_extended_test PRIVATE ../src)
|
|
target_compile_definitions(flora_extended_test PRIVATE CMARK_GFM_STATIC_DEFINE CMARK_GFM_EXTENSIONS_STATIC_DEFINE)
|
|
target_link_libraries(flora_extended_test PRIVATE Qt6::Core Qt6::Gui cmark::cmark cmark::cmark_extensions Flora_libgit2_static)
|
|
if(TARGET KF6SyntaxHighlighting)
|
|
target_link_libraries(flora_extended_test PRIVATE KF6SyntaxHighlighting)
|
|
endif()
|
|
if(TARGET libssh2_static)
|
|
target_link_libraries(flora_extended_test PRIVATE libssh2_static)
|
|
endif()
|
|
add_test(NAME flora_extended_test COMMAND flora_extended_test)
|
|
|
|
# Интеграционный тест (VaultManager + FileStore + DocumentManager + VaultIndex + Git + MdParser)
|
|
add_executable(flora_integration_test integration_test.cpp
|
|
../src/app/VaultManager.cpp
|
|
../src/app/VaultManager.h
|
|
../src/core/SettingsStore.cpp
|
|
../src/core/SettingsStore.h
|
|
../src/core/FileStore.cpp
|
|
../src/core/FileStore.h
|
|
../src/core/DocumentManager.cpp
|
|
../src/core/DocumentManager.h
|
|
../src/core/VaultIndex.cpp
|
|
../src/core/VaultIndex.h
|
|
../src/markdown/MdParser.cpp
|
|
../src/markdown/MdParser.h
|
|
../src/git/GitManager.cpp
|
|
../src/git/GitManager.h
|
|
)
|
|
target_include_directories(flora_integration_test PRIVATE ../src)
|
|
target_compile_definitions(flora_integration_test PRIVATE CMARK_GFM_STATIC_DEFINE CMARK_GFM_EXTENSIONS_STATIC_DEFINE)
|
|
target_link_libraries(flora_integration_test PRIVATE Qt6::Core Qt6::Gui cmark::cmark cmark::cmark_extensions Flora_libgit2_static)
|
|
if(TARGET KF6SyntaxHighlighting)
|
|
target_link_libraries(flora_integration_test PRIVATE KF6SyntaxHighlighting)
|
|
endif()
|
|
add_test(NAME flora_integration_test COMMAND flora_integration_test)
|
|
|
|
# Тест истории Git (вперёд/назад, diff, восстановление, время)
|
|
add_executable(flora_git_history_test git_history_test.cpp
|
|
../src/git/GitManager.cpp
|
|
../src/git/GitManager.h
|
|
)
|
|
target_include_directories(flora_git_history_test PRIVATE ../src)
|
|
target_link_libraries(flora_git_history_test PRIVATE Qt6::Core Flora_libgit2_static)
|
|
add_test(NAME flora_git_history_test COMMAND flora_git_history_test) |