From 035354517d162609346cb741fac42146ade5b52e Mon Sep 17 00:00:00 2001 From: Moshe Bildner Date: Sun, 22 Jul 2018 20:02:37 -0400 Subject: [PATCH] Update: addresses #9947 Format newly generated .eslintrc.js file before it is saved. --- lib/config/config-file.js | 8 ++++++-- tests/lib/config/config-file.js | 23 +++++++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/lib/config/config-file.js b/lib/config/config-file.js index d09b3668846..623f714afbd 100644 --- a/lib/config/config-file.js +++ b/lib/config/config-file.js @@ -18,7 +18,8 @@ const fs = require("fs"), pathIsInside = require("path-is-inside"), stripComments = require("strip-json-comments"), stringify = require("json-stable-stringify-without-jsonify"), - requireUncached = require("require-uncached"); + requireUncached = require("require-uncached"), + Linter = require("../linter.js"); const debug = require("debug")("eslint:config-file"); @@ -288,7 +289,10 @@ function writeJSConfigFile(config, filePath) { const content = `module.exports = ${stringify(config, { cmp: sortByKey, space: 4 })};`; - fs.writeFileSync(filePath, content, "utf8"); + const linter = new Linter(); + const lintedContent = linter.verifyAndFix(content, config).output; + + fs.writeFileSync(filePath, lintedContent, "utf8"); } /** diff --git a/tests/lib/config/config-file.js b/tests/lib/config/config-file.js index 4b74d047585..b184b5f0f93 100644 --- a/tests/lib/config/config-file.js +++ b/tests/lib/config/config-file.js @@ -1267,6 +1267,29 @@ describe("ConfigFile", () => { ConfigFile.write({}, getFixturePath("yaml/.eslintrc.class")); }, /write to unknown file type/); }); + + it("should format file consistent with config if format is .js", () => { + const fakeFS = leche.fake(fs); + + const singleQuoteNoSemiConfig = { + rules: { + quotes: [2, "single"], + semi: [2, "never"] + } + }; + + sandbox.mock(fakeFS).expects("writeFileSync").withExactArgs( + "dummyfile.js", + sinon.match(value => !(value.includes("\"") || value.includes(";"))), + "utf8" + ); + + const StubbedConfigFile = proxyquire("../../../lib/config/config-file", { + fs: fakeFS + }); + + StubbedConfigFile.write(singleQuoteNoSemiConfig, "dummyfile.js"); + }); }); });