From 21684c679bf64c4e17bdab03d10ac12cdca56b3c Mon Sep 17 00:00:00 2001 From: Yoshiya Hinosawa Date: Mon, 3 Jun 2019 10:42:27 +0900 Subject: Check file changes during test (denoland/deno_std#476) Original: https://github.com/denoland/deno_std/commit/7daa887b09d4662710ad58e68de1a01a318455bb --- test.ts | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'test.ts') diff --git a/test.ts b/test.ts index 478ae61f8..edaca7a21 100755 --- a/test.ts +++ b/test.ts @@ -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 { + 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 { + 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(); -- cgit v1.2.3