fix(installer): harden admin smoke and rollback cleanup

This commit is contained in:
2026-09-07 22:39:30 +05:00
parent bf10810cfc
commit 079094591b
15 changed files with 1095 additions and 261 deletions
+16 -10
View File
@@ -5,7 +5,7 @@ import {
HYSTERIA_HASHES_ASSET,
HYSTERIA_LINUX_AMD64_ASSET,
selectLatestStableRelease,
type GithubRelease
type GithubRelease,
} from "../src/build/hysteriaRelease";
function assetUrl(tag: string, name: string): string {
@@ -21,13 +21,13 @@ function release(tag: string): GithubRelease {
assets: [
{
name: HYSTERIA_LINUX_AMD64_ASSET,
browser_download_url: assetUrl(tag, HYSTERIA_LINUX_AMD64_ASSET)
browser_download_url: assetUrl(tag, HYSTERIA_LINUX_AMD64_ASSET),
},
{
name: HYSTERIA_HASHES_ASSET,
browser_download_url: assetUrl(tag, HYSTERIA_HASHES_ASSET)
}
]
browser_download_url: assetUrl(tag, HYSTERIA_HASHES_ASSET),
},
],
};
}
@@ -63,7 +63,7 @@ describe("install-time никогда не резолвит latest", () => {
["commands", "install.ts"],
["steps", "hysteria.ts"],
["lib", "packageMeta.ts"],
["commands", "reconfigure.ts"]
["commands", "reconfigure.ts"],
];
test("install-time код не импортирует build-time резолвер", () => {
@@ -83,13 +83,19 @@ describe("install-time никогда не резолвит latest", () => {
test("установка берёт версию, url и sha256 только из metadata пакета", () => {
const install = srcFile("commands", "install.ts");
expect(install).toContain('readPackageValue(options.packageDir, "hysteria.version"');
expect(install).toContain('readPackageValue(options.packageDir, "hysteria.url"');
expect(install).toContain('readPackageValue(options.packageDir, "hysteria.sha256"');
for (const key of ["hysteria.version", "hysteria.url", "hysteria.sha256"]) {
expect(install).toMatch(
new RegExp(
`readPackageValue\\(\\s*options\\.packageDir,\\s*"${key.replace(".", "\\.")}"`,
),
);
}
});
test("отсутствие любой части lock-метаданных прерывает установку", () => {
expect(srcFile("commands", "install.ts")).toContain("missing Hysteria lock metadata in package");
expect(srcFile("commands", "install.ts")).toContain(
"missing Hysteria lock metadata in package",
);
});
test("установленный бинарник сверяется с закреплённой версией", () => {