61 lines
2.9 KiB
C++
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
|