Фаза 1: мастер первого запуска — SettingsStore, GitManager (auto-init+коммиты), SyncManager (проверка соединений+ErrorCatalog), WelcomeWizard/ProviderSetupGuide; тесты smoke/git/vault (12/12)
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
// Тест GitManager (Фаза 1): инициализация репозитория хранилища,
|
||||
// авто-коммит с новым файлом, наличие коммитов в HEAD.
|
||||
#include <QCoreApplication>
|
||||
#include <QTemporaryDir>
|
||||
#include <QFile>
|
||||
#include <QDir>
|
||||
#include <cstdio>
|
||||
|
||||
#include "git/GitManager.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QCoreApplication app(argc, argv);
|
||||
|
||||
QTemporaryDir dir;
|
||||
if (!dir.isValid()) {
|
||||
std::fprintf(stderr, "FAIL: не удалось создать временную папку\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
GitManager git;
|
||||
|
||||
// 1. init в новой папке
|
||||
if (!git.initRepo(dir.path()) || !git.lastError().isEmpty()) {
|
||||
std::fprintf(stderr, "FAIL: initRepo: %s\n", qPrintable(git.lastError()));
|
||||
return 1;
|
||||
}
|
||||
|
||||
// 2. init идемпотентен (повторный вызов — успех)
|
||||
if (!git.initRepo(dir.path())) {
|
||||
std::fprintf(stderr, "FAIL: повторный initRepo\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// 3. нет коммитов
|
||||
if (git.hasCommits(dir.path())) {
|
||||
std::fprintf(stderr, "FAIL: коммиты появились раньше времени\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// 4. создаём файл и коммитим
|
||||
QFile f(dir.filePath(QStringLiteral("readme.md")));
|
||||
if (!f.open(QIODevice::WriteOnly)) {
|
||||
std::fprintf(stderr, "FAIL: не удалось создать файл\n");
|
||||
return 1;
|
||||
}
|
||||
f.write("# Привет, Flora!\n");
|
||||
f.close();
|
||||
|
||||
if (!git.commitAll(dir.path(), QStringLiteral("initial"))) {
|
||||
std::fprintf(stderr, "FAIL: commitAll: %s\n", qPrintable(git.lastError()));
|
||||
return 1;
|
||||
}
|
||||
|
||||
// 5. теперь коммиты есть
|
||||
if (!git.hasCommits(dir.path())) {
|
||||
std::fprintf(stderr, "FAIL: no commits after commitAll\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// 6. повторный коммит без изменений — корректная ошибка, без падения
|
||||
if (git.commitAll(dir.path(), QStringLiteral("noop"))) {
|
||||
std::fprintf(stderr, "FAIL: повторный коммит без изменений не должен удаваться\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// 7. не-существующая папка
|
||||
if (git.initRepo("/путь/которого/не/существует_xyz")) {
|
||||
std::fprintf(stderr, "FAIL: initRepo не должен удаваться\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
std::printf("GIT TEST OK\n");
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user