diff options
Diffstat (limited to 'prettier/main_test.ts')
| -rw-r--r-- | prettier/main_test.ts | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/prettier/main_test.ts b/prettier/main_test.ts new file mode 100644 index 000000000..69ee126c8 --- /dev/null +++ b/prettier/main_test.ts @@ -0,0 +1,87 @@ +// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. +import { test, assertEqual } from "../testing/mod.ts"; +import { xrun, executableSuffix } from "./util.ts"; +import { readAll } from "deno"; + +const decoder = new TextDecoder(); + +async function run(args: string[]) { + const p = xrun({ args, stdout: "piped" }); + + const stdout = decoder.decode(await readAll(p.stdout)); + const { code } = await p.status(); + + return { stdout, code }; +} + +const cmd = [ + `deno${executableSuffix}`, + "--allow-run", + "--allow-write", + "prettier/main.ts" +]; +const testdata = "prettier/testdata"; + +function normalizeOutput(output: string): string { + return output + .replace(/\r/g, "") + .replace(/\\/g, "/") + .trim() + .split("\n") + .sort() + .join("\n"); +} + +async function clearTestdataChanges() { + await xrun({ args: ["git", "checkout", testdata] }).status(); +} + +test(async function testPrettierCheckAndFormatFiles() { + await clearTestdataChanges(); + + const files = [`${testdata}/0.ts`, `${testdata}/1.js`]; + + var { code, stdout } = await run([...cmd, "--check", ...files]); + assertEqual(code, 1); + assertEqual(normalizeOutput(stdout), "Some files are not formatted"); + + var { code, stdout } = await run([...cmd, ...files]); + assertEqual(code, 0); + assertEqual( + normalizeOutput(stdout), + `Formatting prettier/testdata/0.ts +Formatting prettier/testdata/1.js` + ); + + var { code, stdout } = await run([...cmd, "--check", ...files]); + assertEqual(code, 0); + assertEqual(normalizeOutput(stdout), "Every file is formatted"); + + await clearTestdataChanges(); +}); + +test(async function testPrettierCheckAndFormatDirs() { + await clearTestdataChanges(); + + const dirs = [`${testdata}/foo`, `${testdata}/bar`]; + + var { code, stdout } = await run([...cmd, "--check", ...dirs]); + assertEqual(code, 1); + assertEqual(normalizeOutput(stdout), "Some files are not formatted"); + + var { code, stdout } = await run([...cmd, ...dirs]); + assertEqual(code, 0); + assertEqual( + normalizeOutput(stdout), + `Formatting prettier/testdata/bar/0.ts +Formatting prettier/testdata/bar/1.js +Formatting prettier/testdata/foo/0.ts +Formatting prettier/testdata/foo/1.js` + ); + + var { code, stdout } = await run([...cmd, "--check", ...dirs]); + assertEqual(code, 0); + assertEqual(normalizeOutput(stdout), "Every file is formatted"); + + await clearTestdataChanges(); +}); |
