2 Commits
Author SHA1 Message Date
galeon 7ec4528292 Обновить README.md
tests / package-smoke-linux (push) Skipped
tests / package-smoke-windows (push) Skipped
tests / package-smoke-macos (push) Skipped
tests / macos (push) Successful in 1m21s
tests / linux (push) Successful in 7m35s
tests / windows (push) Successful in 7m35s
Signed-off-by: galeon <dertiellis@gmail.com>
2026-10-26 07:11:00 +00:00
galeon acd9334c16 tests hotfix
tests / windows (push) Failing after 14m37s
tests / linux (push) Successful in 2m11s
tests / macos (push) Successful in 1m14s
tests / package-smoke-linux (push) Skipped
tests / package-smoke-windows (push) Skipped
tests / package-smoke-macos (push) Skipped
2026-10-17 23:38:49 +03:00
6 changed files with 35 additions and 7 deletions

No files matched your search

+1 -1
View File
@@ -27,7 +27,7 @@
<img src="https://projects-live.galeonworx.com/galeon/BiLauncher/raw/branch/master/Screenshots/versionsSelect.png" alt="drawing" width="65%"/> <img src="https://projects-live.galeonworx.com/galeon/BiLauncher/raw/branch/master/Screenshots/versionsSelect.png" alt="drawing" width="65%"/>
</p> </p>
<h3>Сезонные сборки: централизованное управление сборками со стороны команды разработчика, полная автоматизация скачивания, установки и разрешения зависиомстей для конечных пользователей</h3> <h3>Сезонные сборки: централизованное управление сборками со стороны команды разработчика, полная автоматизация скачивания, установки и разрешения зависимостей для конечных пользователей</h3>
<p float="left"> <p float="left">
<img src="https://projects-live.galeonworx.com/galeon/BiLauncher/raw/branch/master/Screenshots/seasonal.png" alt="drawing" width="75%"/> <img src="https://projects-live.galeonworx.com/galeon/BiLauncher/raw/branch/master/Screenshots/seasonal.png" alt="drawing" width="75%"/>
+7
View File
@@ -402,6 +402,13 @@ void FakeInternet::respond(QPointer<QTcpSocket> socket, const FakeResponse &resp
socket->write(response.body.left(response.truncateTo)); socket->write(response.body.left(response.truncateTo));
socket->flush(); socket->flush();
socket->disconnectFromHost(); socket->disconnectFromHost();
// Schannel (Windows) на disconnectFromHost шлёт только TLS close_notify и держит
// TCP открытым, ожидая ответного close_notify, — клиент тогда висит до таймаута.
// Обрыв на то и обрыв: если сокет не закрылся сам, рвём соединение.
QTimer::singleShot(200, socket, [socket] {
if (socket && socket->state() != QAbstractSocket::UnconnectedState)
socket->abort();
});
return; return;
} }
socket->write(response.body); socket->write(response.body);
+2 -1
View File
@@ -103,7 +103,8 @@ int main(int argc, char *argv[])
} }
if (!argsFile.empty()) { if (!argsFile.empty()) {
std::ofstream out(argsFile, std::ios::trunc); // binary: в текстовом режиме Windows превратит '\n' в "\r\n", и тесты увидят «-jar\r».
std::ofstream out(argsFile, std::ios::trunc | std::ios::binary);
for (int i = 1; i < argc; ++i) for (int i = 1; i < argc; ++i)
out << argv[i] << '\n'; out << argv[i] << '\n';
for (const std::string &name : dumpEnv) { for (const std::string &name : dumpEnv) {
+5 -2
View File
@@ -112,8 +112,11 @@ private slots:
QCOMPARE(c.result.userType, QStringLiteral("msa")); QCOMPARE(c.result.userType, QStringLiteral("msa"));
QCOMPARE(c.result.clientToken, MsaAuthService::clientId()); QCOMPARE(c.result.clientToken, MsaAuthService::clientId());
QVERIFY(!c.result.licenseMissing); QVERIFY(!c.result.licenseMissing);
const qint64 lifetime = before.secsTo(c.result.expiresAt); // expiresAt = момент ответа login_with_xbox + expires_in; на медленном раннере
QVERIFY(lifetime > 3500 && lifetime <= 3600); // вся цепочка может идти дольше секунды, поэтому границы — до и после логина.
const QDateTime after = QDateTime::currentDateTimeUtc();
QVERIFY(c.result.expiresAt >= before.addSecs(3600));
QVERIFY(c.result.expiresAt <= after.addSecs(3600));
QVERIFY(progress.count() >= 5); QVERIFY(progress.count() >= 5);
// Порядок шагов и формат запроса токена. // Порядок шагов и формат запроса токена.
+1 -1
View File
@@ -1,4 +1,4 @@
# Дымовая проверка установленного дерева (результат cmake --install) на Windows. # Дымовая проверка установленного дерева (результат cmake --install) на Windows.
# #
# powershell -File tests\scripts\smoke_installed.ps1 -Prefix C:\r\bl-smoke-stage # powershell -File tests\scripts\smoke_installed.ps1 -Prefix C:\r\bl-smoke-stage
# #
+19 -2
View File
@@ -11,8 +11,10 @@
опустить планку, чтобы достигнутое не откатилось. опустить планку, чтобы достигнутое не откатилось.
3. CHANGELOG.md содержит раздел для версии из project(BiLauncher VERSION …): 3. CHANGELOG.md содержит раздел для версии из project(BiLauncher VERSION …):
без него release.yml создаст релиз с пустым описанием (только предупреждение). без него release.yml создаст релиз с пустым описанием (только предупреждение).
4. Скрипты .ps1 с не-ASCII символами сохранены в UTF-8 с BOM: без BOM Windows
PowerShell 5.1 читает их в ANSI-кодировке и падает на разборе кириллицы.
""" """
import os, re, subprocess, sys import glob, os, re, subprocess, sys
ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
BASELINE = os.path.join(ROOT, "tests", "qmllint-baseline.txt") BASELINE = os.path.join(ROOT, "tests", "qmllint-baseline.txt")
@@ -75,12 +77,27 @@ def check_changelog():
return True return True
def check_ps1_bom():
step("Кодировка .ps1")
ok = True
for path in glob.glob(os.path.join(ROOT, "**", "*.ps1"), recursive=True):
if os.path.relpath(path, ROOT).startswith("build"): # папки сборки
continue
data = open(path, "rb").read()
if not data.startswith(b"\xef\xbb\xbf") and any(b > 0x7F for b in data):
print(f"ОШИБКА: {os.path.relpath(path, ROOT)} содержит не-ASCII, но сохранён без UTF-8 BOM")
ok = False
if ok:
print("все .ps1 читаются Windows PowerShell 5.1")
return ok
def main(): def main():
if len(sys.argv) != 2: if len(sys.argv) != 2:
print(__doc__) print(__doc__)
return 2 return 2
build_dir = os.path.abspath(sys.argv[1]) build_dir = os.path.abspath(sys.argv[1])
results = [check_translations(), check_qmllint(build_dir), check_changelog()] results = [check_translations(), check_qmllint(build_dir), check_changelog(), check_ps1_bom()]
print("\nИТОГ:", "OK" if all(results) else "ЕСТЬ ОШИБКИ") print("\nИТОГ:", "OK" if all(results) else "ЕСТЬ ОШИБКИ")
return 0 if all(results) else 1 return 0 if all(results) else 1