Add portable Windows desktop downloads and release uploads

This commit is contained in:
2026-10-11 11:44:27 +05:00
parent fc6da6756d
commit a54a3e7705
24 changed files with 4159 additions and 5 deletions

View File

@@ -188,3 +188,43 @@ test("failed builds and rejected authentication never report success", async ()
/Vercel 401/,
);
});
test("large desktop releases upload as binary before deployment and failures stop release", async () => {
const binary = Buffer.alloc(10 * 1024 * 1024 + 1, 7);
const payload = deploymentPayload([
{
file: "public/desktop/MineGeo.exe",
data: binary.toString("base64"),
encoding: "base64",
},
]);
const requests: { url: string; init: RequestInit }[] = [];
await deploy(payload, {
token: "test",
log: () => {},
request: async (url, init = {}) => {
requests.push({ url: String(url), init });
return new Response(
JSON.stringify(
String(url).includes("/v2/files")
? {}
: { id: "release", readyState: "READY", url: "example.invalid" },
),
);
},
});
assert.ok(requests[0].url.includes("/v2/files"));
assert.deepEqual(requests[0].init.body, binary);
const file = JSON.parse(requests[1].init.body as string).files[0];
assert.equal(file.size, binary.length);
assert.match(file.sha, /^[a-f0-9]{40}$/);
assert.equal(file.data, undefined);
await assert.rejects(
deploy(payload, {
token: "test",
log: () => {},
request: async () => new Response("", { status: 403 }),
}),
/file upload failed/,
);
});