release.test.ts

1.7 KB · raw

1import { execFileSync } from "node:child_process";2import { existsSync, readFileSync } from "node:fs";3import { fileURLToPath } from "node:url";4import { dirname, join, resolve } from "node:path";5import { describe, expect, it } from "vitest";67import { packageSourceArchive } from "./package-source";89const ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "..");10const RELEASE_LIB = "scripts/release-lib.ts";1112function readReleaseLib(): string {13  return readFileSync(join(ROOT, RELEASE_LIB), "utf8");14}1516describe("Firefox release source submission", () => {17  it("passes the generated source archive to web-ext sign with --upload-source-code", () => {18    const source = readReleaseLib();19    expect(source).toContain('"--upload-source-code"');20    expect(source).toContain("sourceZip");21    expect(source.match(/--upload-source-code/g)).toHaveLength(1);22  });2324  it("shared packager builds an archive containing the reviewed crypto source and Noise build script", () => {25    const archivePath = packageSourceArchive("0.0.0-release-test");26    expect(existsSync(archivePath)).toBe(true);2728    const contents = execFileSync("unzip", ["-Z1", archivePath], {29      encoding: "utf8",30    }).split("\n");3132    expect(contents).toEqual(33      expect.arrayContaining([34        "crypto-core/Cargo.toml",35        "crypto-core/Cargo.lock",36        "crypto-core/src/lib.rs",37        "scripts/build-noise-core.mjs",38      ]),39    );4041    expect(existsSync(join(ROOT, "crypto-core/Cargo.toml"))).toBe(true);42    expect(existsSync(join(ROOT, "crypto-core/Cargo.lock"))).toBe(true);43    expect(existsSync(join(ROOT, "crypto-core/src/lib.rs"))).toBe(true);44    expect(existsSync(join(ROOT, "scripts/build-noise-core.mjs"))).toBe(true);45  });46});