AkurAI Build
Menu

popagent

public

Latest change 34833bf0af3741690d73117da170d07482bbdd94 - Preserve deploy diff across reexec by Ólafur Búi Ólafsson

import { describe, expect, test } from "bun:test";

const root = new URL("..", import.meta.url).pathname;

describe("deploy.sh", () => {
  test("is valid Bash and passes the built-in publication privacy scan", async () => {
    const syntax = Bun.spawnSync(["bash", "-n", "deploy.sh"], { cwd: root });
    expect(syntax.exitCode).toBe(0);

    const privacy = Bun.spawnSync(["bash", "deploy.sh", "privacy-check"], { cwd: root });
    expect(privacy.exitCode).toBe(0);
  });

  test("reinstalls dependencies when a dependency patch changes", async () => {
    const script = await Bun.file(new URL("../deploy.sh", import.meta.url)).text();
    expect(script).toContain("package.json bun.lock patches/");
  });

  test("preserves the pre-update revision across deploy script re-execution", async () => {
    const script = await Bun.file(new URL("../deploy.sh", import.meta.url)).text();
    expect(script).toContain('POPAGENT_DEPLOY_BEFORE="$checkout_before"');
    expect(script).toContain('checkout_before="${POPAGENT_DEPLOY_BEFORE:-$checkout_before}"');
  });

  test("ignores managed runtime checkouts during verification", async () => {
    const bunfig = await Bun.file(new URL("../bunfig.toml", import.meta.url)).text();
    const tsconfig = await Bun.file(new URL("../tsconfig.json", import.meta.url)).text();
    expect(bunfig).toContain('"data/self-update/**"');
    expect(tsconfig).toContain('"data/self-update/**"');
  });
});