Фаза 1: мастер первого запуска — SettingsStore, GitManager (auto-init+коммиты), SyncManager (проверка соединений+ErrorCatalog), WelcomeWizard/ProviderSetupGuide; тесты smoke/git/vault (12/12)

This commit is contained in:
Flora (opencode)
2026-08-17 00:43:33 +03:00
parent 980fbcedcb
commit ed633ae036
18 changed files with 1412 additions and 29 deletions
+63
View File
@@ -0,0 +1,63 @@
// Интеграционный тест Фазы 1: SettingsStore + VaultManager + GitManager.
// Используем временную папку для QSettings (INI-формат), чтобы не трогать реальные.
#include <QCoreApplication>
#include <QTemporaryDir>
#include <QDir>
#include <QSettings>
#include <cstdio>
#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;
}