test.deploy/core/adapters/release.adapter.test.ts
test.deploy/core/adapters/release.adapter.test.ts is a file in Codebase Testing. 32 lines of code and 0 definitions.
import { describe, expect, it } from "vitest";
import { mkdirSync, mkdtempSync, rmSync } from "node:fs";
import { ARCHIVE_BINARY } from "@banes-lab/deploy/configuration/constants/deployment.constants.ts";
import { execFileSync } from "node:child_process";
import { join } from "node:path";
import { buildRelease, packFolder } from "@banes-lab/deploy/core/adapters/release.adapter.ts";
import { tmpdir } from "node:os";
import { writeVerbatim } from "@govlab/canonical-write";
describe("packFolder", () => {
it("packs every file of a folder, dot-named folders included, relative to the folder", async () => {
const root = mkdtempSync(join(tmpdir(), "pack-"));
const source = join(root, "web");
mkdirSync(join(source, ".hidden"), { recursive: true });
writeVerbatim(join(source, "a.html"), "a");
writeVerbatim(join(source, ".hidden", "b.js"), "b");
const archive = join(root, "site.tar.gz");
await packFolder(source, archive);
const listed = execFileSync(ARCHIVE_BINARY, ["-tzf", "site.tar.gz"], { cwd: root, encoding: "utf8" });
rmSync(root, { force: true, recursive: true });
expect(listed).toContain("a.html");
expect(listed).toContain(".hidden/b.js");
});
});
describe("buildRelease", () => {
it("runs the build in its own process and reports a failing exit", async () => {
const root = mkdtempSync(join(tmpdir(), "build-"));
const ended = await buildRelease(root);
rmSync(root, { force: true, recursive: true });
expect(ended.signal).toBeNull();
expect(ended.code).not.toBe(0);
}, 60_000);
});