diff options
Diffstat (limited to 'test.ts')
-rwxr-xr-x | test.ts | 39 |
1 files changed, 38 insertions, 1 deletions
@@ -21,4 +21,41 @@ import "./textproto/test.ts"; import "./util/test.ts"; import "./ws/test.ts"; -import "./testing/main.ts"; +import { xrun } from "./prettier/util.ts"; +import { red, green } from "./colors/mod.ts"; +import { runTests } from "./testing/mod.ts"; + +async function run(): Promise<void> { + const startTime = Date.now(); + await runTests(); + await checkSourceFileChanges(startTime); +} + +/** + * Checks whether any source file is changed since the given start time. + * If some files are changed, this function exits with 1. + */ +async function checkSourceFileChanges(startTime: number): Promise<void> { + console.log("test checkSourceFileChanges ..."); + const changed = new TextDecoder() + .decode(await xrun({ args: ["git", "ls-files"], stdout: "piped" }).output()) + .trim() + .split("\n") + .filter(file => { + const stat = Deno.lstatSync(file); + if (stat != null) { + return (stat as any).modified * 1000 > startTime; + } + }); + if (changed.length > 0) { + console.log(red("FAILED")); + console.log( + `Error: Some source files are modified during test: ${changed.join(", ")}` + ); + Deno.exit(1); + } else { + console.log(green("ok")); + } +} + +run(); |