// Интеграционный тест Фазы 1: SettingsStore + VaultManager + GitManager. // Используем временную папку для QSettings (INI-формат), чтобы не трогать реальные. #include #include #include #include #include #include "app/VaultManager.h" #include "core/SettingsStore.h" #include "git/GitManager.h" int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); app.setOrganizationName("FloraTest"); app.setApplicationName("flora_test"); QTemporaryDir dir; QSettings::setPath(QSettings::IniFormat, QSettings::UserScope, dir.path()); { SettingsStore settings; GitManager git; VaultManager vault(&settings, &git); const QString vaultPath = dir.path() + "/vault"; const QString err = vault.createVault(vaultPath); if (!err.isEmpty()) { std::fprintf(stderr, "FAIL: createVault: %s\n", qPrintable(err)); return 1; } if (!settings.hasVault(vaultPath) || settings.currentVault() != vaultPath) { std::fprintf(stderr, "FAIL: хранилище не сохранено\n"); return 1; } if (!git.hasCommits(vaultPath)) { // коммитов может ещё не быть (нет файлов) — инициализация должна пройти } if (vault.vaults().isEmpty()) { std::fprintf(stderr, "FAIL: список хранилищ пуст\n"); return 1; } const QString bad = vault.createVault(""); if (bad.isEmpty()) { std::fprintf(stderr, "FAIL: пустой путь не отклонён\n"); return 1; } } { // Проверка персистентности в другом экземпляре SettingsStore settings; if (!settings.hasVault(dir.path() + "/vault")) { std::fprintf(stderr, "FAIL: настройки не сохранились\n"); return 1; } } std::printf("VAULT TEST OK\n"); return 0; }