Ctrl K
ComunidadGuías…

test/scripts/test-coverage.test.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import { join } from "node:path";
import { expect } from "@std/expect";
import { describe, it as test } from "@std/testing/bdd";
import { removeOldCoverageOutput } from "#scripts/coverage-output.ts";
import { pathExists, withTempDir, withTempFile } from "#test-utils/files.ts";

const withTempCoverageDir = <Result>(
  run: (path: string) => Result | Promise<Result>,
): Promise<Result> => withTempDir((root) => run(join(root, "coverage")));

describe("removeOldCoverageOutput", () => {
  test("removes stale coverage files before a coverage run", async () => {
    await withTempCoverageDir(async (coverageDir) => {
      const staleFile = join(coverageDir, "old.json");
      await Deno.mkdir(coverageDir);
      await Deno.writeTextFile(staleFile, "stale coverage");
      expect(await pathExists(coverageDir)).toBe(true);

      await removeOldCoverageOutput(coverageDir);

      expect(await pathExists(coverageDir)).toBe(false);
    });
  });

  test("allows a missing coverage directory on the first run", async () => {
    await withTempCoverageDir(async (coverageDir) => {
      await removeOldCoverageOutput(coverageDir);

      expect(await pathExists(coverageDir)).toBe(false);
    });
  });

  test("surfaces filesystem errors other than missing coverage output", async () => {
    await withTempFile(async (filePath) => {
      await expect(pathExists(join(filePath, "coverage"))).rejects.toThrow(
        Deno.errors.NotADirectory,
      );
      await expect(
        removeOldCoverageOutput(join(filePath, "coverage")),
      ).rejects.toThrow(Deno.errors.NotADirectory);
    });
  });
});