Files
galeon 41599fa82f
tests / linux (push) Failing after 2m18s
tests / windows (push) Skipped
tests / macos (push) Skipped
tests / package-smoke-linux (push) Skipped
tests / package-smoke-windows (push) Skipped
tests / package-smoke-macos (push) Skipped
new unit tests, hehe 67
Signed-off-by: galeon <dertiellis@gmail.com>
2026-10-12 13:14:08 +03:00

61 lines
2.9 KiB
C++

#pragma once
// Фикстуры и мелкие помощники для подготовки файлов в песочнице.
#include <QByteArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QMap>
#include <QString>
#include <QStringList>
namespace Fixtures {
// Абсолютный путь к tests/fixtures/<relative>.
QString path(const QString &relative);
// Содержимое фикстуры; при отсутствии файла тест падает через qFatal.
QByteArray read(const QString &relative);
QJsonObject readJson(const QString &relative);
// Фикстура-шаблон: %OS%, %OTHER%, %ARCH%, %NATIVE% заменяются на значения
// текущей платформы (имя ОС в терминах Mojang, «чужая» ОС, архитектура,
// классификатор нативов LWJGL) — один json годится для всех трёх ОС.
QByteArray readTemplate(const QString &relative);
QByteArray applyTemplate(QByteArray text);
QString otherOsName();
// Пишет файл, создавая недостающие папки.
bool write(const QString &path, const QByteArray &data);
bool writeJson(const QString &path, const QJsonObject &object);
QByteArray readFile(const QString &path);
QJsonObject readJsonFile(const QString &path);
// Zip из пар «путь внутри архива → содержимое» (через QZipWriter, как в коде лаунчера).
bool makeZip(const QString &zipPath, const QMap<QString, QByteArray> &entries);
QByteArray zipBytes(const QMap<QString, QByteArray> &entries);
// Список файлов в zip — как его видит QZipReader (ведущие «.» и «/» он срезает).
QStringList zipEntries(const QString &zipPath);
// tar.gz через системный tar (есть и на Windows 10+, и на Unix).
bool makeTarGz(const QString &archivePath, const QMap<QString, QByteArray> &entries);
QString sha1(const QByteArray &data);
QString sha256(const QByteArray &data);
// Все файлы под папкой (относительные пути, «/» в качестве разделителя), отсортированы.
QStringList listTree(const QString &dir);
// Подставная java (см. tests/fake_java). Копирует бинарник в <dir>/bin/java[.exe]
// (на Windows ещё и javaw.exe) и пишет рядом fake-java.cfg из строк config.
// Возвращает путь к java.
QString installFakeJava(const QString &dir, const QString &version,
const QStringList &config = {});
// Переписать fake-java.cfg у уже установленной подставной java.
void configureFakeJava(const QString &javaPath, const QString &version,
const QStringList &config);
QString javaExecutableName();
} // namespace Fixtures