From d414b6b68f002c1a6228a639d4daab4b33857df4 Mon Sep 17 00:00:00 2001 From: James Garbutt <43081j@users.noreply.github.com> Date: Sun, 2 Feb 2025 19:10:27 +0000 Subject: [PATCH 1/2] Ported test suite: ignore-unknown - Using --write and --list-different together is forbidden in v4, the --list-different flag is unnecessary when using --write --- .../ignore-unknown/.prettierignore | 1 + test/__fixtures__/ignore-unknown/.prettierrc | 10 +++ test/__fixtures__/ignore-unknown/ignored.js | 0 .../__fixtures__/ignore-unknown/javascript.js | 1 + .../ignore-unknown/override.as-js-file | 1 + .../unkown-file-extension.unknown | 1 + .../ignore-unknown/unkown-filename | 1 + .../__snapshots__/ignore-unknown.js.snap | 44 +++++++++++ test/__tests__/ignore-unknown.js | 75 +++++++++++++++++++ 9 files changed, 134 insertions(+) create mode 100644 test/__fixtures__/ignore-unknown/.prettierignore create mode 100644 test/__fixtures__/ignore-unknown/.prettierrc create mode 100644 test/__fixtures__/ignore-unknown/ignored.js create mode 100644 test/__fixtures__/ignore-unknown/javascript.js create mode 100644 test/__fixtures__/ignore-unknown/override.as-js-file create mode 100644 test/__fixtures__/ignore-unknown/unkown-file-extension.unknown create mode 100644 test/__fixtures__/ignore-unknown/unkown-filename create mode 100644 test/__tests__/__snapshots__/ignore-unknown.js.snap create mode 100644 test/__tests__/ignore-unknown.js diff --git a/test/__fixtures__/ignore-unknown/.prettierignore b/test/__fixtures__/ignore-unknown/.prettierignore new file mode 100644 index 0000000..1615b0c --- /dev/null +++ b/test/__fixtures__/ignore-unknown/.prettierignore @@ -0,0 +1 @@ +ignored.js diff --git a/test/__fixtures__/ignore-unknown/.prettierrc b/test/__fixtures__/ignore-unknown/.prettierrc new file mode 100644 index 0000000..df113ef --- /dev/null +++ b/test/__fixtures__/ignore-unknown/.prettierrc @@ -0,0 +1,10 @@ +{ + "overrides": [ + { + "files": "*.as-js-file", + "options": { + "parser": "babel" + } + } + ] +} diff --git a/test/__fixtures__/ignore-unknown/ignored.js b/test/__fixtures__/ignore-unknown/ignored.js new file mode 100644 index 0000000..e69de29 diff --git a/test/__fixtures__/ignore-unknown/javascript.js b/test/__fixtures__/ignore-unknown/javascript.js new file mode 100644 index 0000000..b029879 --- /dev/null +++ b/test/__fixtures__/ignore-unknown/javascript.js @@ -0,0 +1 @@ +const foo= "bar"; diff --git a/test/__fixtures__/ignore-unknown/override.as-js-file b/test/__fixtures__/ignore-unknown/override.as-js-file new file mode 100644 index 0000000..b029879 --- /dev/null +++ b/test/__fixtures__/ignore-unknown/override.as-js-file @@ -0,0 +1 @@ +const foo= "bar"; diff --git a/test/__fixtures__/ignore-unknown/unkown-file-extension.unknown b/test/__fixtures__/ignore-unknown/unkown-file-extension.unknown new file mode 100644 index 0000000..e2358dc --- /dev/null +++ b/test/__fixtures__/ignore-unknown/unkown-file-extension.unknown @@ -0,0 +1 @@ +PRETTIER diff --git a/test/__fixtures__/ignore-unknown/unkown-filename b/test/__fixtures__/ignore-unknown/unkown-filename new file mode 100644 index 0000000..e2358dc --- /dev/null +++ b/test/__fixtures__/ignore-unknown/unkown-filename @@ -0,0 +1 @@ +PRETTIER diff --git a/test/__tests__/__snapshots__/ignore-unknown.js.snap b/test/__tests__/__snapshots__/ignore-unknown.js.snap new file mode 100644 index 0000000..6e1e56e --- /dev/null +++ b/test/__tests__/__snapshots__/ignore-unknown.js.snap @@ -0,0 +1,44 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Ignored file (stderr) 1`] = `""`; + +exports[`Ignored file (stdout) 1`] = `""`; + +exports[`Ignored file (write) 1`] = `[]`; + +exports[`None exist file (stderr) 1`] = `"[error] No files matching the given patterns were found"`; + +exports[`None exist file (stdout) 1`] = `""`; + +exports[`None exist file (write) 1`] = `[]`; + +exports[`Not matching pattern (stderr) 1`] = `"[error] No files matching the given patterns were found"`; + +exports[`Not matching pattern (stdout) 1`] = `""`; + +exports[`Not matching pattern (write) 1`] = `[]`; + +exports[`ignore-unknown alias (stdout) 1`] = ` +"javascript.js +override.as-js-file" +`; + +exports[`ignore-unknown check (stderr) 1`] = ` +"[warn] javascript.js +[warn] override.as-js-file +[warn] Code style issues found in 2 files. Run Prettier with --write to fix." +`; + +exports[`ignore-unknown check (stdout) 1`] = `"Checking formatting..."`; + +exports[`ignore-unknown check (write) 1`] = `[]`; + +exports[`ignore-unknown dir (stdout) 1`] = ` +"javascript.js +override.as-js-file" +`; + +exports[`ignore-unknown pattern (stdout) 1`] = ` +"javascript.js +override.as-js-file" +`; diff --git a/test/__tests__/ignore-unknown.js b/test/__tests__/ignore-unknown.js new file mode 100644 index 0000000..d28d602 --- /dev/null +++ b/test/__tests__/ignore-unknown.js @@ -0,0 +1,75 @@ +import { runCli } from "../utils"; + +describe("ignore-unknown dir", () => { + runCli("ignore-unknown", [ + ".", + "--ignore-unknown", + "--list-different", + ]).test({ + status: "non-zero", + stderr: "", + write: [], + }); +}); + +describe("ignore-unknown alias", () => { + runCli("ignore-unknown", [ + ".", + "-u", + "--list-different", + ]).test({ + status: "non-zero", + stderr: "", + write: [], + }); +}); + +describe("ignore-unknown pattern", () => { + runCli("ignore-unknown", [ + "*", + "--ignore-unknown", + "--list-different", + ]).test({ + status: "non-zero", + stderr: "", + write: [], + }); +}); + + +describe("ignore-unknown check", () => { + runCli("ignore-unknown", [ + ".", + "--ignore-unknown", + "--check", + ]).test({ + status: 1, + }); +}); + +describe("None exist file", () => { + runCli("ignore-unknown", [ + "non-exist-file", + "--ignore-unknown", + ]).test({ + status: 1, + }); +}); + +describe("Not matching pattern", () => { + runCli("ignore-unknown", [ + "*.non-exist-pattern", + "--ignore-unknown", + ]).test({ + status: 1, + }); +}); + +describe("Ignored file", () => { + runCli("ignore-unknown", [ + "ignored.js", + "--ignore-unknown", + ]).test({ + status: 0, + }); +}); From 1ef700a1d8c42294286c0bf875bace25bc95d15c Mon Sep 17 00:00:00 2001 From: James Garbutt <43081j@users.noreply.github.com> Date: Sun, 2 Feb 2025 19:43:58 +0000 Subject: [PATCH 2/2] test: launch CLI lazily in tests Launches the CLI only when a test runs instead of immediately. This means tests will no longer interfere with each other. --- test/utils.js | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/test/utils.js b/test/utils.js index bb87d7f..604d68d 100644 --- a/test/utils.js +++ b/test/utils.js @@ -94,10 +94,10 @@ async function runCommand(dir, args, options) { return { status, stdout, stderr, write }; } -async function runTest(name, expected, result, options) { +async function runTest(name, expected, lazyResult, options) { const title = options.title || ""; test(`${title}(${name})`, async () => { - const value = (await result)[name]; + const value = (await lazyResult())[name]; if (expected !== undefined) { if (name === "status" && expected === "non-zero") { expect(value).not.toBe(0); @@ -113,24 +113,31 @@ async function runTest(name, expected, result, options) { } function runCli(dir, args = [], options = {}) { - const promise = runCommand(dir, args, options); + let promise; + const lazyPromise = async () => { + if (promise) { + return promise; + } + promise = runCommand(dir, args, options); + return promise; + }; const result = { get status() { - return promise.then((result) => result.status); + return lazyPromise().then((result) => result.status); }, get stdout() { - return promise.then((result) => result.stdout); + return lazyPromise().then((result) => result.stdout); }, get stderr() { - return promise.then((result) => result.stderr); + return lazyPromise().then((result) => result.stderr); }, get write() { - return promise.then((result) => result.write); + return lazyPromise().then((result) => result.write); }, test: (tests) => { for (const name of ["status", "stdout", "stderr", "write"]) { const expected = tests[name]; - runTest(name, expected, promise, options); + runTest(name, expected, lazyPromise, options); } return result; },