import { Sys } from "../deps.ts"; import { describe, expect, it, mockfn } from "../deps.testing.ts"; import { Runner } from "./run.ts"; describe(Runner, () => { it("works with a file timestamp", async () => { async function check(stat: any, expected: boolean) { const sys = { stat: mockfn(() => stat), writeTextFile: mockfn(), }; const runner = new Runner(sys as typeof Sys); const path = "/tmp/thunderk-run-run-test.stamp"; const result = await runner.checkStamp("run-test"); expect(result).toBe(expected); expect(sys.stat).toHaveBeenLastCalledWith(path); if (expected) { expect(sys.writeTextFile).not.toHaveBeenCalled(); } else { expect(sys.writeTextFile).toHaveBeenLastCalledWith(path, ""); } } await check({ isFile: false }, false); await check({ isFile: true, mtime: new Date(2000, 1, 1) }, false); await check({ isFile: true, mtime: new Date() }, true); }); });