diff --git a/Makefile.js b/Makefile.js index 16e863595a5..a84b9b27ecd 100644 --- a/Makefile.js +++ b/Makefile.js @@ -13,7 +13,7 @@ require("shelljs/make"); -let lodash = require("lodash"), +const lodash = require("lodash"), checker = require("npm-license"), ReleaseOps = require("eslint-release"), dateformat = require("dateformat"), @@ -38,9 +38,9 @@ let lodash = require("lodash"), * multiple different VM types. So I'm fudging this for now in the hopes that it * at least provides some sort of useful signal. */ -let PERF_MULTIPLIER = 13e6; +const PERF_MULTIPLIER = 13e6; -let OPEN_SOURCE_LICENSES = [ +const OPEN_SOURCE_LICENSES = [ /MIT/, /BSD/, /Apache/, /ISC/, /WTF/, /Public Domain/ ]; @@ -48,7 +48,7 @@ let OPEN_SOURCE_LICENSES = [ // Data //------------------------------------------------------------------------------ -let NODE = "node ", // intentional extra space +const NODE = "node ", // intentional extra space NODE_MODULES = "./node_modules/", TEMP_DIR = "./tmp/", BUILD_DIR = "./build/", @@ -87,7 +87,7 @@ let NODE = "node ", // intentional extra space * @private */ function getTestFilePatterns() { - let testLibPath = "tests/lib/", + const testLibPath = "tests/lib/", testTemplatesPath = "tests/templates/"; return ls(testLibPath).filter(function(pathToCheck) { @@ -107,9 +107,7 @@ function getTestFilePatterns() { * @returns {undefined} */ function validateJsonFile(filePath) { - let contents; - - contents = fs.readFileSync(filePath, "utf8"); + const contents = fs.readFileSync(filePath, "utf8"); JSON.parse(contents); } @@ -138,7 +136,7 @@ function generateRulesIndex(basedir) { output += " var rules = Object.create(null);\n"; find(basedir + "rules/").filter(fileType("js")).forEach(function(filename) { - let basename = path.basename(filename, ".js"); + const basename = path.basename(filename, ".js"); output += " rules[\"" + basename + "\"] = require(\"./rules/" + basename + "\");\n"; }); @@ -163,7 +161,7 @@ function execSilent(cmd) { * @private */ function generateBlogPost(releaseInfo) { - let output = ejs.render(cat("./templates/blogpost.md.ejs"), releaseInfo), + const output = ejs.render(cat("./templates/blogpost.md.ejs"), releaseInfo), now = new Date(), month = now.getMonth() + 1, day = now.getDate(), @@ -183,8 +181,8 @@ function generateBlogPost(releaseInfo) { * @returns {void} */ function generateFormatterExamples(formatterInfo, prereleaseVersion) { - let output = ejs.render(cat("./templates/formatter-examples.md.ejs"), formatterInfo), - filename = "../eslint.github.io/docs/user-guide/formatters/index.md", + const output = ejs.render(cat("./templates/formatter-examples.md.ejs"), formatterInfo); + let filename = "../eslint.github.io/docs/user-guide/formatters/index.md", htmlFilename = "../eslint.github.io/docs/user-guide/formatters/html-formatter-example.html"; if (prereleaseVersion) { @@ -202,13 +200,13 @@ function generateFormatterExamples(formatterInfo, prereleaseVersion) { * @returns {void} */ function generateRuleIndexPage(basedir) { - let outputFile = "../eslint.github.io/_data/rules.yml", + const outputFile = "../eslint.github.io/_data/rules.yml", categoryList = "conf/category-list.json", categoriesData = JSON.parse(cat(path.resolve(categoryList))); find(path.join(basedir, "/lib/rules/")).filter(fileType("js")).forEach(function(filename) { - let rule = require(filename); - let basename = path.basename(filename, ".js"); + const rule = require(filename); + const basename = path.basename(filename, ".js"); if (rule.meta.deprecated) { categoriesData.deprecated.rules.push({ @@ -216,7 +214,7 @@ function generateRuleIndexPage(basedir) { replacedBy: rule.meta.docs.replacedBy }); } else { - let output = { + const output = { name: basename, description: rule.meta.docs.description, recommended: rule.meta.docs.recommended || false, @@ -232,7 +230,7 @@ function generateRuleIndexPage(basedir) { } }); - let output = yaml.safeDump(categoriesData, {sortKeys: true}); + const output = yaml.safeDump(categoriesData, {sortKeys: true}); output.to(outputFile); } @@ -243,7 +241,7 @@ function generateRuleIndexPage(basedir) { */ function release() { - let releaseInfo = ReleaseOps.release(); + const releaseInfo = ReleaseOps.release(); echo("Generating site"); target.gensite(); @@ -260,7 +258,7 @@ function release() { */ function prerelease(prereleaseId) { - let releaseInfo = ReleaseOps.release(prereleaseId); + const releaseInfo = ReleaseOps.release(prereleaseId); echo("Generating site"); @@ -298,8 +296,8 @@ function getFirstCommitOfFile(filePath) { * @returns {string} The tag name. */ function getTagOfFirstOccurrence(filePath) { - let firstCommit = getFirstCommitOfFile(filePath), - tags = execSilent("git tag --contains " + firstCommit); + const firstCommit = getFirstCommitOfFile(filePath); + let tags = execSilent("git tag --contains " + firstCommit); tags = splitCommandResultToLines(tags); return tags.reduce(function(list, version) { @@ -326,7 +324,7 @@ function getFirstVersionOfFile(filePath) { * @returns {string} The commit sha. */ function getCommitDeletingFile(filePath) { - let commits = execSilent("git rev-list HEAD -- " + filePath); + const commits = execSilent("git rev-list HEAD -- " + filePath); return splitCommandResultToLines(commits)[0]; } @@ -337,7 +335,7 @@ function getCommitDeletingFile(filePath) { * @returns {string} The version number. */ function getFirstVersionOfDeletion(filePath) { - let deletionCommit = getCommitDeletingFile(filePath), + const deletionCommit = getCommitDeletingFile(filePath), tags = execSilent("git tag --contains " + deletionCommit); return splitCommandResultToLines(tags) @@ -357,12 +355,12 @@ function getFirstVersionOfDeletion(filePath) { * @private */ function getBranches() { - let branchesRaw = splitCommandResultToLines(execSilent("git branch --list")), - branches = [], - branchName; + const branchesRaw = splitCommandResultToLines(execSilent("git branch --list")), + branches = []; for (let i = 0; i < branchesRaw.length; i++) { - branchName = branchesRaw[i].replace(/^\*(.*)/, "$1").trim(); + const branchName = branchesRaw[i].replace(/^\*(.*)/, "$1").trim(); + branches.push(branchName); } return branches; @@ -375,7 +373,7 @@ function getBranches() { * @private */ function lintMarkdown(files) { - let config = { + const config = { default: true, // Exclusions for deliberate/widespread violations @@ -418,7 +416,7 @@ function lintMarkdown(files) { * @private */ function hasBranch(branchName) { - let branches = getBranches(); + const branches = getBranches(); return branches.indexOf(branchName) !== -1; } @@ -428,10 +426,10 @@ function hasBranch(branchName) { * @returns {Object} Output from each formatter */ function getFormatterResults() { - let CLIEngine = require("./lib/cli-engine"), + const CLIEngine = require("./lib/cli-engine"), chalk = require("chalk"); - let formatterFiles = fs.readdirSync("./lib/formatters/"), + const formatterFiles = fs.readdirSync("./lib/formatters/"), cli = new CLIEngine({ useEslintrc: false, baseConfig: { extends: "eslint:recommended" }, @@ -455,7 +453,7 @@ function getFormatterResults() { rawMessages = cli.executeOnText(codeString, "fullOfProblems.js", true); return formatterFiles.reduce(function(data, filename) { - let fileExt = path.extname(filename), + const fileExt = path.extname(filename), name = path.basename(filename, fileExt); if (fileExt === ".js") { @@ -584,7 +582,7 @@ target.gensite = function(prereleaseVersion) { // 2. remove old files from the site docFiles.forEach(function(filePath) { - let fullPath = path.join(DOCS_DIR, filePath), + const fullPath = path.join(DOCS_DIR, filePath), htmlFullPath = fullPath.replace(".md", ".html"); if (test("-f", fullPath)) { @@ -613,13 +611,13 @@ target.gensite = function(prereleaseVersion) { find(TEMP_DIR).forEach(function(filename) { if (test("-f", filename) && path.extname(filename) === ".md") { - let rulesUrl = "https://github.com/eslint/eslint/tree/master/lib/rules/", + const rulesUrl = "https://github.com/eslint/eslint/tree/master/lib/rules/", docsUrl = "https://github.com/eslint/eslint/tree/master/docs/rules/", - text = cat(filename), baseName = path.basename(filename), sourceBaseName = path.basename(filename, ".md") + ".js", sourcePath = path.join("lib/rules", sourceBaseName), - ruleName = path.basename(filename, ".md"), + ruleName = path.basename(filename, ".md"); + let text = cat(filename), title; // 5. Prepend page title and layout variables at the top of rules @@ -647,17 +645,15 @@ target.gensite = function(prereleaseVersion) { // 8. Append first version of ESLint rule was added at. if (filename.indexOf("rules/") !== -1) { - let added, removed; - if (!versions.added[baseName]) { versions.added[baseName] = getFirstVersionOfFile(sourcePath); } - added = versions.added[baseName]; + const added = versions.added[baseName]; if (!versions.removed[baseName] && !fs.existsSync(sourcePath)) { versions.removed[baseName] = getFirstVersionOfDeletion(sourcePath); } - removed = versions.removed[baseName]; + const removed = versions.removed[baseName]; text += "\n## Version\n\n"; text += removed @@ -702,7 +698,7 @@ target.gensite = function(prereleaseVersion) { }; target.publishsite = function() { - let currentDir = pwd(); + const currentDir = pwd(); cd(SITE_DIR); exec("git add -A ."); @@ -749,14 +745,14 @@ target.checkRuleFiles = function() { echo("Validating rules"); - let eslintConf = require("./conf/eslint.json").rules; + const eslintConf = require("./conf/eslint.json").rules; - let ruleFiles = find("lib/rules/").filter(fileType("js")), - errors = 0; + const ruleFiles = find("lib/rules/").filter(fileType("js")); + let errors = 0; ruleFiles.forEach(function(filename) { - let basename = path.basename(filename, ".js"); - let docFilename = "docs/rules/" + basename + ".md"; + const basename = path.basename(filename, ".js"); + const docFilename = "docs/rules/" + basename + ".md"; /** * Check if basename is present in eslint conf @@ -774,9 +770,9 @@ target.checkRuleFiles = function() { * @private */ function hasIdInTitle(id) { - let docText = cat(docFilename); - let idOldAtEndOfTitleRegExp = new RegExp("^# (.*?) \\(" + id + "\\)"); // original format - let idNewAtBeginningOfTitleRegExp = new RegExp("^# " + id + ": "); // new format is same as rules index + const docText = cat(docFilename); + const idOldAtEndOfTitleRegExp = new RegExp("^# (.*?) \\(" + id + "\\)"); // original format + const idNewAtBeginningOfTitleRegExp = new RegExp("^# " + id + ": "); // new format is same as rules index // 1. Added support for new format. // 2. Will remove support for old format after all docs files have new format. // 3. Will remove this check when the main heading is automatically generated from rule metadata. @@ -826,7 +822,7 @@ target.checkLicenses = function() { * @private */ function isPermissible(dependency) { - let licenses = dependency.licenses; + const licenses = dependency.licenses; if (Array.isArray(licenses)) { return licenses.some(function(license) { @@ -847,7 +843,7 @@ target.checkLicenses = function() { checker.init({ start: __dirname }, function(deps) { - let impermissible = Object.keys(deps).map(function(dependency) { + const impermissible = Object.keys(deps).map(function(dependency) { return { name: dependency, licenses: deps[dependency].licenses @@ -953,7 +949,7 @@ function downloadMultifilesTestTarget(cb) { * @returns {void} */ function createConfigForPerformanceTest() { - let content = [ + const content = [ "root: true", "env:", " node: true", @@ -982,10 +978,10 @@ function createConfigForPerformanceTest() { * @private */ function time(cmd, runs, runNumber, results, cb) { - let start = process.hrtime(); + const start = process.hrtime(); exec(cmd, { silent: true }, function(code, stdout, stderr) { - let diff = process.hrtime(start), + const diff = process.hrtime(start), actual = (diff[0] * 1e3 + diff[1] / 1e6); // ms if (code) { @@ -1021,7 +1017,7 @@ function time(cmd, runs, runNumber, results, cb) { * @returns {void} */ function runPerformanceTest(title, targets, multiplier, cb) { - let cpuSpeed = os.cpus()[0].speed, + const cpuSpeed = os.cpus()[0].speed, max = multiplier / cpuSpeed, cmd = ESLINT + "--config \"" + PERF_ESLINTRC + "\" --no-eslintrc --no-ignore " + targets; @@ -1038,7 +1034,7 @@ function runPerformanceTest(title, targets, multiplier, cb) { return a - b; }); - let median = results[~~(results.length / 2)]; + const median = results[~~(results.length / 2)]; echo(""); if (median > max) { @@ -1060,10 +1056,10 @@ function loadPerformance() { echo(""); echo("Loading:"); - let results = []; + const results = []; for (let cnt = 0; cnt < 5; cnt++) { - let loadPerfData = loadPerf({ + const loadPerfData = loadPerf({ checkDependencies: false }); @@ -1074,7 +1070,7 @@ function loadPerformance() { results.sort(function(a, b) { return a - b; }); - let median = results[~~(results.length / 2)]; + const median = results[~~(results.length / 2)]; echo(""); echo(" Load Performance median: %dms", median); @@ -1094,7 +1090,7 @@ target.perf = function() { function() { // Count test target files. - let count = glob.sync( + const count = glob.sync( process.platform === "win32" ? PERF_MULTIFILES_TARGETS.slice(2).replace("\\", "/") : PERF_MULTIFILES_TARGETS diff --git a/conf/environments.js b/conf/environments.js index d938a6cfaa9..a11f2963dc9 100644 --- a/conf/environments.js +++ b/conf/environments.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let globals = require("globals"); +const globals = require("globals"); //------------------------------------------------------------------------------ // Public Interface diff --git a/lib/ast-utils.js b/lib/ast-utils.js index 881cc26c5f0..672bc74c530 100644 --- a/lib/ast-utils.js +++ b/lib/ast-utils.js @@ -9,19 +9,19 @@ // Requirements //------------------------------------------------------------------------------ -let esutils = require("esutils"); +const esutils = require("esutils"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let anyFunctionPattern = /^(?:Function(?:Declaration|Expression)|ArrowFunctionExpression)$/; -let anyLoopPattern = /^(?:DoWhile|For|ForIn|ForOf|While)Statement$/; -let arrayOrTypedArrayPattern = /Array$/; -let arrayMethodPattern = /^(?:every|filter|find|findIndex|forEach|map|some)$/; -let bindOrCallOrApplyPattern = /^(?:bind|call|apply)$/; -let breakableTypePattern = /^(?:(?:Do)?While|For(?:In|Of)?|Switch)Statement$/; -let thisTagPattern = /^[\s\*]*@this/m; +const anyFunctionPattern = /^(?:Function(?:Declaration|Expression)|ArrowFunctionExpression)$/; +const anyLoopPattern = /^(?:DoWhile|For|ForIn|ForOf|While)Statement$/; +const arrayOrTypedArrayPattern = /Array$/; +const arrayMethodPattern = /^(?:every|filter|find|findIndex|forEach|map|some)$/; +const bindOrCallOrApplyPattern = /^(?:bind|call|apply)$/; +const breakableTypePattern = /^(?:(?:Do)?While|For(?:In|Of)?|Switch)Statement$/; +const thisTagPattern = /^[\s\*]*@this/m; /** * Checks reference if is non initializer and writable. @@ -32,15 +32,14 @@ let thisTagPattern = /^[\s\*]*@this/m; * @private */ function isModifyingReference(reference, index, references) { - let identifier = reference.identifier, - modifyingDifferentIdentifier; + const identifier = reference.identifier; /* * Destructuring assignments can have multiple default value, so * possibly there are multiple writeable references for the same * identifier. */ - modifyingDifferentIdentifier = index === 0 || + const modifyingDifferentIdentifier = index === 0 || references[index - 1].identifier !== identifier; return (identifier && @@ -160,7 +159,7 @@ function isMethodWhichHasThisArg(node) { * @returns {boolean} Whether or not the node has a `@this` tag in its comments. */ function hasJSDocThisTag(node, sourceCode) { - let jsdocComment = sourceCode.getJSDocComment(node); + const jsdocComment = sourceCode.getJSDocComment(node); if (jsdocComment && thisTagPattern.test(jsdocComment.value)) { return true; @@ -183,7 +182,7 @@ function hasJSDocThisTag(node, sourceCode) { * @private */ function isParenthesised(sourceCode, node) { - let previousToken = sourceCode.getTokenBefore(node), + const previousToken = sourceCode.getTokenBefore(node), nextToken = sourceCode.getTokenAfter(node); return Boolean(previousToken && nextToken) && @@ -285,7 +284,7 @@ module.exports = { * @returns {boolean} `true` if the node is an ESLint directive comment */ isDirectiveComment: function(node) { - let comment = node.value.trim(); + const comment = node.value.trim(); return ( node.type === "Line" && comment.indexOf("eslint-") === 0 || @@ -321,7 +320,7 @@ module.exports = { let scope = initScope; while (scope) { - let variable = scope.set.get(name); + const variable = scope.set.get(name); if (variable) { return variable; @@ -360,7 +359,7 @@ module.exports = { } while (node) { - let parent = node.parent; + const parent = node.parent; switch (parent.type) { diff --git a/lib/cli-engine.js b/lib/cli-engine.js index cf28aa1d592..f33b13f6f87 100644 --- a/lib/cli-engine.js +++ b/lib/cli-engine.js @@ -15,11 +15,10 @@ // Requirements //------------------------------------------------------------------------------ -let fs = require("fs"), +const fs = require("fs"), path = require("path"), lodash = require("lodash"), - debug = require("debug"), rules = require("./rules"), eslint = require("./eslint"), @@ -36,6 +35,7 @@ let fs = require("fs"), pkg = require("../package.json"); +const debug = require("debug")("eslint:cli-engine"); //------------------------------------------------------------------------------ // Typedefs @@ -84,8 +84,6 @@ let fs = require("fs"), // Helpers //------------------------------------------------------------------------------ -debug = debug("eslint:cli-engine"); - /** * It will calculate the error and warning count for collection of messages per file * @param {Object[]} messages - Collection of messages @@ -137,12 +135,11 @@ function calculateStatsPerRun(results) { * @private */ function multipassFix(text, config, options) { - + const MAX_PASSES = 10; let messages = [], fixedResult, fixed = false, - passNumber = 0, - MAX_PASSES = 10; + passNumber = 0; /** * This loop continues until one of the following is true: @@ -213,12 +210,9 @@ function processText(text, configHelper, filename, fix, allowInlineConfig) { eslint.reset(); let filePath, - config, messages, - stats, fileExtension, processor, - loadedPlugins, fixedResult; if (filename) { @@ -228,15 +222,15 @@ function processText(text, configHelper, filename, fix, allowInlineConfig) { filename = filename || ""; debug("Linting " + filename); - config = configHelper.getConfig(filePath); + const config = configHelper.getConfig(filePath); if (config.plugins) { Plugins.loadAll(config.plugins); } - loadedPlugins = Plugins.getAll(); + const loadedPlugins = Plugins.getAll(); - for (let plugin in loadedPlugins) { + for (const plugin in loadedPlugins) { if (loadedPlugins[plugin].processors && Object.keys(loadedPlugins[plugin].processors).indexOf(fileExtension) >= 0) { processor = loadedPlugins[plugin].processors[fileExtension]; break; @@ -245,8 +239,8 @@ function processText(text, configHelper, filename, fix, allowInlineConfig) { if (processor) { debug("Using processor"); - let parsedBlocks = processor.preprocess(text, filename); - let unprocessedMessages = []; + const parsedBlocks = processor.preprocess(text, filename); + const unprocessedMessages = []; parsedBlocks.forEach(function(block) { unprocessedMessages.push(eslint.verify(block, config, { @@ -275,9 +269,9 @@ function processText(text, configHelper, filename, fix, allowInlineConfig) { } } - stats = calculateStatsPerFile(messages); + const stats = calculateStatsPerFile(messages); - let result = { + const result = { filePath: filename, messages: messages, errorCount: stats.errorCount, @@ -302,7 +296,7 @@ function processText(text, configHelper, filename, fix, allowInlineConfig) { */ function processFile(filename, configHelper, options) { - let text = fs.readFileSync(path.resolve(filename), "utf8"), + const text = fs.readFileSync(path.resolve(filename), "utf8"), result = processText(text, configHelper, filename, options.fix, options.allowInlineConfig); return result; @@ -318,9 +312,9 @@ function processFile(filename, configHelper, options) { */ function createIgnoreResult(filePath, baseDir) { let message; - let isHidden = /^\./.test(path.basename(filePath)); - let isInNodeModules = baseDir && /^node_modules/.test(path.relative(baseDir, filePath)); - let isInBowerComponents = baseDir && /^bower_components/.test(path.relative(baseDir, filePath)); + const isHidden = /^\./.test(path.basename(filePath)); + const isInNodeModules = baseDir && /^node_modules/.test(path.relative(baseDir, filePath)); + const isInBowerComponents = baseDir && /^bower_components/.test(path.relative(baseDir, filePath)); if (isHidden) { message = "File ignored by default. Use a negated ignore pattern (like \"--ignore-pattern \'!\'\") to override."; @@ -377,8 +371,8 @@ function getCacheFile(cacheFile, cwd) { */ cacheFile = path.normalize(cacheFile); - let resolvedCacheFile = path.resolve(cwd, cacheFile); - let looksLikeADirectory = cacheFile[cacheFile.length - 1 ] === path.sep; + const resolvedCacheFile = path.resolve(cwd, cacheFile); + const looksLikeADirectory = cacheFile[cacheFile.length - 1 ] === path.sep; /** * return the name for the cache file in case the provided parameter is a directory @@ -455,7 +449,7 @@ function CLIEngine(options) { */ this.options = options; - let cacheFile = getCacheFile(this.options.cacheLocation || this.options.cacheFile, this.options.cwd); + const cacheFile = getCacheFile(this.options.cacheLocation || this.options.cacheFile, this.options.cwd); /** * Cache used to avoid operating on files that haven't changed since the @@ -467,7 +461,7 @@ function CLIEngine(options) { // load in additional rules if (this.options.rulePaths) { - let cwd = this.options.cwd; + const cwd = this.options.cwd; this.options.rulePaths.forEach(function(rulesdir) { debug("Loading rules from " + rulesdir); @@ -502,7 +496,7 @@ CLIEngine.getFormatter = function(format) { // if there's a slash, then it's a file if (format.indexOf("/") > -1) { - let cwd = this.options ? this.options.cwd : process.cwd(); + const cwd = this.options ? this.options.cwd : process.cwd(); formatterPath = path.resolve(cwd, format); } else { @@ -527,10 +521,10 @@ CLIEngine.getFormatter = function(format) { * @returns {LintResult[]} The filtered results. */ CLIEngine.getErrorResults = function(results) { - let filtered = []; + const filtered = []; results.forEach(function(result) { - let filteredMessages = result.messages.filter(isErrorMessage); + const filteredMessages = result.messages.filter(isErrorMessage); if (filteredMessages.length > 0) { filtered.push({ @@ -588,14 +582,11 @@ CLIEngine.prototype = { * @returns {Object} The results for all files that were linted. */ executeOnFiles: function(patterns) { - let results = [], + const results = [], options = this.options, fileCache = this._fileCache, - configHelper = new Config(options), - fileList, - stats, - startTime, - prevConfig; // the previous configuration used + configHelper = new Config(options); + let prevConfig; // the previous configuration used /** * Calculates the hash of the config file used to validate a given file @@ -603,7 +594,7 @@ CLIEngine.prototype = { * @returns {string} the hash of the config */ function hashOfConfigFor(filename) { - let config = configHelper.getConfig(filename); + const config = configHelper.getConfig(filename); if (!prevConfig) { prevConfig = {}; @@ -618,7 +609,7 @@ CLIEngine.prototype = { */ prevConfig.config = config; - let eslintVersion = pkg.version; + const eslintVersion = pkg.version; prevConfig.hash = hash(eslintVersion + "_" + stringify(config)); } @@ -650,11 +641,11 @@ CLIEngine.prototype = { * the file has changed */ descriptor = fileCache.getFileDescriptor(filename); - let meta = descriptor.meta || {}; + const meta = descriptor.meta || {}; hashOfConfig = hashOfConfigFor(filename); - let changed = descriptor.changed || meta.hashOfConfig !== hashOfConfig; + const changed = descriptor.changed || meta.hashOfConfig !== hashOfConfig; if (!changed) { debug("Skipping file since hasn't changed: " + filename); @@ -676,7 +667,7 @@ CLIEngine.prototype = { debug("Processing " + filename); - let res = processFile(filename, configHelper, options); + const res = processFile(filename, configHelper, options); if (options.cache) { @@ -706,17 +697,18 @@ CLIEngine.prototype = { results.push(res); } - startTime = Date.now(); + const startTime = Date.now(); patterns = this.resolveFileGlobPatterns(patterns); - fileList = globUtil.listFilesToProcess(patterns, options); + const fileList = globUtil.listFilesToProcess(patterns, options); + fileList.forEach(function(fileInfo) { executeOnFile(fileInfo.filename, fileInfo.ignored); }); - stats = calculateStatsPerRun(results); + const stats = calculateStatsPerRun(results); if (options.cache) { @@ -742,8 +734,7 @@ CLIEngine.prototype = { */ executeOnText: function(text, filename, warnIgnored) { - let results = [], - stats, + const results = [], options = this.options, configHelper = new Config(options), ignoredPaths = new IgnoredPaths(options); @@ -761,7 +752,7 @@ CLIEngine.prototype = { results.push(processText(text, configHelper, filename, options.fix, options.allowInlineConfig)); } - stats = calculateStatsPerRun(results); + const stats = calculateStatsPerRun(results); return { results: results, @@ -778,7 +769,7 @@ CLIEngine.prototype = { * @returns {Object} A configuration object for the file. */ getConfigForFile: function(filePath) { - let configHelper = new Config(this.options); + const configHelper = new Config(this.options); return configHelper.getConfig(filePath); }, @@ -789,10 +780,9 @@ CLIEngine.prototype = { * @returns {boolean} Whether or not the given path is ignored. */ isPathIgnored: function(filePath) { - let ignoredPaths; - let resolvedPath = path.resolve(this.options.cwd, filePath); + const resolvedPath = path.resolve(this.options.cwd, filePath); + const ignoredPaths = new IgnoredPaths(this.options); - ignoredPaths = new IgnoredPaths(this.options); return ignoredPaths.contains(resolvedPath); }, diff --git a/lib/cli.js b/lib/cli.js index b8bbda4cae8..b70c99b08b6 100644 --- a/lib/cli.js +++ b/lib/cli.js @@ -15,22 +15,19 @@ // Requirements //------------------------------------------------------------------------------ -let fs = require("fs"), +const fs = require("fs"), path = require("path"), - - debug = require("debug"), - options = require("./options"), CLIEngine = require("./cli-engine"), mkdirp = require("mkdirp"), log = require("./logging"); +const debug = require("debug")("eslint:cli"); + //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -debug = debug("eslint:cli"); - /** * Translates the CLI options into the options expected by the CLIEngine. * @param {Object} cliOptions The CLI options to translate. @@ -70,9 +67,7 @@ function translateOptions(cliOptions) { * @private */ function printResults(engine, results, format, outputFile) { - let formatter, - output, - filePath; + let formatter; try { formatter = engine.getFormatter(format); @@ -81,11 +76,11 @@ function printResults(engine, results, format, outputFile) { return false; } - output = formatter(results); + const output = formatter(results); if (output) { if (outputFile) { - filePath = path.resolve(process.cwd(), outputFile); + const filePath = path.resolve(process.cwd(), outputFile); if (fs.existsSync(filePath) && fs.statSync(filePath).isDirectory()) { log.error("Cannot write to output file path, it is a directory: %s", outputFile); @@ -116,7 +111,7 @@ function printResults(engine, results, format, outputFile) { * Encapsulates all CLI behavior for eslint. Makes it easier to test as well as * for other Node.js programs to effectively run the CLI. */ -let cli = { +const cli = { /** * Executes the CLI based on an array of arguments that is passed in. @@ -126,11 +121,7 @@ let cli = { */ execute: function(args, text) { - let currentOptions, - files, - report, - engine, - tooManyWarnings; + let currentOptions; try { currentOptions = options.parse(args); @@ -139,7 +130,7 @@ let cli = { return 1; } - files = currentOptions._; + const files = currentOptions._; if (currentOptions.version) { // version from package.json @@ -159,7 +150,8 @@ let cli = { return 1; } - engine = new CLIEngine(translateOptions(currentOptions)); + const engine = new CLIEngine(translateOptions(currentOptions)); + if (currentOptions.printConfig) { if (files.length !== 1) { log.error("The --print-config option requires a " + @@ -172,13 +164,14 @@ let cli = { return 1; } - let fileConfig = engine.getConfigForFile(files[0]); + const fileConfig = engine.getConfigForFile(files[0]); log.info(JSON.stringify(fileConfig, null, " ")); return 0; } - report = text ? engine.executeOnText(text, currentOptions.stdinFilename, true) : engine.executeOnFiles(files); + const report = text ? engine.executeOnText(text, currentOptions.stdinFilename, true) : engine.executeOnFiles(files); + if (currentOptions.fix) { debug("Fix mode enabled - applying fixes"); CLIEngine.outputFixes(report); @@ -190,7 +183,7 @@ let cli = { } if (printResults(engine, report.results, currentOptions.format, currentOptions.outputFile)) { - tooManyWarnings = currentOptions.maxWarnings >= 0 && report.warningCount > currentOptions.maxWarnings; + const tooManyWarnings = currentOptions.maxWarnings >= 0 && report.warningCount > currentOptions.maxWarnings; if (!report.errorCount && tooManyWarnings) { log.error("ESLint found too many warnings (maximum: %s).", currentOptions.maxWarnings); diff --git a/lib/code-path-analysis/code-path-analyzer.js b/lib/code-path-analysis/code-path-analyzer.js index 00db3064dc4..2c596c47f02 100644 --- a/lib/code-path-analysis/code-path-analyzer.js +++ b/lib/code-path-analysis/code-path-analyzer.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("assert"), +const assert = require("assert"), CodePath = require("./code-path"), CodePathSegment = require("./code-path-segment"), IdGenerator = require("./id-generator"), @@ -38,7 +38,7 @@ function isCaseNode(node) { * @returns {boolean} `true` if the node is a test of a choice statement. */ function isForkingByTrueOrFalse(node) { - let parent = node.parent; + const parent = node.parent; switch (parent.type) { case "ConditionalExpression": @@ -83,7 +83,7 @@ function getBooleanValueIfSimpleConstant(node) { * @returns {boolean} `true` if the node is a reference. */ function isIdentifierReference(node) { - let parent = node.parent; + const parent = node.parent; switch (parent.type) { case "LabeledStatement": @@ -135,11 +135,11 @@ function isIdentifierReference(node) { * @returns {void} */ function forwardCurrentToHead(analyzer, node) { - let codePath = analyzer.codePath; - let state = CodePath.getState(codePath); - let currentSegments = state.currentSegments; - let headSegments = state.headSegments; - let end = Math.max(currentSegments.length, headSegments.length); + const codePath = analyzer.codePath; + const state = CodePath.getState(codePath); + const currentSegments = state.currentSegments; + const headSegments = state.headSegments; + const end = Math.max(currentSegments.length, headSegments.length); let i, currentSegment, headSegment; // Fires leaving events. @@ -191,11 +191,11 @@ function forwardCurrentToHead(analyzer, node) { * @returns {void} */ function leaveFromCurrentSegment(analyzer, node) { - let state = CodePath.getState(analyzer.codePath); - let currentSegments = state.currentSegments; + const state = CodePath.getState(analyzer.codePath); + const currentSegments = state.currentSegments; for (let i = 0; i < currentSegments.length; ++i) { - let currentSegment = currentSegments[i]; + const currentSegment = currentSegments[i]; debug.dump("onCodePathSegmentEnd " + currentSegment.id); if (currentSegment.reachable) { @@ -221,9 +221,9 @@ function leaveFromCurrentSegment(analyzer, node) { * @returns {void} */ function preprocess(analyzer, node) { - let codePath = analyzer.codePath; - let state = CodePath.getState(codePath); - let parent = node.parent; + const codePath = analyzer.codePath; + const state = CodePath.getState(codePath); + const parent = node.parent; switch (parent.type) { case "LogicalExpression": @@ -330,7 +330,7 @@ function preprocess(analyzer, node) { function processCodePathToEnter(analyzer, node) { let codePath = analyzer.codePath; let state = codePath && CodePath.getState(codePath); - let parent = node.parent; + const parent = node.parent; switch (node.type) { case "Program": @@ -419,8 +419,8 @@ function processCodePathToEnter(analyzer, node) { * @returns {void} */ function processCodePathToExit(analyzer, node) { - let codePath = analyzer.codePath; - let state = CodePath.getState(codePath); + const codePath = analyzer.codePath; + const state = CodePath.getState(codePath); let dontForward = false; switch (node.type) { diff --git a/lib/code-path-analysis/code-path-segment.js b/lib/code-path-analysis/code-path-segment.js index 544a9da2784..53e39175a7c 100644 --- a/lib/code-path-analysis/code-path-segment.js +++ b/lib/code-path-analysis/code-path-segment.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let debug = require("./debug-helpers"); +const debug = require("./debug-helpers"); //------------------------------------------------------------------------------ // Helpers @@ -22,11 +22,11 @@ let debug = require("./debug-helpers"); * @returns {CodePathSegment[]} The replaced array. */ function flattenUnusedSegments(segments) { - let done = Object.create(null); - let retv = []; + const done = Object.create(null); + const retv = []; for (let i = 0; i < segments.length; ++i) { - let segment = segments[i]; + const segment = segments[i]; // Ignores duplicated. if (done[segment.id]) { @@ -36,7 +36,7 @@ function flattenUnusedSegments(segments) { // Use previous segments if unused. if (!segment.internal.used) { for (let j = 0; j < segment.allPrevSegments.length; ++j) { - let prevSegment = segment.allPrevSegments[j]; + const prevSegment = segment.allPrevSegments[j]; if (!done[prevSegment.id]) { done[prevSegment.id] = true; @@ -175,7 +175,7 @@ CodePathSegment.newNext = function(id, allPrevSegments) { * @returns {CodePathSegment} The created segment. */ CodePathSegment.newUnreachable = function(id, allPrevSegments) { - let segment = new CodePathSegment(id, flattenUnusedSegments(allPrevSegments), false); + const segment = new CodePathSegment(id, flattenUnusedSegments(allPrevSegments), false); // In `if (a) return a; foo();` case, the unreachable segment preceded by // the return statement is not used but must not be remove. @@ -215,7 +215,7 @@ CodePathSegment.markUsed = function(segment) { if (segment.reachable) { for (i = 0; i < segment.allPrevSegments.length; ++i) { - let prevSegment = segment.allPrevSegments[i]; + const prevSegment = segment.allPrevSegments[i]; prevSegment.allNextSegments.push(segment); prevSegment.nextSegments.push(segment); diff --git a/lib/code-path-analysis/code-path-state.js b/lib/code-path-analysis/code-path-state.js index 7c3d4a35e62..bfa93ac6073 100644 --- a/lib/code-path-analysis/code-path-state.js +++ b/lib/code-path-analysis/code-path-state.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let CodePathSegment = require("./code-path-segment"), +const CodePathSegment = require("./code-path-segment"), ForkContext = require("./fork-context"); //------------------------------------------------------------------------------ @@ -31,7 +31,7 @@ let CodePathSegment = require("./code-path-segment"), */ function addToReturnedOrThrown(dest, others, all, segments) { for (let i = 0; i < segments.length; ++i) { - let segment = segments[i]; + const segment = segments[i]; dest.push(segment); if (others.indexOf(segment) === -1) { @@ -150,8 +150,8 @@ function remove(xs, x) { */ function removeConnection(prevSegments, nextSegments) { for (let i = 0; i < prevSegments.length; ++i) { - let prevSegment = prevSegments[i]; - let nextSegment = nextSegments[i]; + const prevSegment = prevSegments[i]; + const nextSegment = nextSegments[i]; remove(prevSegment.nextSegments, nextSegment); remove(prevSegment.allNextSegments, nextSegment); @@ -169,11 +169,11 @@ function removeConnection(prevSegments, nextSegments) { * @returns {void} */ function makeLooped(state, fromSegments, toSegments) { - let end = Math.min(fromSegments.length, toSegments.length); + const end = Math.min(fromSegments.length, toSegments.length); for (let i = 0; i < end; ++i) { - let fromSegment = fromSegments[i]; - let toSegment = toSegments[i]; + const fromSegment = fromSegments[i]; + const toSegment = toSegments[i]; if (toSegment.reachable) { fromSegment.nextSegments.push(toSegment); @@ -241,9 +241,9 @@ function CodePathState(idGenerator, onLooped) { this.initialSegment = this.forkContext.head[0]; // returnedSegments and thrownSegments push elements into finalSegments also. - let final = this.finalSegments = []; - let returned = this.returnedForkContext = []; - let thrown = this.thrownForkContext = []; + const final = this.finalSegments = []; + const returned = this.returnedForkContext = []; + const thrown = this.thrownForkContext = []; returned.add = addToReturnedOrThrown.bind(null, returned, thrown, final); thrown.add = addToReturnedOrThrown.bind(null, thrown, returned, final); @@ -266,7 +266,7 @@ CodePathState.prototype = { * @type {ForkContext} */ get parentForkContext() { - let current = this.forkContext; + const current = this.forkContext; return current && current.upper; }, @@ -292,7 +292,7 @@ CodePathState.prototype = { * @returns {ForkContext} The last context. */ popForkContext: function() { - let lastContext = this.forkContext; + const lastContext = this.forkContext; this.forkContext = lastContext.upper; this.forkContext.replaceHead(lastContext.makeNext(0, -1)); @@ -370,12 +370,12 @@ CodePathState.prototype = { * @returns {ChoiceContext} The popped context. */ popChoiceContext: function() { - let context = this.choiceContext; + const context = this.choiceContext; this.choiceContext = context.upper; - let forkContext = this.forkContext; - let headSegments = forkContext.head; + const forkContext = this.forkContext; + const headSegments = forkContext.head; switch (context.kind) { case "&&": @@ -396,7 +396,7 @@ CodePathState.prototype = { * test chunk. */ if (context.isForkingAsResult) { - let parentContext = this.choiceContext; + const parentContext = this.choiceContext; parentContext.trueForkContext.addAll(context.trueForkContext); parentContext.falseForkContext.addAll(context.falseForkContext); @@ -443,7 +443,7 @@ CodePathState.prototype = { } // Merges all paths. - let prevForkContext = context.trueForkContext; + const prevForkContext = context.trueForkContext; prevForkContext.addAll(context.falseForkContext); forkContext.replaceHead(prevForkContext.makeNext(0, -1)); @@ -458,8 +458,8 @@ CodePathState.prototype = { * @returns {void} */ makeLogicalRight: function() { - let context = this.choiceContext; - let forkContext = this.forkContext; + const context = this.choiceContext; + const forkContext = this.forkContext; if (context.processed) { @@ -467,7 +467,7 @@ CodePathState.prototype = { * This got segments already from the child choice context. * Creates the next path from own true/false fork context. */ - let prevForkContext = + const prevForkContext = context.kind === "&&" ? context.trueForkContext : /* kind === "||" */ context.falseForkContext; @@ -502,8 +502,8 @@ CodePathState.prototype = { * @returns {void} */ makeIfConsequent: function() { - let context = this.choiceContext; - let forkContext = this.forkContext; + const context = this.choiceContext; + const forkContext = this.forkContext; /* * If any result were not transferred from child contexts, @@ -529,8 +529,8 @@ CodePathState.prototype = { * @returns {void} */ makeIfAlternate: function() { - let context = this.choiceContext; - let forkContext = this.forkContext; + const context = this.choiceContext; + const forkContext = this.forkContext; /* * The head segments are the path of the `if` block. @@ -583,12 +583,12 @@ CodePathState.prototype = { * @returns {void} */ popSwitchContext: function() { - let context = this.switchContext; + const context = this.switchContext; this.switchContext = context.upper; - let forkContext = this.forkContext; - let brokenForkContext = this.popBreakContext().brokenForkContext; + const forkContext = this.forkContext; + const brokenForkContext = this.popBreakContext().brokenForkContext; if (context.countForks === 0) { @@ -605,10 +605,10 @@ CodePathState.prototype = { return; } - let lastSegments = forkContext.head; + const lastSegments = forkContext.head; this.forkBypassPath(); - let lastCaseSegments = forkContext.head; + const lastCaseSegments = forkContext.head; /* * `brokenForkContext` is used to make the next segment. @@ -659,7 +659,7 @@ CodePathState.prototype = { * @returns {void} */ makeSwitchCaseBody: function(isEmpty, isDefault) { - let context = this.switchContext; + const context = this.switchContext; if (!context.hasCase) { return; @@ -670,8 +670,8 @@ CodePathState.prototype = { * The parent fork context has two segments. * Those are from the current case and the body of the previous case. */ - let parentForkContext = this.forkContext; - let forkContext = this.pushForkContext(); + const parentForkContext = this.forkContext; + const forkContext = this.pushForkContext(); forkContext.add(parentForkContext.makeNext(0, -1)); @@ -731,7 +731,7 @@ CodePathState.prototype = { * @returns {void} */ popTryContext: function() { - let context = this.tryContext; + const context = this.tryContext; this.tryContext = context.upper; @@ -747,19 +747,19 @@ CodePathState.prototype = { * block. */ - let returned = context.returnedForkContext; - let thrown = context.thrownForkContext; + const returned = context.returnedForkContext; + const thrown = context.thrownForkContext; if (returned.empty && thrown.empty) { return; } // Separate head to normal paths and leaving paths. - let headSegments = this.forkContext.head; + const headSegments = this.forkContext.head; this.forkContext = this.forkContext.upper; - let normalSegments = headSegments.slice(0, headSegments.length / 2 | 0); - let leavingSegments = headSegments.slice(headSegments.length / 2 | 0); + const normalSegments = headSegments.slice(0, headSegments.length / 2 | 0); + const leavingSegments = headSegments.slice(headSegments.length / 2 | 0); // Forwards the leaving path to upper contexts. if (!returned.empty) { @@ -785,9 +785,9 @@ CodePathState.prototype = { * @returns {void} */ makeCatchBlock: function() { - let context = this.tryContext; - let forkContext = this.forkContext; - let thrown = context.thrownForkContext; + const context = this.tryContext; + const forkContext = this.forkContext; + const thrown = context.thrownForkContext; // Update state. context.position = "catch"; @@ -796,7 +796,7 @@ CodePathState.prototype = { // Merge thrown paths. thrown.add(forkContext.head); - let thrownSegments = thrown.makeNext(0, -1); + const thrownSegments = thrown.makeNext(0, -1); // Fork to a bypass and the merged thrown path. this.pushForkContext(); @@ -814,11 +814,11 @@ CodePathState.prototype = { * @returns {void} */ makeFinallyBlock: function() { - let context = this.tryContext; + const context = this.tryContext; let forkContext = this.forkContext; - let returned = context.returnedForkContext; - let thrown = context.thrownForkContext; - let headOfLeavingSegments = forkContext.head; + const returned = context.returnedForkContext; + const thrown = context.thrownForkContext; + const headOfLeavingSegments = forkContext.head; // Update state. if (context.position === "catch") { @@ -843,11 +843,11 @@ CodePathState.prototype = { * Create a parallel segment from merging returned and thrown. * This segment will leave at the end of this finally block. */ - let segments = forkContext.makeNext(-1, -1); + const segments = forkContext.makeNext(-1, -1); let j; for (let i = 0; i < forkContext.count; ++i) { - let prevSegsOfLeavingSegment = [headOfLeavingSegments[i]]; + const prevSegsOfLeavingSegment = [headOfLeavingSegments[i]]; for (j = 0; j < returned.segmentsList.length; ++j) { prevSegsOfLeavingSegment.push(returned.segmentsList[j][i]); @@ -872,13 +872,13 @@ CodePathState.prototype = { * @returns {void} */ makeFirstThrowablePathInTryBlock: function() { - let forkContext = this.forkContext; + const forkContext = this.forkContext; if (!forkContext.reachable) { return; } - let context = getThrowContext(this); + const context = getThrowContext(this); if (context === this || context.position !== "try" || @@ -905,8 +905,8 @@ CodePathState.prototype = { * @returns {void} */ pushLoopContext: function(type, label) { - let forkContext = this.forkContext; - let breakContext = this.pushBreakContext(true, label); + const forkContext = this.forkContext; + const breakContext = this.pushBreakContext(true, label); switch (type) { case "WhileStatement": @@ -977,12 +977,12 @@ CodePathState.prototype = { * @returns {void} */ popLoopContext: function() { - let context = this.loopContext; + const context = this.loopContext; this.loopContext = context.upper; - let forkContext = this.forkContext; - let brokenForkContext = this.popBreakContext().brokenForkContext; + const forkContext = this.forkContext; + const brokenForkContext = this.popBreakContext().brokenForkContext; let choiceContext; // Creates a looped path. @@ -1048,9 +1048,9 @@ CodePathState.prototype = { * @returns {void} */ makeWhileTest: function(test) { - let context = this.loopContext; - let forkContext = this.forkContext; - let testSegments = forkContext.makeNext(0, -1); + const context = this.loopContext; + const forkContext = this.forkContext; + const testSegments = forkContext.makeNext(0, -1); // Update state. context.test = test; @@ -1064,9 +1064,9 @@ CodePathState.prototype = { * @returns {void} */ makeWhileBody: function() { - let context = this.loopContext; - let choiceContext = this.choiceContext; - let forkContext = this.forkContext; + const context = this.loopContext; + const choiceContext = this.choiceContext; + const forkContext = this.forkContext; if (!choiceContext.processed) { choiceContext.trueForkContext.add(forkContext.head); @@ -1086,9 +1086,9 @@ CodePathState.prototype = { * @returns {void} */ makeDoWhileBody: function() { - let context = this.loopContext; - let forkContext = this.forkContext; - let bodySegments = forkContext.makeNext(-1, -1); + const context = this.loopContext; + const forkContext = this.forkContext; + const bodySegments = forkContext.makeNext(-1, -1); // Update state. context.entrySegments = bodySegments; @@ -1102,15 +1102,15 @@ CodePathState.prototype = { * @returns {void} */ makeDoWhileTest: function(test) { - let context = this.loopContext; - let forkContext = this.forkContext; + const context = this.loopContext; + const forkContext = this.forkContext; context.test = test; // Creates paths of `continue` statements. if (!context.continueForkContext.empty) { context.continueForkContext.add(forkContext.head); - let testSegments = context.continueForkContext.makeNext(0, -1); + const testSegments = context.continueForkContext.makeNext(0, -1); forkContext.replaceHead(testSegments); } @@ -1123,10 +1123,10 @@ CodePathState.prototype = { * @returns {void} */ makeForTest: function(test) { - let context = this.loopContext; - let forkContext = this.forkContext; - let endOfInitSegments = forkContext.head; - let testSegments = forkContext.makeNext(-1, -1); + const context = this.loopContext; + const forkContext = this.forkContext; + const endOfInitSegments = forkContext.head; + const testSegments = forkContext.makeNext(-1, -1); // Update state. context.test = test; @@ -1141,9 +1141,9 @@ CodePathState.prototype = { * @returns {void} */ makeForUpdate: function() { - let context = this.loopContext; - let choiceContext = this.choiceContext; - let forkContext = this.forkContext; + const context = this.loopContext; + const choiceContext = this.choiceContext; + const forkContext = this.forkContext; // Make the next paths of the test. if (context.testSegments) { @@ -1156,7 +1156,7 @@ CodePathState.prototype = { } // Update state. - let updateSegments = forkContext.makeDisconnected(-1, -1); + const updateSegments = forkContext.makeDisconnected(-1, -1); context.continueDestSegments = context.updateSegments = updateSegments; forkContext.replaceHead(updateSegments); @@ -1168,9 +1168,9 @@ CodePathState.prototype = { * @returns {void} */ makeForBody: function() { - let context = this.loopContext; - let choiceContext = this.choiceContext; - let forkContext = this.forkContext; + const context = this.loopContext; + const choiceContext = this.choiceContext; + const forkContext = this.forkContext; // Update state. if (context.updateSegments) { @@ -1200,7 +1200,7 @@ CodePathState.prototype = { * If there is not the `test` part, the `body` path comes from the * `init` part and the `update` part. */ - let prevForkContext = ForkContext.newEmpty(forkContext); + const prevForkContext = ForkContext.newEmpty(forkContext); prevForkContext.add(context.endOfInitSegments); if (context.endOfUpdateSegments) { @@ -1220,9 +1220,9 @@ CodePathState.prototype = { * @returns {void} */ makeForInOfLeft: function() { - let context = this.loopContext; - let forkContext = this.forkContext; - let leftSegments = forkContext.makeDisconnected(-1, -1); + const context = this.loopContext; + const forkContext = this.forkContext; + const leftSegments = forkContext.makeDisconnected(-1, -1); // Update state. context.prevSegments = forkContext.head; @@ -1237,12 +1237,12 @@ CodePathState.prototype = { * @returns {void} */ makeForInOfRight: function() { - let context = this.loopContext; - let forkContext = this.forkContext; - let temp = ForkContext.newEmpty(forkContext); + const context = this.loopContext; + const forkContext = this.forkContext; + const temp = ForkContext.newEmpty(forkContext); temp.add(context.prevSegments); - let rightSegments = temp.makeNext(-1, -1); + const rightSegments = temp.makeNext(-1, -1); // Update state. context.endOfLeftSegments = forkContext.head; @@ -1256,12 +1256,12 @@ CodePathState.prototype = { * @returns {void} */ makeForInOfBody: function() { - let context = this.loopContext; - let forkContext = this.forkContext; - let temp = ForkContext.newEmpty(forkContext); + const context = this.loopContext; + const forkContext = this.forkContext; + const temp = ForkContext.newEmpty(forkContext); temp.add(context.endOfLeftSegments); - let bodySegments = temp.makeNext(-1, -1); + const bodySegments = temp.makeNext(-1, -1); // Make a path: `right` -> `left`. makeLooped(this, forkContext.head, context.leftSegments); @@ -1299,14 +1299,14 @@ CodePathState.prototype = { * @returns {Object} The removed context. */ popBreakContext: function() { - let context = this.breakContext; - let forkContext = this.forkContext; + const context = this.breakContext; + const forkContext = this.forkContext; this.breakContext = context.upper; // Process this context here for other than switches and loops. if (!context.breakable) { - let brokenForkContext = context.brokenForkContext; + const brokenForkContext = context.brokenForkContext; if (!brokenForkContext.empty) { brokenForkContext.add(forkContext.head); @@ -1327,13 +1327,13 @@ CodePathState.prototype = { * @returns {void} */ makeBreak: function(label) { - let forkContext = this.forkContext; + const forkContext = this.forkContext; if (!forkContext.reachable) { return; } - let context = getBreakContext(this, label); + const context = getBreakContext(this, label); /* istanbul ignore else: foolproof (syntax error) */ if (context) { @@ -1353,13 +1353,13 @@ CodePathState.prototype = { * @returns {void} */ makeContinue: function(label) { - let forkContext = this.forkContext; + const forkContext = this.forkContext; if (!forkContext.reachable) { return; } - let context = getContinueContext(this, label); + const context = getContinueContext(this, label); /* istanbul ignore else: foolproof (syntax error) */ if (context) { @@ -1388,7 +1388,7 @@ CodePathState.prototype = { * @returns {void} */ makeReturn: function() { - let forkContext = this.forkContext; + const forkContext = this.forkContext; if (forkContext.reachable) { getReturnContext(this).returnedForkContext.add(forkContext.head); @@ -1405,7 +1405,7 @@ CodePathState.prototype = { * @returns {void} */ makeThrow: function() { - let forkContext = this.forkContext; + const forkContext = this.forkContext; if (forkContext.reachable) { getThrowContext(this).thrownForkContext.add(forkContext.head); @@ -1418,7 +1418,7 @@ CodePathState.prototype = { * @returns {void} */ makeFinal: function() { - let segments = this.currentSegments; + const segments = this.currentSegments; if (segments.length > 0 && segments[0].reachable) { this.returnedForkContext.add(segments); diff --git a/lib/code-path-analysis/code-path.js b/lib/code-path-analysis/code-path.js index 3fdc99afc3f..cdafc89bbcb 100644 --- a/lib/code-path-analysis/code-path.js +++ b/lib/code-path-analysis/code-path.js @@ -9,8 +9,8 @@ // Requirements //------------------------------------------------------------------------------ -let CodePathState = require("./code-path-state"); -let IdGenerator = require("./id-generator"); +const CodePathState = require("./code-path-state"); +const IdGenerator = require("./id-generator"); //------------------------------------------------------------------------------ // Public Interface @@ -130,18 +130,18 @@ CodePath.prototype = { } options = options || {}; - let startSegment = options.first || this.internal.initialSegment; - let lastSegment = options.last; + const startSegment = options.first || this.internal.initialSegment; + const lastSegment = options.last; let item = null; let index = 0; let end = 0; let segment = null; - let visited = Object.create(null); - let stack = [[startSegment, 0]]; + const visited = Object.create(null); + const stack = [[startSegment, 0]]; let skippedSegment = null; let broken = false; - let controller = { + const controller = { skip: function() { if (stack.length <= 1) { broken = true; diff --git a/lib/code-path-analysis/debug-helpers.js b/lib/code-path-analysis/debug-helpers.js index ea31a1a9d73..6c096867bff 100644 --- a/lib/code-path-analysis/debug-helpers.js +++ b/lib/code-path-analysis/debug-helpers.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let debug = require("debug")("eslint:code-path"); +const debug = require("debug")("eslint:code-path"); //------------------------------------------------------------------------------ // Helpers @@ -55,7 +55,7 @@ module.exports = { */ dumpState: !debug.enabled ? debug : /* istanbul ignore next */ function(node, state, leaving) { for (let i = 0; i < state.currentSegments.length; ++i) { - let segInternal = state.currentSegments[i].internal; + const segInternal = state.currentSegments[i].internal; if (leaving) { segInternal.exitNodes.push(node); @@ -93,11 +93,11 @@ module.exports = { text += "thrown[label=\"✘\",shape=circle,width=0.3,height=0.3,fixedsize];\n"; } - let traceMap = Object.create(null); - let arrows = this.makeDotArrows(codePath, traceMap); + const traceMap = Object.create(null); + const arrows = this.makeDotArrows(codePath, traceMap); - for (let id in traceMap) { // eslint-disable-line guard-for-in - let segment = traceMap[id]; + for (const id in traceMap) { // eslint-disable-line guard-for-in + const segment = traceMap[id]; text += id + "["; @@ -144,22 +144,22 @@ module.exports = { * @returns {string} A DOT code of the code path. */ makeDotArrows: function(codePath, traceMap) { - let stack = [[codePath.initialSegment, 0]]; - let done = traceMap || Object.create(null); + const stack = [[codePath.initialSegment, 0]]; + const done = traceMap || Object.create(null); let lastId = codePath.initialSegment.id; let text = "initial->" + codePath.initialSegment.id; while (stack.length > 0) { - let item = stack.pop(); - let segment = item[0]; - let index = item[1]; + const item = stack.pop(); + const segment = item[0]; + const index = item[1]; if (done[segment.id] && index === 0) { continue; } done[segment.id] = segment; - let nextSegment = segment.allNextSegments[index]; + const nextSegment = segment.allNextSegments[index]; if (!nextSegment) { continue; diff --git a/lib/code-path-analysis/fork-context.js b/lib/code-path-analysis/fork-context.js index 93e59e7a028..d728f11cbe1 100644 --- a/lib/code-path-analysis/fork-context.js +++ b/lib/code-path-analysis/fork-context.js @@ -13,7 +13,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("assert"), +const assert = require("assert"), CodePathSegment = require("./code-path-segment"); //------------------------------------------------------------------------------ @@ -44,7 +44,7 @@ function isReachable(segment) { * @returns {CodePathSegment[]} New segments. */ function makeSegments(context, begin, end, create) { - let list = context.segmentsList; + const list = context.segmentsList; if (begin < 0) { begin = list.length + begin; @@ -53,10 +53,10 @@ function makeSegments(context, begin, end, create) { end = list.length + end; } - let segments = []; + const segments = []; for (let i = 0; i < context.count; ++i) { - let allPrevSegments = []; + const allPrevSegments = []; for (let j = begin; j <= end; ++j) { allPrevSegments.push(list[j][i]); @@ -80,7 +80,7 @@ function makeSegments(context, begin, end, create) { */ function mergeExtraSegments(context, segments) { while (segments.length > context.count) { - let merged = []; + const merged = []; for (let i = 0, length = segments.length / 2 | 0; i < length; ++i) { merged.push(CodePathSegment.newNext( @@ -120,7 +120,7 @@ ForkContext.prototype = { * @type {CodePathSegment[]} */ get head() { - let list = this.segmentsList; + const list = this.segmentsList; return list.length === 0 ? [] : list[list.length - 1]; }, @@ -138,7 +138,7 @@ ForkContext.prototype = { * @type {boolean} */ get reachable() { - let segments = this.head; + const segments = this.head; return segments.length > 0 && segments.some(isReachable); }, @@ -214,7 +214,7 @@ ForkContext.prototype = { addAll: function(context) { assert(context.count === this.count); - let source = context.segmentsList; + const source = context.segmentsList; for (let i = 0; i < source.length; ++i) { this.segmentsList.push(source[i]); @@ -238,7 +238,7 @@ ForkContext.prototype = { * @returns {ForkContext} New fork context. */ ForkContext.newRoot = function(idGenerator) { - let context = new ForkContext(idGenerator, null, 1); + const context = new ForkContext(idGenerator, null, 1); context.add([CodePathSegment.newRoot(idGenerator.next())]); diff --git a/lib/config.js b/lib/config.js index 8c8533a2283..88c96ec3d40 100644 --- a/lib/config.js +++ b/lib/config.js @@ -9,28 +9,27 @@ // Requirements //------------------------------------------------------------------------------ -let path = require("path"), +const path = require("path"), ConfigOps = require("./config/config-ops"), ConfigFile = require("./config/config-file"), Plugins = require("./config/plugins"), FileFinder = require("./file-finder"), - debug = require("debug"), userHome = require("user-home"), isResolvable = require("is-resolvable"), pathIsInside = require("path-is-inside"); +const debug = require("debug")("eslint:config"); + //------------------------------------------------------------------------------ // Constants //------------------------------------------------------------------------------ -let PERSONAL_CONFIG_DIR = userHome || null; +const PERSONAL_CONFIG_DIR = userHome || null; //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -debug = debug("eslint:config"); - /** * Check if item is an javascript object * @param {*} item object to check for @@ -75,11 +74,10 @@ function loadConfig(configToLoad) { * @private */ function getPersonalConfig() { - let config, - filename; + let config; if (PERSONAL_CONFIG_DIR) { - filename = ConfigFile.getFilenameForDirectory(PERSONAL_CONFIG_DIR); + const filename = ConfigFile.getFilenameForDirectory(PERSONAL_CONFIG_DIR); if (filename) { debug("Using personal config"); @@ -106,20 +104,16 @@ function hasRules(options) { * @returns {Object} The local config object, or an empty object if there is no local config. */ function getLocalConfig(thisConfig, directory) { + const localConfigFiles = thisConfig.findLocalConfigFiles(directory), + numFiles = localConfigFiles.length, + projectConfigPath = ConfigFile.getFilenameForDirectory(thisConfig.options.cwd); let found, - i, - localConfig, - localConfigFile, config = {}, - localConfigFiles = thisConfig.findLocalConfigFiles(directory), - numFiles = localConfigFiles.length, - rootPath, - projectConfigPath = ConfigFile.getFilenameForDirectory(thisConfig.options.cwd), - personalConfig; + rootPath; - for (i = 0; i < numFiles; i++) { + for (let i = 0; i < numFiles; i++) { - localConfigFile = localConfigFiles[i]; + const localConfigFile = localConfigFiles[i]; // Don't consider the personal config file in the home directory, // except if the home directory is the same as the current working directory @@ -133,7 +127,7 @@ function getLocalConfig(thisConfig, directory) { } debug("Loading " + localConfigFile); - localConfig = loadConfig(localConfigFile); + const localConfig = loadConfig(localConfigFile); // Don't consider a local config file found if the config is null if (!localConfig) { @@ -158,14 +152,14 @@ function getLocalConfig(thisConfig, directory) { * - Otherwise, if no rules were manually passed in, throw and error. * - Note: This function is not called if useEslintrc is false. */ - personalConfig = getPersonalConfig(); + const personalConfig = getPersonalConfig(); if (personalConfig) { config = ConfigOps.merge(config, personalConfig); } else if (!hasRules(thisConfig.options) && !thisConfig.options.baseConfig) { // No config file, no manual configuration, and no rules, so error. - let noConfigError = new Error("No ESLint configuration found."); + const noConfigError = new Error("No ESLint configuration found."); noConfigError.messageTemplate = "no-config-found"; noConfigError.messageData = { @@ -191,8 +185,6 @@ function getLocalConfig(thisConfig, directory) { * @param {Object} options Options to be passed in */ function Config(options) { - let useConfig; - options = options || {}; this.ignore = options.ignore; @@ -217,14 +209,15 @@ function Config(options) { * If user declares "foo", convert to "foo:false". */ this.globals = (options.globals || []).reduce(function(globals, def) { - let parts = def.split(":"); + const parts = def.split(":"); globals[parts[0]] = (parts.length > 1 && parts[1] === "true"); return globals; }, {}); - useConfig = options.configFile; + const useConfig = options.configFile; + this.options = options; if (useConfig) { @@ -244,9 +237,9 @@ function Config(options) { * @returns {Object} config object */ Config.prototype.getConfig = function(filePath) { + const directory = filePath ? path.dirname(filePath) : this.options.cwd; let config, - userConfig, - directory = filePath ? path.dirname(filePath) : this.options.cwd; + userConfig; debug("Constructing config for " + (filePath ? filePath : "text")); diff --git a/lib/config/autoconfig.js b/lib/config/autoconfig.js index 2cd753e95dd..0b0977c9502 100644 --- a/lib/config/autoconfig.js +++ b/lib/config/autoconfig.js @@ -9,26 +9,25 @@ // Requirements //------------------------------------------------------------------------------ -let lodash = require("lodash"), - debug = require("debug"), +const lodash = require("lodash"), eslint = require("../eslint"), configRule = require("./config-rule"), ConfigOps = require("./config-ops"), recConfig = require("../../conf/eslint.json"); +const debug = require("debug")("eslint:autoconfig"); + //------------------------------------------------------------------------------ // Data //------------------------------------------------------------------------------ -let MAX_CONFIG_COMBINATIONS = 17, // 16 combinations + 1 for severity only +const MAX_CONFIG_COMBINATIONS = 17, // 16 combinations + 1 for severity only RECOMMENDED_CONFIG_NAME = "eslint:recommended"; //------------------------------------------------------------------------------ // Private //------------------------------------------------------------------------------ -debug = debug("eslint:autoconfig"); - /** * Information about a rule configuration, in the context of a Registry. * @@ -89,7 +88,7 @@ Registry.prototype = { * @returns {void} */ populateFromCoreRules: function() { - let rulesConfig = configRule.createCoreRuleConfigs(); + const rulesConfig = configRule.createCoreRuleConfigs(); this.rules = makeRegistryItems(rulesConfig); }, @@ -109,8 +108,8 @@ Registry.prototype = { * @returns {Object[]} "rules" configurations to use for linting */ buildRuleSets: function() { - let idx = 0, - ruleIds = Object.keys(this.rules), + let idx = 0; + const ruleIds = Object.keys(this.rules), ruleSets = []; /** @@ -122,7 +121,7 @@ Registry.prototype = { * @param {string} rule The ruleId to add. * @returns {void} */ - let addRuleToRuleSet = function(rule) { + const addRuleToRuleSet = function(rule) { /* * This check ensures that there is a rule configuration and that @@ -130,7 +129,7 @@ Registry.prototype = { * If it has too many configs, we will only use the most basic of * the possible configurations. */ - let hasFewCombos = (this.rules[rule].length <= MAX_CONFIG_COMBINATIONS); + const hasFewCombos = (this.rules[rule].length <= MAX_CONFIG_COMBINATIONS); if (this.rules[rule][idx] && (hasFewCombos || this.rules[rule][idx].specificity <= 2)) { @@ -170,12 +169,12 @@ Registry.prototype = { * @returns {void} */ stripFailingConfigs: function() { - let ruleIds = Object.keys(this.rules), + const ruleIds = Object.keys(this.rules), newRegistry = new Registry(); newRegistry.rules = lodash.assign({}, this.rules); ruleIds.forEach(function(ruleId) { - let errorFreeItems = newRegistry.rules[ruleId].filter(function(registryItem) { + const errorFreeItems = newRegistry.rules[ruleId].filter(function(registryItem) { return (registryItem.errorCount === 0); }); @@ -195,7 +194,7 @@ Registry.prototype = { * @returns {void} */ stripExtraConfigs: function() { - let ruleIds = Object.keys(this.rules), + const ruleIds = Object.keys(this.rules), newRegistry = new Registry(); newRegistry.rules = lodash.assign({}, this.rules); @@ -216,11 +215,11 @@ Registry.prototype = { * @returns {Registry} A registry of failing rules. */ getFailingRulesRegistry: function() { - let ruleIds = Object.keys(this.rules), + const ruleIds = Object.keys(this.rules), failingRegistry = new Registry(); ruleIds.forEach(function(ruleId) { - let failingConfigs = this.rules[ruleId].filter(function(registryItem) { + const failingConfigs = this.rules[ruleId].filter(function(registryItem) { return (registryItem.errorCount > 0); }); @@ -239,7 +238,7 @@ Registry.prototype = { * @returns {Object} An eslint config with rules section populated */ createConfig: function() { - let ruleIds = Object.keys(this.rules), + const ruleIds = Object.keys(this.rules), config = {rules: {}}; ruleIds.forEach(function(ruleId) { @@ -258,7 +257,7 @@ Registry.prototype = { * @returns {Registry} A registry of rules */ filterBySpecificity: function(specificity) { - let ruleIds = Object.keys(this.rules), + const ruleIds = Object.keys(this.rules), newRegistry = new Registry(); newRegistry.rules = lodash.assign({}, this.rules); @@ -280,25 +279,20 @@ Registry.prototype = { * @returns {Registry} New registry with errorCount populated */ lintSourceCode: function(sourceCodes, config, cb) { - let totalFilesLinting, - lintConfig, - ruleSets, - ruleSetIdx, - filenames, + let ruleSetIdx, lintedRegistry; lintedRegistry = new Registry(); lintedRegistry.rules = lodash.assign({}, this.rules); - ruleSets = lintedRegistry.buildRuleSets(); + const ruleSets = lintedRegistry.buildRuleSets(); lintedRegistry = lintedRegistry.stripExtraConfigs(); debug("Linting with all possible rule combinations"); - filenames = Object.keys(sourceCodes); - - totalFilesLinting = filenames.length * ruleSets.length; + const filenames = Object.keys(sourceCodes); + const totalFilesLinting = filenames.length * ruleSets.length; filenames.forEach(function(filename) { debug("Linting file: " + filename); @@ -306,8 +300,8 @@ Registry.prototype = { ruleSetIdx = 0; ruleSets.forEach(function(ruleSet) { - lintConfig = lodash.assign({}, config, {rules: ruleSet}); - let lintResults = eslint.verify(sourceCodes[filename], lintConfig); + const lintConfig = lodash.assign({}, config, {rules: ruleSet}); + const lintResults = eslint.verify(sourceCodes[filename], lintConfig); lintResults.forEach(function(result) { @@ -344,11 +338,11 @@ Registry.prototype = { * @returns {Object} config object using `"extends": "eslint:recommended"` */ function extendFromRecommended(config) { - let newConfig = lodash.assign({}, config); + const newConfig = lodash.assign({}, config); ConfigOps.normalizeToStrings(newConfig); - let recRules = Object.keys(recConfig.rules).filter(function(ruleId) { + const recRules = Object.keys(recConfig.rules).filter(function(ruleId) { return ConfigOps.isErrorSeverity(recConfig.rules[ruleId]); }); diff --git a/lib/config/config-file.js b/lib/config/config-file.js index 9120c12f3c4..dcc362ad543 100644 --- a/lib/config/config-file.js +++ b/lib/config/config-file.js @@ -11,8 +11,7 @@ // Requirements //------------------------------------------------------------------------------ -let debug = require("debug"), - fs = require("fs"), +const fs = require("fs"), path = require("path"), ConfigOps = require("./config-ops"), validator = require("./config-validator"), @@ -26,6 +25,7 @@ let debug = require("debug"), defaultOptions = require("../../conf/eslint.json"), requireUncached = require("require-uncached"); +const debug = require("debug")("eslint:config-file"); //------------------------------------------------------------------------------ // Helpers @@ -48,7 +48,7 @@ function sortByKey(a, b) { // Private //------------------------------------------------------------------------------ -let CONFIG_FILES = [ +const CONFIG_FILES = [ ".eslintrc.js", ".eslintrc.yaml", ".eslintrc.yml", @@ -57,9 +57,7 @@ let CONFIG_FILES = [ "package.json" ]; -let resolver = new ModuleResolver(); - -debug = debug("eslint:config-file"); +const resolver = new ModuleResolver(); /** * Convenience wrapper for synchronously reading file contents. @@ -94,7 +92,7 @@ function loadYAMLConfigFile(filePath) { debug("Loading YAML config file: " + filePath); // lazy load YAML to improve performance when not used - let yaml = require("js-yaml"); + const yaml = require("js-yaml"); try { @@ -137,7 +135,7 @@ function loadLegacyConfigFile(filePath) { debug("Loading config file: " + filePath); // lazy load YAML to improve performance when not used - let yaml = require("js-yaml"); + const yaml = require("js-yaml"); try { return yaml.safeLoad(stripComments(readFile(filePath))) || /* istanbul ignore next */ {}; @@ -192,8 +190,8 @@ function loadPackageJSONConfigFile(filePath) { * @private */ function loadConfigFile(file) { - let config, - filePath = file.filePath; + const filePath = file.filePath; + let config; switch (path.extname(filePath)) { case ".js": @@ -236,7 +234,7 @@ function loadConfigFile(file) { function writeJSONConfigFile(config, filePath) { debug("Writing JSON config file: " + filePath); - let content = stringify(config, {cmp: sortByKey, space: 4}); + const content = stringify(config, {cmp: sortByKey, space: 4}); fs.writeFileSync(filePath, content, "utf8"); } @@ -252,9 +250,9 @@ function writeYAMLConfigFile(config, filePath) { debug("Writing YAML config file: " + filePath); // lazy load YAML to improve performance when not used - let yaml = require("js-yaml"); + const yaml = require("js-yaml"); - let content = yaml.safeDump(config, {sortKeys: true}); + const content = yaml.safeDump(config, {sortKeys: true}); fs.writeFileSync(filePath, content, "utf8"); } @@ -269,7 +267,7 @@ function writeYAMLConfigFile(config, filePath) { function writeJSConfigFile(config, filePath) { debug("Writing JS config file: " + filePath); - let content = "module.exports = " + stringify(config, {cmp: sortByKey, space: 4}) + ";"; + const content = "module.exports = " + stringify(config, {cmp: sortByKey, space: 4}) + ";"; fs.writeFileSync(filePath, content, "utf8"); } @@ -313,7 +311,7 @@ function write(config, filePath) { function getBaseDir(configFilePath) { // calculates the path of the project including ESLint as dependency - let projectPath = path.resolve(__dirname, "../../../"); + const projectPath = path.resolve(__dirname, "../../../"); if (configFilePath && pathIsInside(configFilePath, projectPath)) { @@ -336,7 +334,7 @@ function getBaseDir(configFilePath) { * @private */ function getLookupPath(configFilePath) { - let basedir = getBaseDir(configFilePath); + const basedir = getBaseDir(configFilePath); return path.join(basedir, "node_modules"); } @@ -431,7 +429,7 @@ function normalizePackageName(name, prefix) { * it's a scoped package * package name is "eslint-config", or just a username */ - let scopedPackageShortcutRegex = new RegExp("^(@[^\/]+)(?:\/(?:" + prefix + ")?)?$"), + const scopedPackageShortcutRegex = new RegExp("^(@[^\/]+)(?:\/(?:" + prefix + ")?)?$"), scopedPackageNameRegex = new RegExp("^" + prefix + "(-|$)"); if (scopedPackageShortcutRegex.test(name)) { @@ -466,8 +464,8 @@ function resolve(filePath, relativeTo) { let normalizedPackageName; if (filePath.indexOf("plugin:") === 0) { - let packagePath = filePath.substr(7, filePath.lastIndexOf("/") - 7); - let configName = filePath.substr(filePath.lastIndexOf("/") + 1, filePath.length - filePath.lastIndexOf("/") - 1); + const packagePath = filePath.substr(7, filePath.lastIndexOf("/") - 7); + const configName = filePath.substr(filePath.lastIndexOf("/") + 1, filePath.length - filePath.lastIndexOf("/") - 1); normalizedPackageName = normalizePackageName(packagePath, "eslint-plugin"); debug("Attempting to resolve " + normalizedPackageName); @@ -493,10 +491,10 @@ function resolve(filePath, relativeTo) { * @private */ function load(filePath, applyEnvironments, relativeTo) { - let resolvedPath = resolve(filePath, relativeTo), + const resolvedPath = resolve(filePath, relativeTo), dirname = path.dirname(resolvedPath.filePath), - lookupPath = getLookupPath(dirname), - config = loadConfigFile(resolvedPath); + lookupPath = getLookupPath(dirname); + let config = loadConfigFile(resolvedPath); if (config) { @@ -564,11 +562,9 @@ module.exports = { * or null if there is no configuration file in the directory. */ getFilenameForDirectory: function(directory) { - - let filename; - for (let i = 0, len = CONFIG_FILES.length; i < len; i++) { - filename = path.join(directory, CONFIG_FILES[i]); + const filename = path.join(directory, CONFIG_FILES[i]); + if (fs.existsSync(filename)) { return filename; } diff --git a/lib/config/config-initializer.js b/lib/config/config-initializer.js index ca52a06c657..ed4f77fc481 100644 --- a/lib/config/config-initializer.js +++ b/lib/config/config-initializer.js @@ -9,8 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let util = require("util"), - debug = require("debug"), +const util = require("util"), lodash = require("lodash"), inquirer = require("inquirer"), ProgressBar = require("progress"), @@ -22,7 +21,7 @@ let util = require("util"), recConfig = require("../../conf/eslint.json"), log = require("../logging"); -debug = debug("eslint:config-initializer"); +const debug = require("debug")("eslint:config-initializer"); //------------------------------------------------------------------------------ // Private @@ -60,9 +59,7 @@ function writeFile(config, format) { * @returns {void} */ function installModules(config) { - let modules = [], - installStatus, - modulesToInstall; + let modules = []; // Create a list of modules which should be installed based on config if (config.plugins) { @@ -82,11 +79,11 @@ function installModules(config) { // Add eslint to list in case user does not have it installed locally modules.unshift("eslint"); - installStatus = npmUtil.checkDevDeps(modules); + const installStatus = npmUtil.checkDevDeps(modules); // Install packages which aren't already installed - modulesToInstall = Object.keys(installStatus).filter(function(module) { - let notInstalled = installStatus[module] === false; + const modulesToInstall = Object.keys(installStatus).filter(function(module) { + const notInstalled = installStatus[module] === false; if (module === "eslint" && notInstalled) { log.info("Local ESLint installation not found."); @@ -113,31 +110,24 @@ function installModules(config) { * @returns {Object} config object with configured rules */ function configureRules(answers, config) { - let BAR_TOTAL = 20, - BAR_SOURCE_CODE_TOTAL = 4; - - let newConfig = lodash.assign({}, config), - bar, - patterns, - sourceCodes, - fileQty, - registry, - failingRegistry, - disabledConfigs = {}, - singleConfigs, - specTwoConfigs, - specThreeConfigs, - defaultConfigs; + const BAR_TOTAL = 20, + BAR_SOURCE_CODE_TOTAL = 4, + newConfig = lodash.assign({}, config), + disabledConfigs = {}; + let sourceCodes, + registry; // Set up a progress bar, as this process can take a long time - bar = new ProgressBar("Determining Config: :percent [:bar] :elapseds elapsed, eta :etas ", { + const bar = new ProgressBar("Determining Config: :percent [:bar] :elapseds elapsed, eta :etas ", { width: 30, total: BAR_TOTAL }); + bar.tick(0); // Shows the progress bar // Get the SourceCode of all chosen files - patterns = answers.patterns.split(/[\s]+/); + const patterns = answers.patterns.split(/[\s]+/); + try { sourceCodes = getSourceCodeOfFiles(patterns, { baseConfig: newConfig, useEslintrc: false }, function(total) { bar.tick((BAR_SOURCE_CODE_TOTAL / total)); @@ -146,7 +136,8 @@ function configureRules(answers, config) { log.info("\n"); throw e; } - fileQty = Object.keys(sourceCodes).length; + const fileQty = Object.keys(sourceCodes).length; + if (fileQty === 0) { log.info("\n"); throw new Error("Automatic Configuration failed. No files were able to be parsed."); @@ -163,12 +154,12 @@ function configureRules(answers, config) { debug("\nRegistry: " + util.inspect(registry.rules, {depth: null})); // Create a list of recommended rules, because we don't want to disable them - let recRules = Object.keys(recConfig.rules).filter(function(ruleId) { + const recRules = Object.keys(recConfig.rules).filter(function(ruleId) { return ConfigOps.isErrorSeverity(recConfig.rules[ruleId]); }); // Find and disable rules which had no error-free configuration - failingRegistry = registry.getFailingRulesRegistry(); + const failingRegistry = registry.getFailingRulesRegistry(); Object.keys(failingRegistry.rules).forEach(function(ruleId) { @@ -181,19 +172,19 @@ function configureRules(answers, config) { // If there is only one config that results in no errors for a rule, we should use it. // createConfig will only add rules that have one configuration in the registry. - singleConfigs = registry.createConfig().rules; + const singleConfigs = registry.createConfig().rules; // The "sweet spot" for number of options in a config seems to be two (severity plus one option). // Very often, a third option (usually an object) is available to address // edge cases, exceptions, or unique situations. We will prefer to use a config with // specificity of two. - specTwoConfigs = registry.filterBySpecificity(2).createConfig().rules; + const specTwoConfigs = registry.filterBySpecificity(2).createConfig().rules; // Maybe a specific combination using all three options works - specThreeConfigs = registry.filterBySpecificity(3).createConfig().rules; + const specThreeConfigs = registry.filterBySpecificity(3).createConfig().rules; // If all else fails, try to use the default (severity only) - defaultConfigs = registry.filterBySpecificity(1).createConfig().rules; + const defaultConfigs = registry.filterBySpecificity(1).createConfig().rules; // Combine configs in reverse priority order (later take precedence) newConfig.rules = lodash.assign({}, disabledConfigs, defaultConfigs, specThreeConfigs, specTwoConfigs, singleConfigs); @@ -202,12 +193,12 @@ function configureRules(answers, config) { bar.update(BAR_TOTAL); // Log out some stats to let the user know what happened - let finalRuleIds = Object.keys(newConfig.rules), - totalRules = finalRuleIds.length; - let enabledRules = finalRuleIds.filter(function(ruleId) { + const finalRuleIds = Object.keys(newConfig.rules); + const totalRules = finalRuleIds.length; + const enabledRules = finalRuleIds.filter(function(ruleId) { return (newConfig.rules[ruleId] !== 0); }).length; - let resultMessage = [ + const resultMessage = [ "\nEnabled " + enabledRules + " out of " + totalRules, "rules based on " + fileQty, "file" + ((fileQty === 1) ? "." : "s.") @@ -275,7 +266,7 @@ function processAnswers(answers) { * @returns {Object} config object */ function getConfigForStyleGuide(guide) { - let guides = { + const guides = { google: {extends: "google"}, airbnb: {extends: "airbnb", plugins: ["react"]}, standard: {extends: "standard", plugins: ["standard", "promise"]} @@ -419,7 +410,7 @@ function promptUser(callback) { // early exit if you are using automatic style generation if (earlyAnswers.source === "auto") { try { - let combinedAnswers = lodash.assign({}, earlyAnswers, secondAnswers); + const combinedAnswers = lodash.assign({}, earlyAnswers, secondAnswers); config = processAnswers(combinedAnswers); installModules(config); @@ -469,7 +460,7 @@ function promptUser(callback) { } ], function(answers) { try { - let totalAnswers = lodash.assign({}, earlyAnswers, secondAnswers, answers); + const totalAnswers = lodash.assign({}, earlyAnswers, secondAnswers, answers); config = processAnswers(totalAnswers); installModules(config); @@ -488,7 +479,7 @@ function promptUser(callback) { // Public Interface //------------------------------------------------------------------------------ -let init = { +const init = { getConfigForStyleGuide: getConfigForStyleGuide, processAnswers: processAnswers, initializeConfig: /* istanbul ignore next */ function(callback) { diff --git a/lib/config/config-ops.js b/lib/config/config-ops.js index 2e0c29a752d..125df67f6e0 100644 --- a/lib/config/config-ops.js +++ b/lib/config/config-ops.js @@ -9,17 +9,16 @@ // Requirements //------------------------------------------------------------------------------ -let lodash = require("lodash"), - debug = require("debug"), +const lodash = require("lodash"), Environments = require("./environments"); +const debug = require("debug")("eslint:config-ops"); + //------------------------------------------------------------------------------ // Private //------------------------------------------------------------------------------ -debug = debug("eslint:config-ops"); - -let RULE_SEVERITY_STRINGS = ["off", "warn", "error"], +const RULE_SEVERITY_STRINGS = ["off", "warn", "error"], RULE_SEVERITY = RULE_SEVERITY_STRINGS.reduce(function(map, value, index) { map[value] = index; return map; @@ -53,7 +52,7 @@ module.exports = { */ createEnvironmentConfig: function(env) { - let envConfig = this.createEmptyConfig(); + const envConfig = this.createEmptyConfig(); if (env) { @@ -62,7 +61,7 @@ module.exports = { Object.keys(env).filter(function(name) { return env[name]; }).forEach(function(name) { - let environment = Environments.get(name); + const environment = Environments.get(name); if (environment) { debug("Creating config for environment " + name); @@ -134,7 +133,7 @@ module.exports = { * (https://github.com/KyleAMathews/deepmerge) * and modified to meet our needs. */ - let array = Array.isArray(src) || Array.isArray(target); + const array = Array.isArray(src) || Array.isArray(target); let dst = array && [] || {}; combine = !!combine; @@ -202,7 +201,7 @@ module.exports = { if (config.rules) { Object.keys(config.rules).forEach(function(ruleId) { - let ruleConfig = config.rules[ruleId]; + const ruleConfig = config.rules[ruleId]; if (typeof ruleConfig === "string") { config.rules[ruleId] = RULE_SEVERITY[ruleConfig.toLowerCase()] || 0; @@ -224,7 +223,7 @@ module.exports = { if (config.rules) { Object.keys(config.rules).forEach(function(ruleId) { - let ruleConfig = config.rules[ruleId]; + const ruleConfig = config.rules[ruleId]; if (typeof ruleConfig === "number") { config.rules[ruleId] = RULE_SEVERITY_STRINGS[ruleConfig] || RULE_SEVERITY_STRINGS[0]; diff --git a/lib/config/config-rule.js b/lib/config/config-rule.js index f4c2803ff7e..ea8162d42db 100644 --- a/lib/config/config-rule.js +++ b/lib/config/config-rule.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let rules = require("../rules"), +const rules = require("../rules"), loadRules = require("../load-rules"); @@ -41,7 +41,7 @@ function explodeArray(xs) { * @returns {array} A mixture of the elements of the first and second arrays. */ function combineArrays(arr1, arr2) { - let res = []; + const res = []; if (arr1.length === 0) { return explodeArray(arr2); @@ -78,8 +78,8 @@ function combineArrays(arr1, arr2) { * @returns {Array[]} Array of arrays of objects grouped by property */ function groupByProperty(objects) { - let groupedObj = objects.reduce(function(accumulator, obj) { - let prop = Object.keys(obj)[0]; + const groupedObj = objects.reduce(function(accumulator, obj) { + const prop = Object.keys(obj)[0]; accumulator[prop] = accumulator[prop] ? accumulator[prop].concat(obj) : [obj]; return accumulator; @@ -144,7 +144,7 @@ function groupByProperty(objects) { * @returns {Object[]} Combined objects for each combination of input properties and values */ function combinePropertyObjects(objArr1, objArr2) { - let res = []; + const res = []; if (objArr1.length === 0) { return objArr2; @@ -154,9 +154,9 @@ function combinePropertyObjects(objArr1, objArr2) { } objArr1.forEach(function(obj1) { objArr2.forEach(function(obj2) { - let combinedObj = {}; - let obj1Props = Object.keys(obj1); - let obj2Props = Object.keys(obj2); + const combinedObj = {}; + const obj1Props = Object.keys(obj1); + const obj2Props = Object.keys(obj2); obj1Props.forEach(function(prop1) { combinedObj[prop1] = obj1[prop1]; @@ -229,13 +229,12 @@ RuleConfigSet.prototype = { * @returns {void} */ addObject: function(obj) { - let objectConfigSet = { + const objectConfigSet = { objectConfigs: [], add: function(property, values) { - let optionObj; - for (let idx = 0; idx < values.length; idx++) { - optionObj = {}; + const optionObj = {}; + optionObj[property] = values[idx]; this.objectConfigs.push(optionObj); } @@ -274,7 +273,7 @@ RuleConfigSet.prototype = { * @returns {array[]} Valid rule configurations */ function generateConfigsFromSchema(schema) { - let configSet = new RuleConfigSet(); + const configSet = new RuleConfigSet(); if (Array.isArray(schema)) { schema.forEach(function(opt) { @@ -301,11 +300,11 @@ function generateConfigsFromSchema(schema) { * @returns {rulesConfig} Hash of rule names and arrays of possible configurations */ function createCoreRuleConfigs() { - let ruleList = loadRules(); + const ruleList = loadRules(); return Object.keys(ruleList).reduce(function(accumulator, id) { - let rule = rules.get(id); - let schema = (typeof rule === "function") ? rule.schema : rule.meta.schema; + const rule = rules.get(id); + const schema = (typeof rule === "function") ? rule.schema : rule.meta.schema; accumulator[id] = generateConfigsFromSchema(schema); return accumulator; diff --git a/lib/config/config-validator.js b/lib/config/config-validator.js index 6695260a23a..8bd1e28d82d 100644 --- a/lib/config/config-validator.js +++ b/lib/config/config-validator.js @@ -9,12 +9,12 @@ // Requirements //------------------------------------------------------------------------------ -let rules = require("../rules"), +const rules = require("../rules"), Environments = require("./environments"), schemaValidator = require("is-my-json-valid"), util = require("util"); -let validators = { +const validators = { rules: Object.create(null) }; @@ -28,7 +28,7 @@ let validators = { * @returns {Object} JSON Schema for the rule's options. */ function getRuleOptionsSchema(id) { - let rule = rules.get(id), + const rule = rules.get(id), schema = rule && rule.schema || rule && rule.meta && rule.meta.schema; // Given a tuple of schemas, insert warning level at the beginning @@ -61,11 +61,10 @@ function getRuleOptionsSchema(id) { * @returns {void} */ function validateRuleOptions(id, options, source) { + const schema = getRuleOptionsSchema(id); let validateRule = validators.rules[id], - message, severity, localOptions, - schema = getRuleOptionsSchema(id), validSeverity = true; if (!validateRule && schema) { @@ -92,7 +91,7 @@ function validateRuleOptions(id, options, source) { } if ((validateRule && validateRule.errors) || !validSeverity) { - message = [ + const message = [ source, ":\n", "\tConfiguration for rule \"", id, "\" is invalid:\n" ]; @@ -137,7 +136,7 @@ function validateEnvironment(environment, source) { if (typeof environment === "object") { Object.keys(environment).forEach(function(env) { if (!Environments.get(env)) { - let message = [ + const message = [ source, ":\n", "\tEnvironment key \"", env, "\" is unknown\n" ]; diff --git a/lib/config/environments.js b/lib/config/environments.js index 9a5defbfc27..072d07b63cb 100644 --- a/lib/config/environments.js +++ b/lib/config/environments.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let envs = require("../../conf/environments"); +const envs = require("../../conf/environments"); //------------------------------------------------------------------------------ // Private diff --git a/lib/config/plugins.js b/lib/config/plugins.js index 7065045c121..9b813f3c148 100644 --- a/lib/config/plugins.js +++ b/lib/config/plugins.js @@ -8,19 +8,18 @@ // Requirements //------------------------------------------------------------------------------ -let debug = require("debug"), - Environments = require("./environments"), +const Environments = require("./environments"), rules = require("../rules"); +const debug = require("debug")("eslint:plugins"); + //------------------------------------------------------------------------------ // Private //------------------------------------------------------------------------------ -debug = debug("eslint:plugins"); - let plugins = Object.create(null); -let PLUGIN_NAME_PREFIX = "eslint-plugin-", +const PLUGIN_NAME_PREFIX = "eslint-plugin-", NAMESPACE_REGEX = /^@.*\//i; /** @@ -67,7 +66,7 @@ module.exports = { * @returns {void} */ define: function(pluginName, plugin) { - let pluginNameWithoutNamespace = removeNamespace(pluginName), + const pluginNameWithoutNamespace = removeNamespace(pluginName), pluginNameWithoutPrefix = removePrefix(pluginNameWithoutNamespace); plugins[pluginNameWithoutPrefix] = plugin; @@ -104,10 +103,10 @@ module.exports = { * @throws {Error} If the plugin cannot be loaded. */ load: function(pluginName) { - let pluginNamespace = getNamespace(pluginName), + const pluginNamespace = getNamespace(pluginName), pluginNameWithoutNamespace = removeNamespace(pluginName), - pluginNameWithoutPrefix = removePrefix(pluginNameWithoutNamespace), - plugin = null; + pluginNameWithoutPrefix = removePrefix(pluginNameWithoutNamespace); + let plugin = null; if (!plugins[pluginNameWithoutPrefix]) { try { diff --git a/lib/eslint.js b/lib/eslint.js index 01b43eb4ee1..a4edaf8af80 100755 --- a/lib/eslint.js +++ b/lib/eslint.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("assert"), +const assert = require("assert"), EventEmitter = require("events").EventEmitter, escope = require("escope"), levn = require("levn"), @@ -41,7 +41,7 @@ let assert = require("assert"), * @returns {Object} Result map object of names and boolean values */ function parseBooleanConfig(string, comment) { - let items = {}; + const items = {}; // Collapse whitespace around `:` and `,` to make parsing easier string = string.replace(/\s*([:,])\s*/g, "$1"); @@ -50,8 +50,8 @@ function parseBooleanConfig(string, comment) { if (!name) { return; } - let pos = name.indexOf(":"), - value; + const pos = name.indexOf(":"); + let value; if (pos !== -1) { value = name.substring(pos + 1, name.length); @@ -122,7 +122,7 @@ function parseJsonConfig(string, location, messages) { * @returns {Object} Result map of values and true values */ function parseListConfig(string) { - let items = {}; + const items = {}; // Collapse whitespace around , string = string.replace(/\s*,\s*/g, ","); @@ -147,7 +147,7 @@ function parseListConfig(string) { * @returns {void} */ function addDeclaredGlobals(program, globalScope, config) { - let declaredGlobals = {}, + const declaredGlobals = {}, exportedGlobals = {}, explicitGlobals = {}, builtin = Environments.get("builtin"); @@ -156,7 +156,7 @@ function addDeclaredGlobals(program, globalScope, config) { Object.keys(config.env).forEach(function(name) { if (config.env[name]) { - let env = Environments.get(name), + const env = Environments.get(name), environmentGlobals = env && env.globals; if (environmentGlobals) { @@ -196,7 +196,7 @@ function addDeclaredGlobals(program, globalScope, config) { // mark all exported variables as such Object.keys(exportedGlobals).forEach(function(name) { - let variable = globalScope.set.get(name); + const variable = globalScope.set.get(name); if (variable) { variable.eslintUsed = true; @@ -209,8 +209,8 @@ function addDeclaredGlobals(program, globalScope, config) { * references and remove the ones that were added by configuration. */ globalScope.through = globalScope.through.filter(function(reference) { - let name = reference.identifier.name; - let variable = globalScope.set.get(name); + const name = reference.identifier.name; + const variable = globalScope.set.get(name); if (variable) { @@ -312,12 +312,12 @@ function modifyConfigsFromComments(filename, ast, config, reportingConfig, messa rules: {}, env: {} }; - let commentRules = {}; + const commentRules = {}; ast.comments.forEach(function(comment) { let value = comment.value.trim(); - let match = /^(eslint(-\w+){0,3}|exported|globals?)(\s|$)/.exec(value); + const match = /^(eslint(-\w+){0,3}|exported|globals?)(\s|$)/.exec(value); if (match) { value = value.substring(match.index + match[1].length); @@ -349,7 +349,7 @@ function modifyConfigsFromComments(filename, ast, config, reportingConfig, messa const items = parseJsonConfig(value, comment.loc, messages); Object.keys(items).forEach(function(name) { - let ruleValue = items[name]; + const ruleValue = items[name]; validator.validateRuleOptions(name, ruleValue, filename + " line " + comment.loc.start.line); commentRules[name] = ruleValue; @@ -373,7 +373,7 @@ function modifyConfigsFromComments(filename, ast, config, reportingConfig, messa // apply environment configs Object.keys(commentConfig.env).forEach(function(name) { - let env = Environments.get(name); + const env = Environments.get(name); if (env) { commentConfig = ConfigOps.merge(commentConfig, env); @@ -395,7 +395,7 @@ function isDisabledByReportingConfig(reportingConfig, ruleId, location) { for (let i = 0, c = reportingConfig.length; i < c; i++) { - let ignore = reportingConfig[i]; + const ignore = reportingConfig[i]; if ((!ignore.rule || ignore.rule === ruleId) && (location.line > ignore.start.line || (location.line === ignore.start.line && location.column >= ignore.start.column)) && @@ -417,13 +417,12 @@ function prepareConfig(config) { config.globals = config.globals || config.global || {}; delete config.global; - let copiedRules = {}, - parserOptions = {}, - preparedConfig; + const copiedRules = {}; + let parserOptions = {}; if (typeof config.rules === "object") { Object.keys(config.rules).forEach(function(k) { - let rule = config.rules[k]; + const rule = config.rules[k]; if (rule === null) { throw new Error("Invalid config for rule '" + k + "'\."); @@ -439,7 +438,7 @@ function prepareConfig(config) { // merge in environment parserOptions if (typeof config.env === "object") { Object.keys(config.env).forEach(function(envName) { - let env = Environments.get(envName); + const env = Environments.get(envName); if (config.env[envName] && env && env.parserOptions) { parserOptions = ConfigOps.merge(parserOptions, env.parserOptions); @@ -447,7 +446,7 @@ function prepareConfig(config) { }); } - preparedConfig = { + const preparedConfig = { rules: copiedRules, parser: config.parser || DEFAULT_PARSER, globals: ConfigOps.merge({}, config.globals), @@ -507,7 +506,7 @@ function createStubRule(message) { */ function getRuleReplacementMessage(ruleId) { if (ruleId in replacements.rules) { - let newRules = replacements.rules[ruleId]; + const newRules = replacements.rules[ruleId]; return "Rule \'" + ruleId + "\' was removed and replaced by: " + newRules.join(", "); } @@ -515,7 +514,7 @@ function getRuleReplacementMessage(ruleId) { return null; } -let eslintEnvPattern = /\/\*\s*eslint-env\s(.+?)\*\//g; +const eslintEnvPattern = /\/\*\s*eslint-env\s(.+?)\*\//g; /** * Checks whether or not there is a comment which has "eslint-env *" in a given text. @@ -563,8 +562,8 @@ function stripUnicodeBOM(text) { */ module.exports = (function() { - let api = Object.create(new EventEmitter()), - messages = [], + const api = Object.create(new EventEmitter()); + let messages = [], currentConfig = null, currentScopes = null, scopeMap = null, @@ -627,8 +626,8 @@ module.exports = (function() { } catch (ex) { // If the message includes a leading line number, strip it: - let message = ex.message.replace(/^line \d+:/i, "").trim(); - let source = (ex.lineNumber) ? SourceCode.splitLines(text)[ex.lineNumber - 1] : null; + const message = ex.message.replace(/^line \d+:/i, "").trim(); + const source = (ex.lineNumber) ? SourceCode.splitLines(text)[ex.lineNumber - 1] : null; messages.push({ ruleId: null, @@ -718,13 +717,10 @@ module.exports = (function() { * @returns {Object[]} The results as an array of messages or null if no messages. */ api.verify = function(textOrSourceCode, config, filenameOrOptions, saveState) { - + const text = (typeof textOrSourceCode === "string") ? textOrSourceCode : null; let ast, shebang, - ecmaFeatures, - ecmaVersion, - allowInlineConfig, - text = (typeof textOrSourceCode === "string") ? textOrSourceCode : null; + allowInlineConfig; // evaluate arguments if (typeof filenameOrOptions === "object") { @@ -740,7 +736,7 @@ module.exports = (function() { } // search and apply "eslint-env *". - let envInFile = findEslintEnv(text || textOrSourceCode.text); + const envInFile = findEslintEnv(text || textOrSourceCode.text); if (envInFile) { if (!config || !config.env) { @@ -795,15 +791,12 @@ module.exports = (function() { Object.keys(config.rules).filter(function(key) { return getRuleSeverity(config.rules[key]) > 0; }).forEach(function(key) { - let ruleCreator, - severity, - options, - rule; + let ruleCreator; ruleCreator = rules.get(key); if (!ruleCreator) { - let replacementMsg = getRuleReplacementMessage(key); + const replacementMsg = getRuleReplacementMessage(key); if (replacementMsg) { ruleCreator = createStubRule(replacementMsg); @@ -813,15 +806,15 @@ module.exports = (function() { rules.define(key, ruleCreator); } - severity = getRuleSeverity(config.rules[key]); - options = getRuleOptions(config.rules[key]); + const severity = getRuleSeverity(config.rules[key]); + const options = getRuleOptions(config.rules[key]); try { - let ruleContext = new RuleContext( + const ruleContext = new RuleContext( key, api, severity, options, config.settings, config.parserOptions, config.parser, ruleCreator.meta); - rule = ruleCreator.create ? ruleCreator.create(ruleContext) : + const rule = ruleCreator.create ? ruleCreator.create(ruleContext) : ruleCreator(ruleContext); // add all the node types as listeners @@ -841,8 +834,8 @@ module.exports = (function() { currentConfig = config; traverser = new Traverser(); - ecmaFeatures = currentConfig.parserOptions.ecmaFeatures || {}; - ecmaVersion = currentConfig.parserOptions.ecmaVersion || 5; + const ecmaFeatures = currentConfig.parserOptions.ecmaFeatures || {}; + const ecmaVersion = currentConfig.parserOptions.ecmaVersion || 5; // gather scope data that may be needed by the rules scopeManager = escope.analyze(ast, { @@ -863,7 +856,7 @@ module.exports = (function() { scopeMap = []; currentScopes.forEach(function(scope, index) { - let range = scope.block.range[0]; + const range = scope.block.range[0]; /* * Sometimes two scopes are returned for a given node. This is @@ -910,7 +903,7 @@ module.exports = (function() { // sort by line and column messages.sort(function(a, b) { - let lineDiff = a.line - b.line; + const lineDiff = a.line - b.line; if (lineDiff === 0) { return a.column - b.column; @@ -953,7 +946,7 @@ module.exports = (function() { } // Store end location. - let endLocation = location.end; + const endLocation = location.end; location = location.start || location; @@ -972,7 +965,7 @@ module.exports = (function() { }); } - let problem = { + const problem = { ruleId: ruleId, severity: severity, message: message, @@ -1011,7 +1004,7 @@ module.exports = (function() { }; // methods that exist on SourceCode object - let externalMethods = { + const externalMethods = { getSource: "getText", getSourceLines: "getLines", getAllComments: "getAllComments", @@ -1033,7 +1026,7 @@ module.exports = (function() { // copy over methods Object.keys(externalMethods).forEach(function(methodName) { - let exMethodName = externalMethods[methodName]; + const exMethodName = externalMethods[methodName]; // All functions expected to have less arguments than 5. api[methodName] = function(a, b, c, d, e) { @@ -1057,14 +1050,13 @@ module.exports = (function() { * @returns {Object} An object representing the current node's scope. */ api.getScope = function() { - let parents = traverser.parents(), - scope = currentScopes[0]; + const parents = traverser.parents(); // Don't do this for Program nodes - they have no parents if (parents.length) { // if current node introduces a scope, add it to the list - let current = traverser.current(); + const current = traverser.current(); if (currentConfig.parserOptions.ecmaVersion >= 6) { if (["BlockStatement", "SwitchStatement", "CatchClause", "FunctionDeclaration", "FunctionExpression", "ArrowFunctionExpression"].indexOf(current.type) >= 0) { @@ -1080,7 +1072,8 @@ module.exports = (function() { for (let i = parents.length - 1; i >= 0; --i) { // Get the innermost scope - scope = scopeManager.acquire(parents[i], true); + const scope = scopeManager.acquire(parents[i], true); + if (scope) { if (scope.type === "function-expression-name") { return scope.childScopes[0]; @@ -1103,10 +1096,9 @@ module.exports = (function() { * false if not. */ api.markVariableAsUsed = function(name) { + const hasGlobalReturn = currentConfig.parserOptions.ecmaFeatures && currentConfig.parserOptions.ecmaFeatures.globalReturn, + specialScope = hasGlobalReturn || currentConfig.parserOptions.sourceType === "module"; let scope = this.getScope(), - hasGlobalReturn = currentConfig.parserOptions.ecmaFeatures && currentConfig.parserOptions.ecmaFeatures.globalReturn, - specialScope = hasGlobalReturn || currentConfig.parserOptions.sourceType === "module", - variables, i, len; @@ -1116,7 +1108,8 @@ module.exports = (function() { } do { - variables = scope.variables; + const variables = scope.variables; + for (i = 0, len = variables.length; i < len; i++) { if (variables[i].name === name) { variables[i].eslintUsed = true; @@ -1147,7 +1140,7 @@ module.exports = (function() { * @param {Function} ruleModule Function from context to object mapping AST node types to event handlers * @returns {void} */ - let defineRule = api.defineRule = function(ruleId, ruleModule) { + const defineRule = api.defineRule = function(ruleId, ruleModule) { rules.define(ruleId, ruleModule); }; diff --git a/lib/file-finder.js b/lib/file-finder.js index f003504c25e..18f3b65133d 100644 --- a/lib/file-finder.js +++ b/lib/file-finder.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let fs = require("fs"), +const fs = require("fs"), path = require("path"); //------------------------------------------------------------------------------ @@ -55,11 +55,11 @@ function FileFinder(files, cwd) { * @returns {Object} Hashmap of filenames */ function normalizeDirectoryEntries(entries, directory, supportedConfigs) { - let fileHash = {}; + const fileHash = {}; entries.forEach(function(entry) { if (supportedConfigs.indexOf(entry) >= 0) { - let resolvedEntry = path.resolve(directory, entry); + const resolvedEntry = path.resolve(directory, entry); if (fs.statSync(resolvedEntry).isFile()) { fileHash[entry] = resolvedEntry; @@ -79,14 +79,7 @@ function normalizeDirectoryEntries(entries, directory, supportedConfigs) { * @returns {string[]} The file paths found. */ FileFinder.prototype.findAllInDirectoryAndParents = function(directory) { - let cache = this.cache, - child, - dirs, - fileNames, - filePath, - i, - j, - searched; + const cache = this.cache; if (directory) { directory = path.resolve(this.cwd, directory); @@ -98,24 +91,24 @@ FileFinder.prototype.findAllInDirectoryAndParents = function(directory) { return cache[directory]; } - dirs = []; - searched = 0; - fileNames = this.fileNames; + const dirs = []; + const fileNames = this.fileNames; + let searched = 0; do { dirs[searched++] = directory; cache[directory] = []; - let filesMap = normalizeDirectoryEntries(getDirectoryEntries(directory), directory, fileNames); + const filesMap = normalizeDirectoryEntries(getDirectoryEntries(directory), directory, fileNames); if (Object.keys(filesMap).length) { for (let k = 0; k < fileNames.length; k++) { if (filesMap[fileNames[k]]) { - filePath = filesMap[fileNames[k]]; + const filePath = filesMap[fileNames[k]]; // Add the file path to the cache of each directory searched. - for (j = 0; j < searched; j++) { + for (let j = 0; j < searched; j++) { cache[dirs[j]].push(filePath); } @@ -123,7 +116,7 @@ FileFinder.prototype.findAllInDirectoryAndParents = function(directory) { } } } - child = directory; + const child = directory; // Assign parent directory to directory. directory = path.dirname(directory); @@ -134,7 +127,7 @@ FileFinder.prototype.findAllInDirectoryAndParents = function(directory) { } while (!cache.hasOwnProperty(directory)); // Add what has been cached previously to the cache of each directory searched. - for (i = 0; i < searched; i++) { + for (let i = 0; i < searched; i++) { dirs.push.apply(cache[dirs[i]], cache[directory]); } diff --git a/lib/formatters/checkstyle.js b/lib/formatters/checkstyle.js index 11ee60490a0..1f4554c0fcf 100644 --- a/lib/formatters/checkstyle.js +++ b/lib/formatters/checkstyle.js @@ -4,7 +4,7 @@ */ "use strict"; -let xmlEscape = require("../util/xml-escape"); +const xmlEscape = require("../util/xml-escape"); //------------------------------------------------------------------------------ // Helper Functions @@ -36,7 +36,7 @@ module.exports = function(results) { output += ""; results.forEach(function(result) { - let messages = result.messages; + const messages = result.messages; output += ""; diff --git a/lib/formatters/compact.js b/lib/formatters/compact.js index 72233f6f363..366ac8519a8 100644 --- a/lib/formatters/compact.js +++ b/lib/formatters/compact.js @@ -34,7 +34,7 @@ module.exports = function(results) { results.forEach(function(result) { - let messages = result.messages; + const messages = result.messages; total += messages.length; diff --git a/lib/formatters/html.js b/lib/formatters/html.js index 87d2910b48a..95437b95e2d 100644 --- a/lib/formatters/html.js +++ b/lib/formatters/html.js @@ -4,17 +4,17 @@ */ "use strict"; -let lodash = require("lodash"); -let fs = require("fs"); -let path = require("path"); +const lodash = require("lodash"); +const fs = require("fs"); +const path = require("path"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let pageTemplate = lodash.template(fs.readFileSync(path.join(__dirname, "html-template-page.html"), "utf-8")); -let messageTemplate = lodash.template(fs.readFileSync(path.join(__dirname, "html-template-message.html"), "utf-8")); -let resultTemplate = lodash.template(fs.readFileSync(path.join(__dirname, "html-template-result.html"), "utf-8")); +const pageTemplate = lodash.template(fs.readFileSync(path.join(__dirname, "html-template-page.html"), "utf-8")); +const messageTemplate = lodash.template(fs.readFileSync(path.join(__dirname, "html-template-message.html"), "utf-8")); +const resultTemplate = lodash.template(fs.readFileSync(path.join(__dirname, "html-template-result.html"), "utf-8")); /** * Given a word and a count, append an s if count is not one. @@ -33,7 +33,7 @@ function pluralize(word, count) { * @returns {string} The formatted string, pluralized where necessary */ function renderSummary(totalErrors, totalWarnings) { - let totalProblems = totalErrors + totalWarnings; + const totalProblems = totalErrors + totalWarnings; let renderedText = totalProblems + " " + pluralize("problem", totalProblems); if (totalProblems !== 0) { @@ -71,11 +71,8 @@ function renderMessages(messages, parentIndex) { * @returns {string} HTML (table row) describing a message. */ return lodash.map(messages, function(message) { - let lineNumber, - columnNumber; - - lineNumber = message.line || 0; - columnNumber = message.column || 0; + const lineNumber = message.line || 0; + const columnNumber = message.column || 0; return messageTemplate({ parentIndex: parentIndex, diff --git a/lib/formatters/jslint-xml.js b/lib/formatters/jslint-xml.js index 11fe812d063..8ef2efcb7f2 100644 --- a/lib/formatters/jslint-xml.js +++ b/lib/formatters/jslint-xml.js @@ -4,7 +4,7 @@ */ "use strict"; -let xmlEscape = require("../util/xml-escape"); +const xmlEscape = require("../util/xml-escape"); //------------------------------------------------------------------------------ // Public Interface @@ -18,7 +18,7 @@ module.exports = function(results) { output += ""; results.forEach(function(result) { - let messages = result.messages; + const messages = result.messages; output += ""; diff --git a/lib/formatters/junit.js b/lib/formatters/junit.js index 6b7bed30a15..7b2aa7a0cec 100644 --- a/lib/formatters/junit.js +++ b/lib/formatters/junit.js @@ -4,7 +4,7 @@ */ "use strict"; -let xmlEscape = require("../util/xml-escape"); +const xmlEscape = require("../util/xml-escape"); //------------------------------------------------------------------------------ // Helper Functions @@ -37,14 +37,14 @@ module.exports = function(results) { results.forEach(function(result) { - let messages = result.messages; + const messages = result.messages; if (messages.length) { output += "\n"; } messages.forEach(function(message) { - let type = message.fatal ? "error" : "failure"; + const type = message.fatal ? "error" : "failure"; output += ""; output += "<" + type + " message=\"" + xmlEscape(message.message || "") + "\">"; diff --git a/lib/formatters/stylish.js b/lib/formatters/stylish.js index ebcea1ccdbd..cb73777c2e5 100644 --- a/lib/formatters/stylish.js +++ b/lib/formatters/stylish.js @@ -4,7 +4,7 @@ */ "use strict"; -let chalk = require("chalk"), +const chalk = require("chalk"), table = require("text-table"); //------------------------------------------------------------------------------ @@ -34,7 +34,7 @@ module.exports = function(results) { summaryColor = "yellow"; results.forEach(function(result) { - let messages = result.messages; + const messages = result.messages; if (messages.length === 0) { return; diff --git a/lib/formatters/table.js b/lib/formatters/table.js index d760c18ec5f..7e793f80fbd 100644 --- a/lib/formatters/table.js +++ b/lib/formatters/table.js @@ -8,13 +8,9 @@ // Requirements //------------------------------------------------------------------------------ -let chalk, - table, - pluralize; - -chalk = require("chalk"); -table = require("table").default; -pluralize = require("pluralize"); +const chalk = require("chalk"), + table = require("table").default, + pluralize = require("pluralize"); //------------------------------------------------------------------------------ // Helpers @@ -26,9 +22,7 @@ pluralize = require("pluralize"); * @returns {string} A text table. */ function drawTable(messages) { - let rows; - - rows = []; + const rows = []; if (messages.length === 0) { return ""; diff --git a/lib/formatters/tap.js b/lib/formatters/tap.js index c5c70171f1f..df8668024fc 100644 --- a/lib/formatters/tap.js +++ b/lib/formatters/tap.js @@ -4,7 +4,7 @@ */ "use strict"; -let yaml = require("js-yaml"); +const yaml = require("js-yaml"); //------------------------------------------------------------------------------ // Helper Functions @@ -29,7 +29,7 @@ function getMessageType(message) { * @returns {string} diagnostics string with YAML embedded - TAP version 13 compliant */ function outputDiagnostics(diagnostic) { - let prefix = " "; + const prefix = " "; let output = prefix + "---\n"; output += prefix + yaml.safeDump(diagnostic).split("\n").join("\n" + prefix); @@ -45,7 +45,7 @@ module.exports = function(results) { let output = "TAP version 13\n1.." + results.length + "\n"; results.forEach(function(result, id) { - let messages = result.messages; + const messages = result.messages; let testResult = "ok"; let diagnostics = {}; @@ -53,7 +53,7 @@ module.exports = function(results) { testResult = "not ok"; messages.forEach(function(message) { - let diagnostic = { + const diagnostic = { message: message.message, severity: getMessageType(message), data: { diff --git a/lib/formatters/unix.js b/lib/formatters/unix.js index ee4e14929b5..f11f30a0652 100644 --- a/lib/formatters/unix.js +++ b/lib/formatters/unix.js @@ -33,7 +33,7 @@ module.exports = function(results) { results.forEach(function(result) { - let messages = result.messages; + const messages = result.messages; total += messages.length; diff --git a/lib/formatters/visualstudio.js b/lib/formatters/visualstudio.js index 836577271ea..e11474d5a42 100644 --- a/lib/formatters/visualstudio.js +++ b/lib/formatters/visualstudio.js @@ -35,7 +35,7 @@ module.exports = function(results) { results.forEach(function(result) { - let messages = result.messages; + const messages = result.messages; total += messages.length; diff --git a/lib/ignored-paths.js b/lib/ignored-paths.js index 729bddd20a3..fac30a79fe0 100644 --- a/lib/ignored-paths.js +++ b/lib/ignored-paths.js @@ -9,26 +9,25 @@ // Requirements //------------------------------------------------------------------------------ -let lodash = require("lodash"), +const lodash = require("lodash"), fs = require("fs"), path = require("path"), - debug = require("debug"), ignore = require("ignore"), pathUtil = require("./util/path-util"); -debug = debug("eslint:ignored-paths"); +const debug = require("debug")("eslint:ignored-paths"); //------------------------------------------------------------------------------ // Constants //------------------------------------------------------------------------------ -let ESLINT_IGNORE_FILENAME = ".eslintignore"; -let DEFAULT_IGNORE_DIRS = [ +const ESLINT_IGNORE_FILENAME = ".eslintignore"; +const DEFAULT_IGNORE_DIRS = [ "node_modules/", "bower_components/" ]; -let DEFAULT_OPTIONS = { +const DEFAULT_OPTIONS = { dotfiles: false, cwd: process.cwd() }; @@ -47,7 +46,7 @@ let DEFAULT_OPTIONS = { function findIgnoreFile(cwd) { cwd = cwd || DEFAULT_OPTIONS.cwd; - let ignoreFilePath = path.resolve(cwd, ESLINT_IGNORE_FILENAME); + const ignoreFilePath = path.resolve(cwd, ESLINT_IGNORE_FILENAME); return fs.existsSync(ignoreFilePath) ? ignoreFilePath : ""; } @@ -175,8 +174,8 @@ function IgnoredPaths(options) { IgnoredPaths.prototype.contains = function(filepath, category) { let result = false; - let absolutePath = path.resolve(this.options.cwd, filepath); - let relativePath = pathUtil.getRelativePath(absolutePath, this.options.cwd); + const absolutePath = path.resolve(this.options.cwd, filepath); + const relativePath = pathUtil.getRelativePath(absolutePath, this.options.cwd); if ((typeof category === "undefined") || (category === "default")) { result = result || (this.ig.default.filter([relativePath]).length === 0); @@ -201,7 +200,7 @@ IgnoredPaths.prototype.getIgnoredFoldersGlobPatterns = function() { /* eslint-disable no-underscore-dangle */ - let patterns = this.ig.custom._rules.filter(function(rule) { + const patterns = this.ig.custom._rules.filter(function(rule) { return rule.negative; }).map(function(rule) { return rule.origin; diff --git a/lib/internal-rules/internal-no-invalid-meta.js b/lib/internal-rules/internal-no-invalid-meta.js index 820218dc47e..55b42016f6b 100644 --- a/lib/internal-rules/internal-no-invalid-meta.js +++ b/lib/internal-rules/internal-no-invalid-meta.js @@ -17,7 +17,7 @@ * @returns {ASTNode} The Property node or null if not found. */ function getPropertyFromObject(property, node) { - let properties = node.properties; + const properties = node.properties; for (let i = 0; i < properties.length; i++) { if (properties[i].key.name === property) { @@ -55,7 +55,7 @@ function hasMetaDocs(metaPropertyNode) { * @returns {boolean} `true` if a `docs.description` property exists. */ function hasMetaDocsDescription(metaPropertyNode) { - let metaDocs = getPropertyFromObject("docs", metaPropertyNode.value); + const metaDocs = getPropertyFromObject("docs", metaPropertyNode.value); return metaDocs && getPropertyFromObject("description", metaDocs.value); } @@ -67,7 +67,7 @@ function hasMetaDocsDescription(metaPropertyNode) { * @returns {boolean} `true` if a `docs.category` property exists. */ function hasMetaDocsCategory(metaPropertyNode) { - let metaDocs = getPropertyFromObject("docs", metaPropertyNode.value); + const metaDocs = getPropertyFromObject("docs", metaPropertyNode.value); return metaDocs && getPropertyFromObject("category", metaDocs.value); } @@ -79,7 +79,7 @@ function hasMetaDocsCategory(metaPropertyNode) { * @returns {boolean} `true` if a `docs.recommended` property exists. */ function hasMetaDocsRecommended(metaPropertyNode) { - let metaDocs = getPropertyFromObject("docs", metaPropertyNode.value); + const metaDocs = getPropertyFromObject("docs", metaPropertyNode.value); return metaDocs && getPropertyFromObject("recommended", metaDocs.value); } @@ -113,7 +113,7 @@ function hasMetaFixable(metaPropertyNode) { * @returns {void} */ function checkMetaValidity(context, exportsNode, ruleIsFixable) { - let metaProperty = getMetaPropertyFromExportsNode(exportsNode); + const metaProperty = getMetaPropertyFromExportsNode(exportsNode); if (!metaProperty) { context.report(exportsNode, "Rule is missing a meta property."); diff --git a/lib/load-rules.js b/lib/load-rules.js index ed7732db3fe..c698faa5e13 100644 --- a/lib/load-rules.js +++ b/lib/load-rules.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let fs = require("fs"), +const fs = require("fs"), path = require("path"); //------------------------------------------------------------------------------ @@ -29,7 +29,7 @@ module.exports = function(rulesDir, cwd) { rulesDir = path.resolve(cwd, rulesDir); } - let rules = Object.create(null); + const rules = Object.create(null); fs.readdirSync(rulesDir).forEach(function(file) { if (path.extname(file) !== ".js") { diff --git a/lib/options.js b/lib/options.js index b1ab7eb9675..bbb2456a980 100644 --- a/lib/options.js +++ b/lib/options.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let optionator = require("optionator"); +const optionator = require("optionator"); //------------------------------------------------------------------------------ // Initialization and Public Interface diff --git a/lib/rule-context.js b/lib/rule-context.js index e0428744b92..c400fc254ff 100644 --- a/lib/rule-context.js +++ b/lib/rule-context.js @@ -8,13 +8,13 @@ // Requirements //------------------------------------------------------------------------------ -let RuleFixer = require("./util/rule-fixer"); +const RuleFixer = require("./util/rule-fixer"); //------------------------------------------------------------------------------ // Constants //------------------------------------------------------------------------------ -let PASSTHROUGHS = [ +const PASSTHROUGHS = [ "getAncestors", "getDeclaredVariables", "getFilename", @@ -111,12 +111,11 @@ RuleContext.prototype = { * @returns {void} */ report: function(nodeOrDescriptor, location, message, opts) { - let descriptor, - fix = null; // check to see if it's a new style call if (arguments.length === 1) { - descriptor = nodeOrDescriptor; + const descriptor = nodeOrDescriptor; + let fix = null; // if there's a fix specified, get it if (typeof descriptor.fix === "function") { diff --git a/lib/rules.js b/lib/rules.js index 3552d494a00..19ac9f469ed 100644 --- a/lib/rules.js +++ b/lib/rules.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let loadRules = require("./load-rules"); +const loadRules = require("./load-rules"); //------------------------------------------------------------------------------ // Privates @@ -38,7 +38,7 @@ function define(ruleId, ruleModule) { * @returns {void} */ function load(rulesDir, cwd) { - let newRules = loadRules(rulesDir, cwd); + const newRules = loadRules(rulesDir, cwd); Object.keys(newRules).forEach(function(ruleId) { define(ruleId, newRules[ruleId]); @@ -53,7 +53,7 @@ function load(rulesDir, cwd) { */ function importPlugin(pluginRules, pluginName) { Object.keys(pluginRules).forEach(function(ruleId) { - let qualifiedRuleId = pluginName + "/" + ruleId, + const qualifiedRuleId = pluginName + "/" + ruleId, rule = pluginRules[ruleId]; define(qualifiedRuleId, rule); diff --git a/lib/rules/accessor-pairs.js b/lib/rules/accessor-pairs.js index b80b44dc9fb..abd69668fcb 100644 --- a/lib/rules/accessor-pairs.js +++ b/lib/rules/accessor-pairs.js @@ -28,7 +28,7 @@ function isIdentifier(node, name) { * @returns {boolean} `true` if the node is an argument of the specified method call. */ function isArgumentOfMethodCall(node, index, object, property) { - let parent = node.parent; + const parent = node.parent; return ( parent.type === "CallExpression" && @@ -91,9 +91,9 @@ module.exports = { }] }, create: function(context) { - let config = context.options[0] || {}; - let checkGetWithoutSet = config.getWithoutSet === true; - let checkSetWithoutGet = config.setWithoutGet !== false; + const config = context.options[0] || {}; + const checkGetWithoutSet = config.getWithoutSet === true; + const checkSetWithoutGet = config.setWithoutGet !== false; /** * Checks a object expression to see if it has setter and getter both present or none. @@ -104,10 +104,10 @@ module.exports = { function checkLonelySetGet(node) { let isSetPresent = false; let isGetPresent = false; - let isDescriptor = isPropertyDescriptor(node); + const isDescriptor = isPropertyDescriptor(node); for (let i = 0, end = node.properties.length; i < end; i++) { - let property = node.properties[i]; + const property = node.properties[i]; let propToCheck = ""; diff --git a/lib/rules/array-bracket-spacing.js b/lib/rules/array-bracket-spacing.js index 6e26e0cbd50..04376953f1e 100644 --- a/lib/rules/array-bracket-spacing.js +++ b/lib/rules/array-bracket-spacing.js @@ -4,7 +4,7 @@ */ "use strict"; -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -40,7 +40,7 @@ module.exports = { ] }, create: function(context) { - let spaced = context.options[0] === "always", + const spaced = context.options[0] === "always", sourceCode = context.getSourceCode(); /** @@ -54,7 +54,7 @@ module.exports = { return context.options[1] ? context.options[1][option] === !spaced : false; } - let options = { + const options = { spaced: spaced, singleElementException: isOptionSet("singleValue"), objectsInArraysException: isOptionSet("objectsInArrays"), @@ -77,7 +77,7 @@ module.exports = { loc: token.loc.start, message: "There should be no space after '" + token.value + "'.", fix: function(fixer) { - let nextToken = sourceCode.getTokenAfter(token); + const nextToken = sourceCode.getTokenAfter(token); return fixer.removeRange([token.range[1], nextToken.range[0]]); } @@ -96,7 +96,7 @@ module.exports = { loc: token.loc.start, message: "There should be no space before '" + token.value + "'.", fix: function(fixer) { - let previousToken = sourceCode.getTokenBefore(token); + const previousToken = sourceCode.getTokenBefore(token); return fixer.removeRange([previousToken.range[1], token.range[0]]); } @@ -165,20 +165,20 @@ module.exports = { return; } - let first = sourceCode.getFirstToken(node), + const first = sourceCode.getFirstToken(node), second = sourceCode.getFirstToken(node, 1), penultimate = sourceCode.getLastToken(node, 1), last = sourceCode.getLastToken(node), firstElement = node.elements[0], lastElement = node.elements[node.elements.length - 1]; - let openingBracketMustBeSpaced = + const openingBracketMustBeSpaced = options.objectsInArraysException && isObjectType(firstElement) || options.arraysInArraysException && isArrayType(firstElement) || options.singleElementException && node.elements.length === 1 ? !options.spaced : options.spaced; - let closingBracketMustBeSpaced = + const closingBracketMustBeSpaced = options.objectsInArraysException && isObjectType(lastElement) || options.arraysInArraysException && isArrayType(lastElement) || options.singleElementException && node.elements.length === 1 diff --git a/lib/rules/array-callback-return.js b/lib/rules/array-callback-return.js index d72fd57b2e8..eeb5b274d00 100644 --- a/lib/rules/array-callback-return.js +++ b/lib/rules/array-callback-return.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let TARGET_NODE_TYPE = /^(?:Arrow)?FunctionExpression$/; -let TARGET_METHODS = /^(?:every|filter|find(?:Index)?|map|reduce(?:Right)?|some|sort)$/; +const TARGET_NODE_TYPE = /^(?:Arrow)?FunctionExpression$/; +const TARGET_METHODS = /^(?:every|filter|find(?:Index)?|map|reduce(?:Right)?|some|sort)$/; /** * Checks a given code path segment is reachable. @@ -104,7 +104,7 @@ function isTargetMethod(node) { */ function isCallbackOfArrayMethod(node) { while (node) { - let parent = node.parent; + const parent = node.parent; switch (parent.type) { diff --git a/lib/rules/arrow-body-style.js b/lib/rules/arrow-body-style.js index 16f082edae5..521c101658e 100644 --- a/lib/rules/arrow-body-style.js +++ b/lib/rules/arrow-body-style.js @@ -50,11 +50,11 @@ module.exports = { }, create: function(context) { - let options = context.options; - let always = options[0] === "always"; - let asNeeded = !options[0] || options[0] === "as-needed"; - let never = options[0] === "never"; - let requireReturnForObjectLiteral = options[1] && options[1].requireReturnForObjectLiteral; + const options = context.options; + const always = options[0] === "always"; + const asNeeded = !options[0] || options[0] === "as-needed"; + const never = options[0] === "never"; + const requireReturnForObjectLiteral = options[1] && options[1].requireReturnForObjectLiteral; /** * Determines whether a arrow function body needs braces @@ -62,7 +62,7 @@ module.exports = { * @returns {void} */ function validate(node) { - let arrowBody = node.body; + const arrowBody = node.body; if (arrowBody.type === "BlockStatement") { if (never) { @@ -72,7 +72,7 @@ module.exports = { message: "Unexpected block statement surrounding arrow body." }); } else { - let blockBody = arrowBody.body; + const blockBody = arrowBody.body; if (blockBody.length !== 1) { return; diff --git a/lib/rules/arrow-parens.js b/lib/rules/arrow-parens.js index fd70ee3465a..e982a537ad8 100644 --- a/lib/rules/arrow-parens.js +++ b/lib/rules/arrow-parens.js @@ -26,11 +26,11 @@ module.exports = { }, create: function(context) { - let message = "Expected parentheses around arrow function argument."; - let asNeededMessage = "Unexpected parentheses around single function argument."; - let asNeeded = context.options[0] === "as-needed"; + const message = "Expected parentheses around arrow function argument."; + const asNeededMessage = "Unexpected parentheses around single function argument."; + const asNeeded = context.options[0] === "as-needed"; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Determines whether a arrow function argument end with `)` @@ -38,7 +38,7 @@ module.exports = { * @returns {void} */ function parens(node) { - let token = sourceCode.getFirstToken(node); + const token = sourceCode.getFirstToken(node); // as-needed: x => x if (asNeeded && node.params.length === 1 && node.params[0].type === "Identifier") { @@ -47,8 +47,8 @@ module.exports = { node: node, message: asNeededMessage, fix: function(fixer) { - let paramToken = context.getTokenAfter(token); - let closingParenToken = context.getTokenAfter(paramToken); + const paramToken = context.getTokenAfter(token); + const closingParenToken = context.getTokenAfter(paramToken); return fixer.replaceTextRange([ token.range[0], @@ -61,7 +61,7 @@ module.exports = { } if (token.type === "Identifier") { - let after = sourceCode.getTokenAfter(token); + const after = sourceCode.getTokenAfter(token); // (x) => x if (after.value !== ")") { diff --git a/lib/rules/arrow-spacing.js b/lib/rules/arrow-spacing.js index 354c860c7b0..570dfe5d690 100644 --- a/lib/rules/arrow-spacing.js +++ b/lib/rules/arrow-spacing.js @@ -37,13 +37,13 @@ module.exports = { create: function(context) { // merge rules with default - let rule = { before: true, after: true }, + const rule = { before: true, after: true }, option = context.options[0] || {}; rule.before = option.before !== false; rule.after = option.after !== false; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Get tokens of arrow(`=>`) and before/after arrow. @@ -58,7 +58,7 @@ module.exports = { before = t; t = sourceCode.getTokenAfter(t); } - let after = sourceCode.getTokenAfter(t); + const after = sourceCode.getTokenAfter(t); return { before: before, arrow: t, after: after }; } @@ -69,8 +69,8 @@ module.exports = { * @returns {Object} count of space before/after arrow. */ function countSpaces(tokens) { - let before = tokens.arrow.range[0] - tokens.before.range[1]; - let after = tokens.after.range[0] - tokens.arrow.range[1]; + const before = tokens.arrow.range[0] - tokens.before.range[1]; + const after = tokens.after.range[0] - tokens.arrow.range[1]; return { before: before, after: after }; } @@ -83,8 +83,8 @@ module.exports = { * @returns {void} */ function spaces(node) { - let tokens = getTokens(node); - let countSpace = countSpaces(tokens); + const tokens = getTokens(node); + const countSpace = countSpaces(tokens); if (rule.before) { diff --git a/lib/rules/block-scoped-var.js b/lib/rules/block-scoped-var.js index f8198ea10ac..c8b0d0c765e 100644 --- a/lib/rules/block-scoped-var.js +++ b/lib/rules/block-scoped-var.js @@ -45,7 +45,7 @@ module.exports = { * @returns {void} */ function report(reference) { - let identifier = reference.identifier; + const identifier = reference.identifier; context.report( identifier, @@ -64,7 +64,7 @@ module.exports = { } // Defines a predicate to check whether or not a given reference is outside of valid scope. - let scopeRange = stack[stack.length - 1]; + const scopeRange = stack[stack.length - 1]; /** * Check if a reference is out of scope @@ -73,13 +73,13 @@ module.exports = { * @private */ function isOutsideOfScope(reference) { - let idRange = reference.identifier.range; + const idRange = reference.identifier.range; return idRange[0] < scopeRange[0] || idRange[1] > scopeRange[1]; } // Gets declared variables, and checks its references. - let variables = context.getDeclaredVariables(node); + const variables = context.getDeclaredVariables(node); for (let i = 0; i < variables.length; ++i) { diff --git a/lib/rules/block-spacing.js b/lib/rules/block-spacing.js index eb24cea319d..f50e432179f 100644 --- a/lib/rules/block-spacing.js +++ b/lib/rules/block-spacing.js @@ -5,7 +5,7 @@ "use strict"; -let util = require("../ast-utils"); +const util = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -27,7 +27,7 @@ module.exports = { }, create: function(context) { - let always = (context.options[0] !== "never"), + const always = (context.options[0] !== "never"), message = always ? "Requires a space" : "Unexpected space(s)", sourceCode = context.getSourceCode(); @@ -72,10 +72,10 @@ module.exports = { function checkSpacingInsideBraces(node) { // Gets braces and the first/last token of content. - let openBrace = getOpenBrace(node); - let closeBrace = sourceCode.getLastToken(node); - let firstToken = sourceCode.getTokenOrCommentAfter(openBrace); - let lastToken = sourceCode.getTokenOrCommentBefore(closeBrace); + const openBrace = getOpenBrace(node); + const closeBrace = sourceCode.getLastToken(node); + const firstToken = sourceCode.getTokenOrCommentAfter(openBrace); + const lastToken = sourceCode.getTokenOrCommentBefore(closeBrace); // Skip if the node is invalid or empty. if (openBrace.type !== "Punctuator" || diff --git a/lib/rules/brace-style.js b/lib/rules/brace-style.js index 325130a4a2f..256f4c0349c 100644 --- a/lib/rules/brace-style.js +++ b/lib/rules/brace-style.js @@ -34,11 +34,11 @@ module.exports = { }, create: function(context) { - let style = context.options[0] || "1tbs", + const style = context.options[0] || "1tbs", params = context.options[1] || {}, sourceCode = context.getSourceCode(); - let OPEN_MESSAGE = "Opening curly brace does not appear on the same line as controlling statement.", + const OPEN_MESSAGE = "Opening curly brace does not appear on the same line as controlling statement.", OPEN_MESSAGE_ALLMAN = "Opening curly brace appears on the same line as controlling statement.", BODY_MESSAGE = "Statement inside of curly braces should be on next line.", CLOSE_MESSAGE = "Closing curly brace does not appear on the same line as the subsequent block.", @@ -78,24 +78,20 @@ module.exports = { * @private */ function checkBlock() { - let blockProperties = arguments; + const blockProperties = arguments; return function(node) { Array.prototype.forEach.call(blockProperties, function(blockProp) { - let block = node[blockProp], - previousToken, - curlyToken, - curlyTokenEnd, - allOnSameLine; + const block = node[blockProp]; if (!isBlock(block)) { return; } - previousToken = sourceCode.getTokenBefore(block); - curlyToken = sourceCode.getFirstToken(block); - curlyTokenEnd = sourceCode.getLastToken(block); - allOnSameLine = previousToken.loc.start.line === curlyTokenEnd.loc.start.line; + const previousToken = sourceCode.getTokenBefore(block); + const curlyToken = sourceCode.getFirstToken(block); + const curlyTokenEnd = sourceCode.getLastToken(block); + const allOnSameLine = previousToken.loc.start.line === curlyTokenEnd.loc.start.line; if (allOnSameLine && params.allowSingleLine) { return; @@ -129,13 +125,11 @@ module.exports = { * @private */ function checkIfStatement(node) { - let tokens; - checkBlock("consequent", "alternate")(node); if (node.alternate) { - tokens = sourceCode.getTokensBefore(node.alternate, 2); + const tokens = sourceCode.getTokensBefore(node.alternate, 2); if (style === "1tbs") { if (tokens[0].loc.start.line !== tokens[1].loc.start.line && @@ -157,12 +151,11 @@ module.exports = { * @private */ function checkTryStatement(node) { - let tokens; - checkBlock("block", "finalizer")(node); if (isBlock(node.finalizer)) { - tokens = sourceCode.getTokensBefore(node.finalizer, 2); + const tokens = sourceCode.getTokensBefore(node.finalizer, 2); + if (style === "1tbs") { if (tokens[0].loc.start.line !== tokens[1].loc.start.line) { context.report(node.finalizer, CLOSE_MESSAGE); @@ -180,7 +173,7 @@ module.exports = { * @private */ function checkCatchClause(node) { - let previousToken = sourceCode.getTokenBefore(node), + const previousToken = sourceCode.getTokenBefore(node), firstToken = sourceCode.getFirstToken(node); checkBlock("body")(node); diff --git a/lib/rules/callback-return.js b/lib/rules/callback-return.js index 0b9d4a48941..699eaa7ea69 100644 --- a/lib/rules/callback-return.js +++ b/lib/rules/callback-return.js @@ -24,7 +24,7 @@ module.exports = { create: function(context) { - let callbacks = context.options[0] || ["callback", "cb", "next"], + const callbacks = context.options[0] || ["callback", "cb", "next"], sourceCode = context.getSourceCode(); //-------------------------------------------------------------------------- @@ -118,8 +118,7 @@ module.exports = { } // find the closest block, return or loop - let closestBlock = findClosestParentOfType(node, ["BlockStatement", "ReturnStatement", "ArrowFunctionExpression"]) || {}, - lastItem, parentType; + const closestBlock = findClosestParentOfType(node, ["BlockStatement", "ReturnStatement", "ArrowFunctionExpression"]) || {}; // if our parent is a return we know we're ok if (closestBlock.type === "ReturnStatement") { @@ -135,12 +134,12 @@ module.exports = { if (closestBlock.type === "BlockStatement") { // find the last item in the block - lastItem = closestBlock.body[closestBlock.body.length - 1]; + const lastItem = closestBlock.body[closestBlock.body.length - 1]; // if the callback is the last thing in a block that might be ok if (isCallbackExpression(node, lastItem)) { - parentType = closestBlock.parent.type; + const parentType = closestBlock.parent.type; // but only if the block is part of a function if (parentType === "FunctionExpression" || diff --git a/lib/rules/camelcase.js b/lib/rules/camelcase.js index ba204dd594f..e3f8a10770b 100644 --- a/lib/rules/camelcase.js +++ b/lib/rules/camelcase.js @@ -37,7 +37,7 @@ module.exports = { //-------------------------------------------------------------------------- // contains reported nodes to avoid reporting twice on destructuring with shorthand notation - let reported = []; + const reported = []; /** * Checks if a string contains an underscore and isn't all upper-case @@ -64,8 +64,8 @@ module.exports = { } } - let options = context.options[0] || {}, - properties = options.properties || ""; + const options = context.options[0] || {}; + let properties = options.properties || ""; if (properties !== "always" && properties !== "never") { properties = "always"; @@ -79,7 +79,7 @@ module.exports = { * Leading and trailing underscores are commonly used to flag * private/protected identifiers, strip them */ - let name = node.name.replace(/^_+|_+$/g, ""), + const name = node.name.replace(/^_+|_+$/g, ""), effectiveParent = (node.parent.type === "MemberExpression") ? node.parent.parent : node.parent; // MemberExpressions get special rules diff --git a/lib/rules/comma-dangle.js b/lib/rules/comma-dangle.js index 69a72e8fcad..719ae124c6a 100644 --- a/lib/rules/comma-dangle.js +++ b/lib/rules/comma-dangle.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let lodash = require("lodash"); +const lodash = require("lodash"); /** * Checks whether or not a trailing comma is allowed in a given node. @@ -45,9 +45,9 @@ module.exports = { }, create: function(context) { - let mode = context.options[0]; - let UNEXPECTED_MESSAGE = "Unexpected trailing comma."; - let MISSING_MESSAGE = "Missing trailing comma."; + const mode = context.options[0]; + const UNEXPECTED_MESSAGE = "Unexpected trailing comma."; + const MISSING_MESSAGE = "Missing trailing comma."; /** * Checks whether or not a given node is multiline. @@ -58,14 +58,14 @@ module.exports = { * @returns {boolean} `true` if the node is multiline. */ function isMultiline(node) { - let lastItem = lodash.last(node.properties || node.elements || node.specifiers); + const lastItem = lodash.last(node.properties || node.elements || node.specifiers); if (!lastItem) { return false; } - let sourceCode = context.getSourceCode(), - penultimateToken = sourceCode.getLastToken(lastItem), + const sourceCode = context.getSourceCode(); + let penultimateToken = sourceCode.getLastToken(lastItem), lastToken = sourceCode.getTokenAfter(penultimateToken); // parentheses are a pain @@ -91,14 +91,14 @@ module.exports = { * @returns {void} */ function forbidTrailingComma(node) { - let lastItem = lodash.last(node.properties || node.elements || node.specifiers); + const lastItem = lodash.last(node.properties || node.elements || node.specifiers); if (!lastItem || (node.type === "ImportDeclaration" && lastItem.type !== "ImportSpecifier")) { return; } - let sourceCode = context.getSourceCode(), - trailingToken; + const sourceCode = context.getSourceCode(); + let trailingToken; // last item can be surrounded by parentheses for object and array literals if (node.type === "ObjectExpression" || node.type === "ArrayExpression") { @@ -132,7 +132,7 @@ module.exports = { * @returns {void} */ function forceTrailingComma(node) { - let lastItem = lodash.last(node.properties || node.elements || node.specifiers); + const lastItem = lodash.last(node.properties || node.elements || node.specifiers); if (!lastItem || (node.type === "ImportDeclaration" && lastItem.type !== "ImportSpecifier")) { return; @@ -142,8 +142,8 @@ module.exports = { return; } - let sourceCode = context.getSourceCode(), - penultimateToken = lastItem, + const sourceCode = context.getSourceCode(); + let penultimateToken = lastItem, trailingToken = sourceCode.getTokenAfter(lastItem); // Skip close parentheses. diff --git a/lib/rules/comma-spacing.js b/lib/rules/comma-spacing.js index ea516e03335..c8d01847dfd 100644 --- a/lib/rules/comma-spacing.js +++ b/lib/rules/comma-spacing.js @@ -4,7 +4,7 @@ */ "use strict"; -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -38,10 +38,10 @@ module.exports = { create: function(context) { - let sourceCode = context.getSourceCode(); - let tokensAndComments = sourceCode.tokensAndComments; + const sourceCode = context.getSourceCode(); + const tokensAndComments = sourceCode.tokensAndComments; - let options = { + const options = { before: context.options[0] ? !!context.options[0].before : false, after: context.options[0] ? !!context.options[0].after : true }; @@ -51,7 +51,7 @@ module.exports = { //-------------------------------------------------------------------------- // list of comma tokens to ignore for the check of leading whitespace - let commaTokensToIgnore = []; + const commaTokensToIgnore = []; /** * Determines if a given token is a comma operator. @@ -83,7 +83,7 @@ module.exports = { } } else { let start, end; - let newText = ""; + const newText = ""; if (dir === "before") { start = otherNode.range[1]; @@ -161,10 +161,6 @@ module.exports = { return { "Program:exit": function() { - - let previousToken, - nextToken; - tokensAndComments.forEach(function(token, i) { if (!isComma(token)) { @@ -175,8 +171,8 @@ module.exports = { return; } - previousToken = tokensAndComments[i - 1]; - nextToken = tokensAndComments[i + 1]; + const previousToken = tokensAndComments[i - 1]; + const nextToken = tokensAndComments[i + 1]; validateCommaItemSpacing({ comma: token, diff --git a/lib/rules/comma-style.js b/lib/rules/comma-style.js index 69b657f62d4..9a7c4613d01 100644 --- a/lib/rules/comma-style.js +++ b/lib/rules/comma-style.js @@ -5,7 +5,7 @@ "use strict"; -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -39,9 +39,9 @@ module.exports = { }, create: function(context) { - let style = context.options[0] || "last", - exceptions = {}, + const style = context.options[0] || "last", sourceCode = context.getSourceCode(); + let exceptions = {}; if (context.options.length === 2 && context.options[1].hasOwnProperty("exceptions")) { exceptions = context.options[1].exceptions; @@ -108,17 +108,16 @@ module.exports = { * @returns {void} */ function validateComma(node, property) { - let items = node[property], - arrayLiteral = (node.type === "ArrayExpression"), - previousItemToken; + const items = node[property], + arrayLiteral = (node.type === "ArrayExpression"); if (items.length > 1 || arrayLiteral) { // seed as opening [ - previousItemToken = sourceCode.getFirstToken(node); + let previousItemToken = sourceCode.getFirstToken(node); items.forEach(function(item) { - let commaToken = item ? sourceCode.getTokenBefore(item) : previousItemToken, + const commaToken = item ? sourceCode.getTokenBefore(item) : previousItemToken, currentItemToken = item ? sourceCode.getFirstToken(item) : sourceCode.getTokenAfter(commaToken), reportItem = item || currentItemToken, tokenBeforeComma = sourceCode.getTokenBefore(commaToken); @@ -158,7 +157,7 @@ module.exports = { */ if (arrayLiteral) { - let lastToken = sourceCode.getLastToken(node), + const lastToken = sourceCode.getLastToken(node), nextToLastToken = sourceCode.getTokenBefore(lastToken); if (isComma(nextToLastToken)) { @@ -177,7 +176,7 @@ module.exports = { // Public //-------------------------------------------------------------------------- - let nodes = {}; + const nodes = {}; if (!exceptions.VariableDeclaration) { nodes.VariableDeclaration = function(node) { diff --git a/lib/rules/complexity.js b/lib/rules/complexity.js index 394df98c44a..10f8655dcce 100644 --- a/lib/rules/complexity.js +++ b/lib/rules/complexity.js @@ -45,8 +45,8 @@ module.exports = { }, create: function(context) { - let option = context.options[0], - THRESHOLD = 20; + const option = context.options[0]; + let THRESHOLD = 20; if (typeof option === "object" && option.hasOwnProperty("maximum") && typeof option.maximum === "number") { THRESHOLD = option.maximum; @@ -63,7 +63,7 @@ module.exports = { //-------------------------------------------------------------------------- // Using a stack to store complexity (handling nested functions) - let fns = []; + const fns = []; /** * When parsing a new function, store it in our function stack @@ -81,8 +81,8 @@ module.exports = { * @private */ function endFunction(node) { - let complexity = fns.pop(), - name = "anonymous"; + const complexity = fns.pop(); + let name = "anonymous"; if (node.id) { name = node.id.name; diff --git a/lib/rules/computed-property-spacing.js b/lib/rules/computed-property-spacing.js index 1122c5c83c3..d2861554310 100644 --- a/lib/rules/computed-property-spacing.js +++ b/lib/rules/computed-property-spacing.js @@ -4,7 +4,7 @@ */ "use strict"; -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -28,8 +28,8 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); - let propertyNameMustBeSpaced = context.options[0] === "always"; // default is "never" + const sourceCode = context.getSourceCode(); + const propertyNameMustBeSpaced = context.options[0] === "always"; // default is "never" //-------------------------------------------------------------------------- // Helpers @@ -117,9 +117,9 @@ module.exports = { return; } - let property = node[propertyName]; + const property = node[propertyName]; - let before = sourceCode.getTokenBefore(property), + const before = sourceCode.getTokenBefore(property), first = sourceCode.getFirstToken(property), last = sourceCode.getLastToken(property), after = sourceCode.getTokenAfter(property); diff --git a/lib/rules/consistent-return.js b/lib/rules/consistent-return.js index ffadd31bfd7..42fd91e3fbe 100644 --- a/lib/rules/consistent-return.js +++ b/lib/rules/consistent-return.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Helpers @@ -57,8 +57,8 @@ module.exports = { }, create: function(context) { - let options = context.options[0] || {}; - let treatUndefinedAsUnspecified = options.treatUndefinedAsUnspecified === true; + const options = context.options[0] || {}; + const treatUndefinedAsUnspecified = options.treatUndefinedAsUnspecified === true; let funcInfo = null; /** @@ -135,7 +135,7 @@ module.exports = { // Reports a given return statement if it's inconsistent. ReturnStatement: function(node) { - let argument = node.argument; + const argument = node.argument; let hasReturnValue = Boolean(argument); if (treatUndefinedAsUnspecified && hasReturnValue) { diff --git a/lib/rules/consistent-this.js b/lib/rules/consistent-this.js index 339c43995e8..c61f9da6cb9 100644 --- a/lib/rules/consistent-this.js +++ b/lib/rules/consistent-this.js @@ -57,7 +57,7 @@ module.exports = { * @returns {void} */ function checkAssignment(node, name, value) { - let isThis = value.type === "ThisExpression"; + const isThis = value.type === "ThisExpression"; if (aliases.indexOf(name) !== -1) { if (!isThis || node.operator && node.operator !== "=") { @@ -78,7 +78,7 @@ module.exports = { * @returns {void} */ function checkWasAssigned(alias, scope) { - let variable = scope.set.get(alias); + const variable = scope.set.get(alias); if (!variable) { return; @@ -94,7 +94,7 @@ module.exports = { // The alias has been declared and not assigned: check it was // assigned later in the same scope. if (!variable.references.some(function(reference) { - let write = reference.writeExpr; + const write = reference.writeExpr; return ( reference.from === scope && @@ -115,7 +115,7 @@ module.exports = { * @returns {void} */ function ensureWasAssigned() { - let scope = context.getScope(); + const scope = context.getScope(); aliases.forEach(function(alias) { checkWasAssigned(alias, scope); @@ -128,8 +128,8 @@ module.exports = { "FunctionDeclaration:exit": ensureWasAssigned, VariableDeclarator: function(node) { - let id = node.id; - let isDestructuring = + const id = node.id; + const isDestructuring = id.type === "ArrayPattern" || id.type === "ObjectPattern"; if (node.init !== null && !isDestructuring) { diff --git a/lib/rules/constructor-super.js b/lib/rules/constructor-super.js index 7b7e8cfd3e9..68bbc5ec18d 100644 --- a/lib/rules/constructor-super.js +++ b/lib/rules/constructor-super.js @@ -164,8 +164,8 @@ module.exports = { if (isConstructorFunction(node)) { // Class > ClassBody > MethodDefinition > FunctionExpression - let classNode = node.parent.parent.parent; - let superClass = classNode.superClass; + const classNode = node.parent.parent.parent; + const superClass = classNode.superClass; funcInfo = { upper: funcInfo, @@ -193,7 +193,7 @@ module.exports = { * @returns {void} */ onCodePathEnd: function(codePath, node) { - let hasExtends = funcInfo.hasExtends; + const hasExtends = funcInfo.hasExtends; // Pop. funcInfo = funcInfo.upper; @@ -203,9 +203,9 @@ module.exports = { } // Reports if `super()` lacked. - let segments = codePath.returnedSegments; - let calledInEveryPaths = segments.every(isCalledInEveryPath); - let calledInSomePaths = segments.some(isCalledInSomePath); + const segments = codePath.returnedSegments; + const calledInEveryPaths = segments.every(isCalledInEveryPath); + const calledInSomePaths = segments.some(isCalledInSomePath); if (!calledInEveryPaths) { context.report({ @@ -228,14 +228,14 @@ module.exports = { } // Initialize info. - let info = segInfoMap[segment.id] = { + const info = segInfoMap[segment.id] = { calledInSomePaths: false, calledInEveryPaths: false, validNodes: [] }; // When there are previous segments, aggregates these. - let prevSegments = segment.prevSegments; + const prevSegments = segment.prevSegments; if (prevSegments.length > 0) { info.calledInSomePaths = prevSegments.some(isCalledInSomePath); @@ -258,13 +258,13 @@ module.exports = { } // Update information inside of the loop. - let isRealLoop = toSegment.prevSegments.length >= 2; + const isRealLoop = toSegment.prevSegments.length >= 2; funcInfo.codePath.traverseSegments( {first: toSegment, last: fromSegment}, function(segment) { - let info = segInfoMap[segment.id]; - let prevSegments = segment.prevSegments; + const info = segInfoMap[segment.id]; + const prevSegments = segment.prevSegments; // Updates flags. info.calledInSomePaths = prevSegments.some(isCalledInSomePath); @@ -272,12 +272,12 @@ module.exports = { // If flags become true anew, reports the valid nodes. if (info.calledInSomePaths || isRealLoop) { - let nodes = info.validNodes; + const nodes = info.validNodes; info.validNodes = []; for (let i = 0; i < nodes.length; ++i) { - let node = nodes[i]; + const node = nodes[i]; context.report({ message: "Unexpected duplicate 'super()'.", @@ -306,12 +306,12 @@ module.exports = { // Reports if needed. if (funcInfo.hasExtends) { - let segments = funcInfo.codePath.currentSegments; + const segments = funcInfo.codePath.currentSegments; let duplicate = false; let info = null; for (let i = 0; i < segments.length; ++i) { - let segment = segments[i]; + const segment = segments[i]; if (segment.reachable) { info = segInfoMap[segment.id]; @@ -360,13 +360,13 @@ module.exports = { } // Returning argument is a substitute of 'super()'. - let segments = funcInfo.codePath.currentSegments; + const segments = funcInfo.codePath.currentSegments; for (let i = 0; i < segments.length; ++i) { - let segment = segments[i]; + const segment = segments[i]; if (segment.reachable) { - let info = segInfoMap[segment.id]; + const info = segInfoMap[segment.id]; info.calledInSomePaths = info.calledInEveryPaths = true; } diff --git a/lib/rules/curly.js b/lib/rules/curly.js index 912f321565e..5ca7713763c 100644 --- a/lib/rules/curly.js +++ b/lib/rules/curly.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -53,12 +53,12 @@ module.exports = { create: function(context) { - let multiOnly = (context.options[0] === "multi"); - let multiLine = (context.options[0] === "multi-line"); - let multiOrNest = (context.options[0] === "multi-or-nest"); - let consistent = (context.options[1] === "consistent"); + const multiOnly = (context.options[0] === "multi"); + const multiLine = (context.options[0] === "multi-line"); + const multiOrNest = (context.options[0] === "multi-or-nest"); + const consistent = (context.options[1] === "consistent"); - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); //-------------------------------------------------------------------------- // Helpers @@ -71,7 +71,7 @@ module.exports = { * @private */ function isCollapsedOneLiner(node) { - let before = sourceCode.getTokenBefore(node), + const before = sourceCode.getTokenBefore(node), last = sourceCode.getLastToken(node); return before.loc.start.line === last.loc.end.line; @@ -84,7 +84,7 @@ module.exports = { * @private */ function isOneLiner(node) { - let first = sourceCode.getFirstToken(node), + const first = sourceCode.getFirstToken(node), last = sourceCode.getLastToken(node); return first.loc.start.line === last.loc.end.line; @@ -189,7 +189,7 @@ module.exports = { * properties. */ function prepareCheck(node, body, name, suffix) { - let hasBlock = (body.type === "BlockStatement"); + const hasBlock = (body.type === "BlockStatement"); let expected = null; if (node.type === "IfStatement" && node.consequent === body && requiresBraceOfConsequent(node)) { @@ -234,7 +234,7 @@ module.exports = { * information. */ function prepareIfChecks(node) { - let preparedChecks = []; + const preparedChecks = []; do { preparedChecks.push(prepareCheck(node, node.consequent, "if", "condition")); @@ -252,7 +252,7 @@ module.exports = { * all have braces. * If all nodes shouldn't have braces, make sure they don't. */ - let expected = preparedChecks.some(function(preparedCheck) { + const expected = preparedChecks.some(function(preparedCheck) { if (preparedCheck.expected !== null) { return preparedCheck.expected; } diff --git a/lib/rules/default-case.js b/lib/rules/default-case.js index 9bcb1c065b8..8a6135d24b6 100644 --- a/lib/rules/default-case.js +++ b/lib/rules/default-case.js @@ -4,7 +4,7 @@ */ "use strict"; -let DEFAULT_COMMENT_PATTERN = /^no default$/; +const DEFAULT_COMMENT_PATTERN = /^no default$/; //------------------------------------------------------------------------------ // Rule Definition @@ -30,12 +30,12 @@ module.exports = { }, create: function(context) { - let options = context.options[0] || {}; - let commentPattern = options.commentPattern ? + const options = context.options[0] || {}; + const commentPattern = options.commentPattern ? new RegExp(options.commentPattern) : DEFAULT_COMMENT_PATTERN; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); //-------------------------------------------------------------------------- // Helpers @@ -67,18 +67,16 @@ module.exports = { return; } - let hasDefault = node.cases.some(function(v) { + const hasDefault = node.cases.some(function(v) { return v.test === null; }); if (!hasDefault) { let comment; - let comments; - let lastCase = last(node.cases); - - comments = sourceCode.getComments(lastCase).trailing; + const lastCase = last(node.cases); + const comments = sourceCode.getComments(lastCase).trailing; if (comments.length) { comment = last(comments); diff --git a/lib/rules/dot-location.js b/lib/rules/dot-location.js index 5a5ad353bfd..f632ce51907 100644 --- a/lib/rules/dot-location.js +++ b/lib/rules/dot-location.js @@ -5,7 +5,7 @@ "use strict"; -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -28,12 +28,12 @@ module.exports = { create: function(context) { - let config = context.options[0]; + const config = context.options[0]; // default to onObject if no preference is passed - let onObject = config === "object" || !config; + const onObject = config === "object" || !config; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Reports if the dot between object and property is on the correct loccation. @@ -43,7 +43,7 @@ module.exports = { * @returns {void} */ function checkDotLocation(obj, prop, node) { - let dot = sourceCode.getTokenBefore(prop); + const dot = sourceCode.getTokenBefore(prop); if (dot.type === "Punctuator" && dot.value === ".") { if (onObject) { diff --git a/lib/rules/dot-notation.js b/lib/rules/dot-notation.js index e359b118ccb..2cbbe07eb15 100644 --- a/lib/rules/dot-notation.js +++ b/lib/rules/dot-notation.js @@ -8,8 +8,8 @@ // Rule Definition //------------------------------------------------------------------------------ -let validIdentifier = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/; -let keywords = require("../util/keywords"); +const validIdentifier = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/; +const keywords = require("../util/keywords"); module.exports = { meta: { @@ -36,8 +36,8 @@ module.exports = { }, create: function(context) { - let options = context.options[0] || {}; - let allowKeywords = options.allowKeywords === void 0 || !!options.allowKeywords; + const options = context.options[0] || {}; + const allowKeywords = options.allowKeywords === void 0 || !!options.allowKeywords; let allowPattern; diff --git a/lib/rules/eol-last.js b/lib/rules/eol-last.js index faa4521cf12..15021dd0929 100644 --- a/lib/rules/eol-last.js +++ b/lib/rules/eol-last.js @@ -35,7 +35,7 @@ module.exports = { Program: function checkBadEOF(node) { - let sourceCode = context.getSourceCode(), + const sourceCode = context.getSourceCode(), src = sourceCode.getText(), location = {column: 1}, linebreakStyle = context.options[0] || "unix", diff --git a/lib/rules/eqeqeq.js b/lib/rules/eqeqeq.js index 124c9dd61a3..356f4a9967c 100644 --- a/lib/rules/eqeqeq.js +++ b/lib/rules/eqeqeq.js @@ -25,7 +25,7 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Checks if an expression is a typeof expression @@ -76,7 +76,7 @@ module.exports = { * @private */ function getOperatorLocation(node) { - let opToken = sourceCode.getTokenAfter(node.left); + const opToken = sourceCode.getTokenAfter(node.left); return {line: opToken.loc.start.line, column: opToken.loc.start.column}; } diff --git a/lib/rules/func-names.js b/lib/rules/func-names.js index 12d8d34d5da..a2fe1e972d4 100644 --- a/lib/rules/func-names.js +++ b/lib/rules/func-names.js @@ -34,7 +34,7 @@ module.exports = { }, create: function(context) { - let never = context.options[0] === "never"; + const never = context.options[0] === "never"; /** * Determines whether the current FunctionExpression node is a get, set, or @@ -42,7 +42,7 @@ module.exports = { * @returns {boolean} True if the node is a get, set, or shorthand method. */ function isObjectOrClassMethod() { - let parent = context.getAncestors().pop(); + const parent = context.getAncestors().pop(); return (parent.type === "MethodDefinition" || ( parent.type === "Property" && ( @@ -57,13 +57,13 @@ module.exports = { "FunctionExpression:exit": function(node) { // Skip recursive functions. - let nameVar = context.getDeclaredVariables(node)[0]; + const nameVar = context.getDeclaredVariables(node)[0]; if (isFunctionName(nameVar) && nameVar.references.length > 0) { return; } - let name = node.id && node.id.name; + const name = node.id && node.id.name; if (never) { if (name) { diff --git a/lib/rules/func-style.js b/lib/rules/func-style.js index e1cdc1d1bd1..47cb76ee22d 100644 --- a/lib/rules/func-style.js +++ b/lib/rules/func-style.js @@ -34,16 +34,12 @@ module.exports = { create: function(context) { - let style = context.options[0], + const style = context.options[0], allowArrowFunctions = context.options[1] && context.options[1].allowArrowFunctions === true, enforceDeclarations = (style === "declaration"), stack = []; - let nodesToCheck = { - Program: function() { - stack = []; - }, - + const nodesToCheck = { FunctionDeclaration: function(node) { stack.push(false); @@ -79,7 +75,7 @@ module.exports = { }; nodesToCheck["ArrowFunctionExpression:exit"] = function(node) { - let hasThisExpr = stack.pop(); + const hasThisExpr = stack.pop(); if (enforceDeclarations && !hasThisExpr && node.parent.type === "VariableDeclarator") { context.report(node.parent, "Expected a function declaration."); diff --git a/lib/rules/generator-star-spacing.js b/lib/rules/generator-star-spacing.js index e55fe9b5121..12576171877 100644 --- a/lib/rules/generator-star-spacing.js +++ b/lib/rules/generator-star-spacing.js @@ -40,7 +40,7 @@ module.exports = { create: function(context) { - let mode = (function(option) { + const mode = (function(option) { if (!option || typeof option === "string") { return { before: { before: true, after: false }, @@ -52,7 +52,7 @@ module.exports = { return option; }(context.options[0])); - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Gets `*` token from a given node. @@ -83,11 +83,11 @@ module.exports = { */ function checkSpacing(side, leftToken, rightToken) { if (!!(rightToken.range[0] - leftToken.range[1]) !== mode[side]) { - let after = leftToken.value === "*"; - let spaceRequired = mode[side]; - let node = after ? leftToken : rightToken; - let type = spaceRequired ? "Missing" : "Unexpected"; - let message = type + " space " + side + " *."; + const after = leftToken.value === "*"; + const spaceRequired = mode[side]; + const node = after ? leftToken : rightToken; + const type = spaceRequired ? "Missing" : "Unexpected"; + const message = type + " space " + side + " *."; context.report({ node: node, @@ -111,7 +111,7 @@ module.exports = { * @returns {void} */ function checkFunction(node) { - let prevToken, starToken, nextToken; + let starToken; if (!node.generator) { return; @@ -124,12 +124,14 @@ module.exports = { } // Only check before when preceded by `function`|`static` keyword - prevToken = sourceCode.getTokenBefore(starToken); + const prevToken = sourceCode.getTokenBefore(starToken); + if (prevToken.value === "function" || prevToken.value === "static") { checkSpacing("before", prevToken, starToken); } - nextToken = sourceCode.getTokenAfter(starToken); + const nextToken = sourceCode.getTokenAfter(starToken); + checkSpacing("after", starToken, nextToken); } diff --git a/lib/rules/global-require.js b/lib/rules/global-require.js index 0a104bc3493..6addefc8c81 100644 --- a/lib/rules/global-require.js +++ b/lib/rules/global-require.js @@ -5,7 +5,7 @@ "use strict"; -let ACCEPTABLE_PARENTS = [ +const ACCEPTABLE_PARENTS = [ "AssignmentExpression", "VariableDeclarator", "MemberExpression", @@ -23,7 +23,7 @@ let ACCEPTABLE_PARENTS = [ * @returns {Reference|null} Returns the found reference or null if none were found. */ function findReference(scope, node) { - let references = scope.references.filter(function(reference) { + const references = scope.references.filter(function(reference) { return reference.identifier.range[0] === node.range[0] && reference.identifier.range[1] === node.range[1]; }); @@ -43,7 +43,7 @@ function findReference(scope, node) { * @returns {boolean} Whether or not the name is shadowed. */ function isShadowed(scope, node) { - let reference = findReference(scope, node); + const reference = findReference(scope, node); return reference && reference.resolved && reference.resolved.defs.length > 0; } @@ -62,13 +62,13 @@ module.exports = { create: function(context) { return { CallExpression: function(node) { - let currentScope = context.getScope(), - isGoodRequire; + const currentScope = context.getScope(); if (node.callee.name === "require" && !isShadowed(currentScope, node.callee)) { - isGoodRequire = context.getAncestors().every(function(parent) { + const isGoodRequire = context.getAncestors().every(function(parent) { return ACCEPTABLE_PARENTS.indexOf(parent.type) > -1; }); + if (!isGoodRequire) { context.report(node, "Unexpected require()."); } diff --git a/lib/rules/guard-for-in.js b/lib/rules/guard-for-in.js index 7e4dfbc43e3..bc25b2c9cb9 100644 --- a/lib/rules/guard-for-in.js +++ b/lib/rules/guard-for-in.js @@ -30,7 +30,7 @@ module.exports = { * If the for-in statement has {}, then the real body is the body * of the BlockStatement. Otherwise, just use body as provided. */ - let body = node.body.type === "BlockStatement" ? node.body.body[0] : node.body; + const body = node.body.type === "BlockStatement" ? node.body.body[0] : node.body; if (body && body.type !== "IfStatement") { context.report(node, "The body of a for-in should be wrapped in an if statement to filter unwanted properties from the prototype."); diff --git a/lib/rules/handle-callback-err.js b/lib/rules/handle-callback-err.js index 836d3a6de76..c6f464aa1b8 100644 --- a/lib/rules/handle-callback-err.js +++ b/lib/rules/handle-callback-err.js @@ -26,7 +26,7 @@ module.exports = { create: function(context) { - let errorArgument = context.options[0] || "err"; + const errorArgument = context.options[0] || "err"; /** * Checks if the given argument should be interpreted as a regexp pattern. @@ -34,7 +34,7 @@ module.exports = { * @returns {boolean} Whether or not the string should be interpreted as a pattern. */ function isPattern(stringToCheck) { - let firstChar = stringToCheck[0]; + const firstChar = stringToCheck[0]; return firstChar === "^"; } @@ -46,7 +46,7 @@ module.exports = { */ function matchesConfiguredErrorName(name) { if (isPattern(errorArgument)) { - let regexp = new RegExp(errorArgument); + const regexp = new RegExp(errorArgument); return regexp.test(name); } @@ -70,7 +70,7 @@ module.exports = { * @returns {void} */ function checkForError(node) { - let scope = context.getScope(), + const scope = context.getScope(), parameters = getParameters(scope), firstParameter = parameters[0]; diff --git a/lib/rules/id-blacklist.js b/lib/rules/id-blacklist.js index d2be0d12c30..2d2b40100a5 100644 --- a/lib/rules/id-blacklist.js +++ b/lib/rules/id-blacklist.js @@ -34,7 +34,7 @@ module.exports = { // Helpers //-------------------------------------------------------------------------- - let blacklist = context.options; + const blacklist = context.options; /** @@ -75,7 +75,7 @@ module.exports = { return { Identifier: function(node) { - let name = node.name, + const name = node.name, effectiveParent = (node.parent.type === "MemberExpression") ? node.parent.parent : node.parent; // MemberExpressions get special rules diff --git a/lib/rules/id-length.js b/lib/rules/id-length.js index d337cdaccef..3f0d233529f 100644 --- a/lib/rules/id-length.js +++ b/lib/rules/id-length.js @@ -45,18 +45,18 @@ module.exports = { }, create: function(context) { - let options = context.options[0] || {}; - let minLength = typeof options.min !== "undefined" ? options.min : 2; - let maxLength = typeof options.max !== "undefined" ? options.max : Infinity; - let properties = options.properties !== "never"; - let exceptions = (options.exceptions ? options.exceptions : []) + const options = context.options[0] || {}; + const minLength = typeof options.min !== "undefined" ? options.min : 2; + const maxLength = typeof options.max !== "undefined" ? options.max : Infinity; + const properties = options.properties !== "never"; + const exceptions = (options.exceptions ? options.exceptions : []) .reduce(function(obj, item) { obj[item] = true; return obj; }, {}); - let SUPPORTED_EXPRESSIONS = { + const SUPPORTED_EXPRESSIONS = { MemberExpression: properties && function(parent) { return !parent.computed && ( @@ -87,17 +87,17 @@ module.exports = { return { Identifier: function(node) { - let name = node.name; - let parent = node.parent; + const name = node.name; + const parent = node.parent; - let isShort = name.length < minLength; - let isLong = name.length > maxLength; + const isShort = name.length < minLength; + const isLong = name.length > maxLength; if (!(isShort || isLong) || exceptions[name]) { return; // Nothing to report } - let isValidExpression = SUPPORTED_EXPRESSIONS[parent.type]; + const isValidExpression = SUPPORTED_EXPRESSIONS[parent.type]; if (isValidExpression && (isValidExpression === true || isValidExpression(parent, node))) { context.report( diff --git a/lib/rules/id-match.js b/lib/rules/id-match.js index 4128cbf3d1a..777dacfbca6 100644 --- a/lib/rules/id-match.js +++ b/lib/rules/id-match.js @@ -38,10 +38,10 @@ module.exports = { // Helpers //-------------------------------------------------------------------------- - let pattern = context.options[0] || "^.+$", + const pattern = context.options[0] || "^.+$", regexp = new RegExp(pattern); - let options = context.options[1] || {}, + const options = context.options[1] || {}, properties = !!options.properties, onlyDeclarations = !!options.onlyDeclarations; @@ -84,7 +84,7 @@ module.exports = { return { Identifier: function(node) { - let name = node.name, + const name = node.name, parent = node.parent, effectiveParent = (parent.type === "MemberExpression") ? parent.parent : parent; @@ -122,7 +122,7 @@ module.exports = { } } else { - let isDeclaration = effectiveParent.type === "FunctionDeclaration" || effectiveParent.type === "VariableDeclarator"; + const isDeclaration = effectiveParent.type === "FunctionDeclaration" || effectiveParent.type === "VariableDeclarator"; if (onlyDeclarations && !isDeclaration) { return; diff --git a/lib/rules/indent.js b/lib/rules/indent.js index b24f942d1ae..496c19a713f 100644 --- a/lib/rules/indent.js +++ b/lib/rules/indent.js @@ -11,8 +11,8 @@ //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ -let util = require("util"); -let lodash = require("lodash"); +const util = require("util"); +const lodash = require("lodash"); module.exports = { meta: { @@ -84,12 +84,12 @@ module.exports = { create: function(context) { - let MESSAGE = "Expected indentation of {{needed}} {{type}} {{characters}} but found {{gotten}}."; - let DEFAULT_VARIABLE_INDENT = 1; + const MESSAGE = "Expected indentation of {{needed}} {{type}} {{characters}} but found {{gotten}}."; + const DEFAULT_VARIABLE_INDENT = 1; let indentType = "space"; let indentSize = 4; - let options = { + const options = { SwitchCase: 0, VariableDeclarator: { var: DEFAULT_VARIABLE_INDENT, @@ -99,7 +99,7 @@ module.exports = { outerIIFEBody: null }; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); if (context.options.length) { if (context.options[0] === "tab") { @@ -111,10 +111,10 @@ module.exports = { } if (context.options[1]) { - let opts = context.options[1]; + const opts = context.options[1]; options.SwitchCase = opts.SwitchCase || 0; - let variableDeclaratorRules = opts.VariableDeclarator; + const variableDeclaratorRules = opts.VariableDeclarator; if (typeof variableDeclaratorRules === "number") { options.VariableDeclarator = { @@ -136,12 +136,12 @@ module.exports = { } } - let indentPattern = { + const indentPattern = { normal: indentType === "space" ? /^ +/ : /^\t+/, excludeCommas: indentType === "space" ? /^[ ,]+/ : /^[\t,]+/ }; - let caseIndentStore = {}; + const caseIndentStore = {}; /** * Reports a given indent violation and properly pluralizes the message @@ -153,13 +153,13 @@ module.exports = { * @returns {void} */ function report(node, needed, gotten, loc, isLastNodeCheck) { - let msgContext = { + const msgContext = { needed: needed, type: indentType, characters: needed === 1 ? "character" : "characters", gotten: gotten }; - let indentChar = indentType === "space" ? " " : "\t"; + const indentChar = indentType === "space" ? " " : "\t"; /** * Responsible for fixing the indentation issue fix @@ -170,7 +170,7 @@ module.exports = { let rangeToFix = []; if (needed > gotten) { - let spaces = "" + new Array(needed - gotten + 1).join(indentChar); // replace with repeat in future + const spaces = "" + new Array(needed - gotten + 1).join(indentChar); // replace with repeat in future if (isLastNodeCheck === true) { rangeToFix = [ @@ -232,10 +232,10 @@ module.exports = { * @returns {int} Indent */ function getNodeIndent(node, byLastLine, excludeCommas) { - let token = byLastLine ? sourceCode.getLastToken(node) : sourceCode.getFirstToken(node); - let src = sourceCode.getText(token, token.loc.start.column); - let regExp = excludeCommas ? indentPattern.excludeCommas : indentPattern.normal; - let indent = regExp.exec(src); + const token = byLastLine ? sourceCode.getLastToken(node) : sourceCode.getFirstToken(node); + const src = sourceCode.getText(token, token.loc.start.column); + const regExp = excludeCommas ? indentPattern.excludeCommas : indentPattern.normal; + const indent = regExp.exec(src); return indent ? indent[0].length : 0; } @@ -247,7 +247,7 @@ module.exports = { * @returns {boolean} true if its the first in the its start line */ function isNodeFirstInLine(node, byEndLocation) { - let firstToken = byEndLocation === true ? sourceCode.getLastToken(node, 1) : sourceCode.getTokenBefore(node), + const firstToken = byEndLocation === true ? sourceCode.getLastToken(node, 1) : sourceCode.getTokenBefore(node), startLine = byEndLocation === true ? node.loc.end.line : node.loc.start.line, endLine = firstToken ? firstToken.loc.end.line : -1; @@ -262,7 +262,7 @@ module.exports = { * @returns {void} */ function checkNodeIndent(node, indent, excludeCommas) { - let nodeIndent = getNodeIndent(node, false, excludeCommas); + const nodeIndent = getNodeIndent(node, false, excludeCommas); if ( node.type !== "ArrayExpression" && node.type !== "ObjectExpression" && @@ -282,7 +282,7 @@ module.exports = { function checkNodesIndent(nodes, indent, excludeCommas) { nodes.forEach(function(node) { if (node.type === "IfStatement" && node.alternate) { - let elseToken = sourceCode.getTokenBefore(node.alternate); + const elseToken = sourceCode.getTokenBefore(node.alternate); checkNodeIndent(elseToken, indent, excludeCommas); } @@ -297,8 +297,8 @@ module.exports = { * @returns {void} */ function checkLastNodeLineIndent(node, lastLineIndent) { - let lastToken = sourceCode.getLastToken(node); - let endIndent = getNodeIndent(lastToken, true); + const lastToken = sourceCode.getLastToken(node); + const endIndent = getNodeIndent(lastToken, true); if (endIndent !== lastLineIndent && isNodeFirstInLine(node, true)) { report( @@ -318,7 +318,7 @@ module.exports = { * @returns {void} */ function checkFirstNodeLineIndent(node, firstLineIndent) { - let startIndent = getNodeIndent(node, false); + const startIndent = getNodeIndent(node, false); if (startIndent !== firstLineIndent && isNodeFirstInLine(node)) { report( @@ -387,7 +387,7 @@ module.exports = { * @returns {boolean} True if arguments are multi-line */ function isArgBeforeCalleeNodeMultiline(node) { - let parent = node.parent; + const parent = node.parent; if (parent.arguments.length >= 2 && parent.arguments[1] === node) { return parent.arguments[0].loc.end.line > parent.arguments[0].loc.start.line; @@ -402,7 +402,7 @@ module.exports = { * @returns {boolean} True if the node is the outer IIFE */ function isOuterIIFE(node) { - let parent = node.parent; + const parent = node.parent; let stmt = parent.parent; /* @@ -459,7 +459,7 @@ module.exports = { * * Looks for 'Models' */ - let calleeNode = node.parent; // FunctionExpression + const calleeNode = node.parent; // FunctionExpression let indent; if (calleeNode.parent && @@ -475,7 +475,7 @@ module.exports = { } if (calleeNode.parent.type === "CallExpression") { - let calleeParent = calleeNode.parent; + const calleeParent = calleeNode.parent; if (calleeNode.type !== "FunctionExpression" && calleeNode.type !== "ArrowFunctionExpression") { if (calleeParent && calleeParent.loc.start.line < node.loc.start.line) { @@ -500,7 +500,7 @@ module.exports = { indent += functionOffset; // check if the node is inside a variable - let parentVarNode = getVariableDeclaratorNode(node); + const parentVarNode = getVariableDeclaratorNode(node); if (parentVarNode && isNodeInVarOnTop(node, parentVarNode)) { indent += indentSize * options.VariableDeclarator[parentVarNode.parent.kind]; @@ -520,7 +520,7 @@ module.exports = { * @returns {boolean} Whether or not the block starts and ends on the same line. */ function isSingleLineNode(node) { - let lastToken = sourceCode.getLastToken(node), + const lastToken = sourceCode.getLastToken(node), startLine = node.loc.start.line, endLine = lastToken.loc.end.line; @@ -567,11 +567,11 @@ module.exports = { let nodeIndent; let elementsIndent; - let parentVarNode = getVariableDeclaratorNode(node); + const parentVarNode = getVariableDeclaratorNode(node); // TODO - come up with a better strategy in future if (isNodeFirstInLine(node)) { - let parent = node.parent; + const parent = node.parent; let effectiveParent = parent; if (parent.type === "MemberExpression") { @@ -668,7 +668,7 @@ module.exports = { * For this statements we should check indent from statement beginning, * not from the beginning of the block. */ - let statementsWithProperties = [ + const statementsWithProperties = [ "IfStatement", "WhileStatement", "ForStatement", "ForInStatement", "ForOfStatement", "DoWhileStatement", "ClassDeclaration" ]; @@ -703,7 +703,7 @@ module.exports = { */ function filterOutSameLineVars(node) { return node.declarations.reduce(function(finalCollection, elem) { - let lastElem = finalCollection[finalCollection.length - 1]; + const lastElem = finalCollection[finalCollection.length - 1]; if ((elem.loc.start.line !== node.loc.start.line && !lastElem) || (lastElem && lastElem.loc.start.line !== elem.loc.start.line)) { @@ -720,11 +720,11 @@ module.exports = { * @returns {void} */ function checkIndentInVariableDeclarations(node) { - let elements = filterOutSameLineVars(node); - let nodeIndent = getNodeIndent(node); - let lastElement = elements[elements.length - 1]; + const elements = filterOutSameLineVars(node); + const nodeIndent = getNodeIndent(node); + const lastElement = elements[elements.length - 1]; - let elementsIndent = nodeIndent + indentSize * options.VariableDeclarator[node.kind]; + const elementsIndent = nodeIndent + indentSize * options.VariableDeclarator[node.kind]; // Comma can be placed before declaration checkNodesIndent(elements, elementsIndent, true); @@ -734,7 +734,7 @@ module.exports = { return; } - let tokenBeforeLastElement = sourceCode.getTokenBefore(lastElement); + const tokenBeforeLastElement = sourceCode.getTokenBefore(lastElement); if (tokenBeforeLastElement.value === ",") { @@ -764,7 +764,7 @@ module.exports = { * @returns {int} indent size */ function expectedCaseIndent(node, switchIndent) { - let switchNode = (node.type === "SwitchStatement") ? node : node.parent; + const switchNode = (node.type === "SwitchStatement") ? node : node.parent; let caseIndent; if (caseIndentStore[switchNode.loc.start.line]) { @@ -849,11 +849,11 @@ module.exports = { return; } - let propertyIndent = getNodeIndent(node) + indentSize * options.MemberExpression; + const propertyIndent = getNodeIndent(node) + indentSize * options.MemberExpression; - let checkNodes = [node.property]; + const checkNodes = [node.property]; - let dot = context.getTokenBefore(node.property); + const dot = context.getTokenBefore(node.property); if (dot.type === "Punctuator" && dot.value === ".") { checkNodes.push(dot); @@ -865,8 +865,8 @@ module.exports = { SwitchStatement: function(node) { // Switch is not a 'BlockStatement' - let switchIndent = getNodeIndent(node); - let caseIndent = expectedCaseIndent(node, switchIndent); + const switchIndent = getNodeIndent(node); + const caseIndent = expectedCaseIndent(node, switchIndent); checkNodesIndent(node.cases, caseIndent); @@ -880,7 +880,7 @@ module.exports = { if (isSingleLineNode(node)) { return; } - let caseIndent = expectedCaseIndent(node); + const caseIndent = expectedCaseIndent(node); checkNodesIndent(node.consequent, caseIndent + indentSize); } diff --git a/lib/rules/init-declarations.js b/lib/rules/init-declarations.js index e51596f7af5..bbcb3a92ffd 100644 --- a/lib/rules/init-declarations.js +++ b/lib/rules/init-declarations.js @@ -26,8 +26,8 @@ function isForLoop(block) { * @returns {boolean} `true` when the node has its initializer. */ function isInitialized(node) { - let declaration = node.parent; - let block = declaration.parent; + const declaration = node.parent; + const block = declaration.parent; if (isForLoop(block)) { if (block.type === "ForStatement") { @@ -87,11 +87,11 @@ module.exports = { create: function(context) { - let MODE_ALWAYS = "always", + const MODE_ALWAYS = "always", MODE_NEVER = "never"; - let mode = context.options[0] || MODE_ALWAYS; - let params = context.options[1] || {}; + const mode = context.options[0] || MODE_ALWAYS; + const params = context.options[1] || {}; //-------------------------------------------------------------------------- // Public API @@ -100,11 +100,11 @@ module.exports = { return { "VariableDeclaration:exit": function(node) { - let kind = node.kind, + const kind = node.kind, declarations = node.declarations; for (let i = 0; i < declarations.length; ++i) { - let declaration = declarations[i], + const declaration = declarations[i], id = declaration.id, initialized = isInitialized(declaration), isIgnoredForLoop = params.ignoreForLoopInit && isForLoop(node.parent); diff --git a/lib/rules/jsx-quotes.js b/lib/rules/jsx-quotes.js index c3d87623cdf..99dfda76a24 100644 --- a/lib/rules/jsx-quotes.js +++ b/lib/rules/jsx-quotes.js @@ -9,13 +9,13 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Constants //------------------------------------------------------------------------------ -let QUOTE_SETTINGS = { +const QUOTE_SETTINGS = { "prefer-double": { quote: "\"", description: "singlequote", @@ -54,7 +54,7 @@ module.exports = { }, create: function(context) { - let quoteOption = context.options[0] || "prefer-double", + const quoteOption = context.options[0] || "prefer-double", setting = QUOTE_SETTINGS[quoteOption]; /** @@ -69,7 +69,7 @@ module.exports = { return { JSXAttribute: function(node) { - let attributeValue = node.value; + const attributeValue = node.value; if (attributeValue && astUtils.isStringLiteral(attributeValue) && !usesExpectedQuotes(attributeValue)) { context.report({ diff --git a/lib/rules/key-spacing.js b/lib/rules/key-spacing.js index 25aba47ba00..83741822f4e 100644 --- a/lib/rules/key-spacing.js +++ b/lib/rules/key-spacing.js @@ -34,9 +34,8 @@ function last(arr) { * @returns {boolean} True if the candidate property is part of the group. */ function continuesPropertyGroup(lastMember, candidate) { - let groupEndLine = lastMember.loc.start.line, - candidateStartLine = candidate.loc.start.line, - comments, i; + const groupEndLine = lastMember.loc.start.line, + candidateStartLine = candidate.loc.start.line; if (candidateStartLine - groupEndLine <= 1) { return true; @@ -45,13 +44,14 @@ function continuesPropertyGroup(lastMember, candidate) { // Check that the first comment is adjacent to the end of the group, the // last comment is adjacent to the candidate property, and that successive // comments are adjacent to each other. - comments = candidate.leadingComments; + const comments = candidate.leadingComments; + if ( comments && comments[0].loc.start.line - groupEndLine <= 1 && candidateStartLine - last(comments).loc.end.line <= 1 ) { - for (i = 1; i < comments.length; i++) { + for (let i = 1; i < comments.length; i++) { if (comments[i].loc.start.line - comments[i - 1].loc.end.line > 1) { return false; } @@ -150,7 +150,7 @@ function initOptions(toOptions, fromOptions) { // Rule Definition //------------------------------------------------------------------------------ -let messages = { +const messages = { key: "{{error}} space after {{computed}}key '{{key}}'.", value: "{{error}} space before value for {{computed}}key '{{key}}'." }; @@ -333,13 +333,13 @@ module.exports = { * align: "colon" // Optional, or "value" * } */ - let options = context.options[0] || {}, + const options = context.options[0] || {}, ruleOptions = initOptions({}, options), multiLineOptions = ruleOptions.multiLine, singleLineOptions = ruleOptions.singleLine, alignmentOptions = ruleOptions.align || null; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Determines if the given property is key-value property. @@ -392,7 +392,7 @@ module.exports = { * @returns {string} The property's key. */ function getKey(property) { - let key = property.key; + const key = property.key; if (property.computed) { return sourceCode.getText().slice(key.range[0], key.range[1]); @@ -412,7 +412,7 @@ module.exports = { * @returns {void} */ function report(property, side, whitespace, expected, mode) { - let diff = whitespace.length - expected, + const diff = whitespace.length - expected, nextColon = getNextColon(property.key), tokenBeforeColon = sourceCode.getTokenBefore(nextColon), tokenAfterColon = sourceCode.getTokenAfter(nextColon), @@ -420,9 +420,8 @@ module.exports = { locStart = isKeySide ? tokenBeforeColon.loc.start : tokenAfterColon.loc.start, isExtra = diff > 0, diffAbs = Math.abs(diff), - spaces = Array(diffAbs + 1).join(" "), - fix, - range; + spaces = Array(diffAbs + 1).join(" "); + let fix; if (( diff && mode === "strict" || @@ -431,6 +430,7 @@ module.exports = { !(expected && containsLineTerminator(whitespace)) ) { if (isExtra) { + let range; // Remove whitespace if (isKeySide) { @@ -476,10 +476,8 @@ module.exports = { * @returns {int} Width of the key. */ function getKeyWidth(property) { - let startToken, endToken; - - startToken = sourceCode.getFirstToken(property); - endToken = getLastTokenBeforeColon(property.key); + const startToken = sourceCode.getFirstToken(property); + const endToken = getLastTokenBeforeColon(property.key); return endToken.range[1] - startToken.range[0]; } @@ -490,7 +488,7 @@ module.exports = { * @returns {Object} Whitespace before and after the property's colon. */ function getPropertyWhitespace(property) { - let whitespace = /(\s*):(\s*)/.exec(sourceCode.getText().slice( + const whitespace = /(\s*):(\s*)/.exec(sourceCode.getText().slice( property.key.range[1], property.value.range[0] )); @@ -514,7 +512,7 @@ module.exports = { } return node.properties.reduce(function(groups, property) { - let currentGroup = last(groups), + const currentGroup = last(groups), prev = last(currentGroup); if (!prev || continuesPropertyGroup(prev, property)) { @@ -535,11 +533,10 @@ module.exports = { * @returns {void} */ function verifyGroupAlignment(properties) { - let length = properties.length, + const length = properties.length, widths = properties.map(getKeyWidth), // Width of keys, including quotes - targetWidth = Math.max.apply(null, widths), - align = alignmentOptions.on, // "value" or "colon" - i, property, whitespace, width, + align = alignmentOptions.on; // "value" or "colon" + let targetWidth = Math.max.apply(null, widths), beforeColon, afterColon, mode; if (alignmentOptions && length > 1) { // When aligning values within a group, use the alignment configuration. @@ -555,11 +552,12 @@ module.exports = { // Conditionally include one space before or after colon targetWidth += (align === "colon" ? beforeColon : afterColon); - for (i = 0; i < length; i++) { - property = properties[i]; - whitespace = getPropertyWhitespace(property); + for (let i = 0; i < length; i++) { + const property = properties[i]; + const whitespace = getPropertyWhitespace(property); + if (whitespace) { // Object literal getters/setters lack a colon - width = widths[i]; + const width = widths[i]; if (align === "value") { report(property, "key", whitespace.beforeColon, beforeColon, mode); @@ -590,7 +588,7 @@ module.exports = { * @returns {void} */ function verifySpacing(node, lineOptions) { - let actual = getPropertyWhitespace(node); + const actual = getPropertyWhitespace(node); if (actual) { // Object literal getters/setters lack colons report(node, "key", actual.beforeColon, lineOptions.beforeColon, lineOptions.mode); @@ -604,7 +602,7 @@ module.exports = { * @returns {void} */ function verifyListSpacing(properties) { - let length = properties.length; + const length = properties.length; for (let i = 0; i < length; i++) { verifySpacing(properties[i], singleLineOptions); diff --git a/lib/rules/keyword-spacing.js b/lib/rules/keyword-spacing.js index 3c8d171ce86..74bf4c5cb40 100644 --- a/lib/rules/keyword-spacing.js +++ b/lib/rules/keyword-spacing.js @@ -9,21 +9,21 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils"), +const astUtils = require("../ast-utils"), keywords = require("../util/keywords"); //------------------------------------------------------------------------------ // Constants //------------------------------------------------------------------------------ -let PREV_TOKEN = /^[\)\]\}>]$/; -let NEXT_TOKEN = /^(?:[\(\[\{<~!]|\+\+?|--?)$/; -let PREV_TOKEN_M = /^[\)\]\}>*]$/; -let NEXT_TOKEN_M = /^[\{*]$/; -let TEMPLATE_OPEN_PAREN = /\$\{$/; -let TEMPLATE_CLOSE_PAREN = /^\}/; -let CHECK_TYPE = /^(?:JSXElement|RegularExpression|String|Template)$/; -let KEYS = keywords.concat(["as", "await", "from", "get", "let", "of", "set", "yield"]); +const PREV_TOKEN = /^[\)\]\}>]$/; +const NEXT_TOKEN = /^(?:[\(\[\{<~!]|\+\+?|--?)$/; +const PREV_TOKEN_M = /^[\)\]\}>*]$/; +const NEXT_TOKEN_M = /^[\{*]$/; +const TEMPLATE_OPEN_PAREN = /\$\{$/; +const TEMPLATE_CLOSE_PAREN = /^\}/; +const CHECK_TYPE = /^(?:JSXElement|RegularExpression|String|Template)$/; +const KEYS = keywords.concat(["as", "await", "from", "get", "let", "of", "set", "yield"]); // check duplications. (function() { @@ -101,7 +101,7 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Reports a given token if there are not space(s) before the token. @@ -114,7 +114,7 @@ module.exports = { function expectSpaceBefore(token, pattern) { pattern = pattern || PREV_TOKEN; - let prevToken = sourceCode.getTokenBefore(token); + const prevToken = sourceCode.getTokenBefore(token); if (prevToken && (CHECK_TYPE.test(prevToken.type) || pattern.test(prevToken.value)) && @@ -144,7 +144,7 @@ module.exports = { function unexpectSpaceBefore(token, pattern) { pattern = pattern || PREV_TOKEN; - let prevToken = sourceCode.getTokenBefore(token); + const prevToken = sourceCode.getTokenBefore(token); if (prevToken && (CHECK_TYPE.test(prevToken.type) || pattern.test(prevToken.value)) && @@ -174,7 +174,7 @@ module.exports = { function expectSpaceAfter(token, pattern) { pattern = pattern || NEXT_TOKEN; - let nextToken = sourceCode.getTokenAfter(token); + const nextToken = sourceCode.getTokenAfter(token); if (nextToken && (CHECK_TYPE.test(nextToken.type) || pattern.test(nextToken.value)) && @@ -204,7 +204,7 @@ module.exports = { function unexpectSpaceAfter(token, pattern) { pattern = pattern || NEXT_TOKEN; - let nextToken = sourceCode.getTokenAfter(token); + const nextToken = sourceCode.getTokenAfter(token); if (nextToken && (CHECK_TYPE.test(nextToken.type) || pattern.test(nextToken.value)) && @@ -232,22 +232,22 @@ module.exports = { * Values are instances of `{"before": function, "after": function}`. */ function parseOptions(options) { - let before = !options || options.before !== false; - let after = !options || options.after !== false; - let defaultValue = { + const before = !options || options.before !== false; + const after = !options || options.after !== false; + const defaultValue = { before: before ? expectSpaceBefore : unexpectSpaceBefore, after: after ? expectSpaceAfter : unexpectSpaceAfter }; - let overrides = (options && options.overrides) || {}; - let retv = Object.create(null); + const overrides = (options && options.overrides) || {}; + const retv = Object.create(null); for (let i = 0; i < KEYS.length; ++i) { - let key = KEYS[i]; - let override = overrides[key]; + const key = KEYS[i]; + const override = overrides[key]; if (override) { - let thisBefore = ("before" in override) ? override.before : before; - let thisAfter = ("after" in override) ? override.after : after; + const thisBefore = ("before" in override) ? override.before : before; + const thisAfter = ("after" in override) ? override.after : after; retv[key] = { before: thisBefore ? expectSpaceBefore : unexpectSpaceBefore, @@ -261,7 +261,7 @@ module.exports = { return retv; } - let checkMethodMap = parseOptions(context.options[0]); + const checkMethodMap = parseOptions(context.options[0]); /** * Reports a given token if usage of spacing followed by the token is @@ -308,7 +308,7 @@ module.exports = { * @returns {void} */ function checkSpacingAroundFirstToken(node) { - let firstToken = node && sourceCode.getFirstToken(node); + const firstToken = node && sourceCode.getFirstToken(node); if (firstToken && firstToken.type === "Keyword") { checkSpacingAround(firstToken); @@ -326,7 +326,7 @@ module.exports = { * @returns {void} */ function checkSpacingBeforeFirstToken(node) { - let firstToken = node && sourceCode.getFirstToken(node); + const firstToken = node && sourceCode.getFirstToken(node); if (firstToken && firstToken.type === "Keyword") { checkSpacingBefore(firstToken); @@ -445,13 +445,13 @@ module.exports = { * @returns {void} */ function checkSpacingForModuleDeclaration(node) { - let firstToken = sourceCode.getFirstToken(node); + const firstToken = sourceCode.getFirstToken(node); checkSpacingBefore(firstToken, PREV_TOKEN_M); checkSpacingAfter(firstToken, NEXT_TOKEN_M); if (node.source) { - let fromToken = sourceCode.getTokenBefore(node.source); + const fromToken = sourceCode.getTokenBefore(node.source); checkSpacingBefore(fromToken, PREV_TOKEN_M); checkSpacingAfter(fromToken, NEXT_TOKEN_M); @@ -466,7 +466,7 @@ module.exports = { * @returns {void} */ function checkSpacingForImportNamespaceSpecifier(node) { - let asToken = sourceCode.getFirstToken(node, 1); + const asToken = sourceCode.getFirstToken(node, 1); checkSpacingBefore(asToken, PREV_TOKEN_M); } @@ -483,7 +483,7 @@ module.exports = { checkSpacingAroundFirstToken(node); } if (node.kind === "get" || node.kind === "set") { - let token = sourceCode.getFirstToken( + const token = sourceCode.getFirstToken( node, node.static ? 1 : 0 ); diff --git a/lib/rules/linebreak-style.js b/lib/rules/linebreak-style.js index a8a5e4ed884..80b64e370ad 100644 --- a/lib/rules/linebreak-style.js +++ b/lib/rules/linebreak-style.js @@ -28,10 +28,10 @@ module.exports = { create: function(context) { - let EXPECTED_LF_MSG = "Expected linebreaks to be 'LF' but found 'CRLF'.", + const EXPECTED_LF_MSG = "Expected linebreaks to be 'LF' but found 'CRLF'.", EXPECTED_CRLF_MSG = "Expected linebreaks to be 'CRLF' but found 'LF'."; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); //-------------------------------------------------------------------------- // Helpers @@ -56,14 +56,12 @@ module.exports = { return { Program: function checkForlinebreakStyle(node) { - let linebreakStyle = context.options[0] || "unix", + const linebreakStyle = context.options[0] || "unix", expectedLF = linebreakStyle === "unix", expectedLFChars = expectedLF ? "\n" : "\r\n", source = sourceCode.getText(), - pattern = /\r\n|\r|\n|\u2028|\u2029/g, - match, - index, - range; + pattern = /\r\n|\r|\n|\u2028|\u2029/g; + let match; let i = 0; @@ -73,8 +71,9 @@ module.exports = { continue; } - index = match.index; - range = [index, index + match[0].length]; + const index = match.index; + const range = [index, index + match[0].length]; + context.report({ node: node, loc: { diff --git a/lib/rules/lines-around-comment.js b/lib/rules/lines-around-comment.js index 70775b42132..68268720d4a 100644 --- a/lib/rules/lines-around-comment.js +++ b/lib/rules/lines-around-comment.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let lodash = require("lodash"), +const lodash = require("lodash"), astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ @@ -21,7 +21,7 @@ let lodash = require("lodash"), * @returns {Array} An array of line numbers. */ function getEmptyLineNums(lines) { - let emptyLines = lines.map(function(line, i) { + const emptyLines = lines.map(function(line, i) { return { code: line.trim(), num: i + 1 @@ -41,11 +41,11 @@ function getEmptyLineNums(lines) { * @returns {Array} An array of line numbers. */ function getCommentLineNums(comments) { - let lines = []; + const lines = []; comments.forEach(function(token) { - let start = token.loc.start.line; - let end = token.loc.end.line; + const start = token.loc.start.line; + const end = token.loc.end.line; lines.push(start, end); }); @@ -108,7 +108,7 @@ module.exports = { create: function(context) { - let options = context.options[0] ? lodash.assign({}, context.options[0]) : {}; + const options = context.options[0] ? lodash.assign({}, context.options[0]) : {}; options.beforeLineComment = options.beforeLineComment || false; options.afterLineComment = options.afterLineComment || false; @@ -117,9 +117,9 @@ module.exports = { options.allowBlockStart = options.allowBlockStart || false; options.allowBlockEnd = options.allowBlockEnd || false; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); - let lines = sourceCode.lines, + const lines = sourceCode.lines, numLines = lines.length + 1, comments = sourceCode.getAllComments(), commentLines = getCommentLineNums(comments), @@ -184,7 +184,7 @@ module.exports = { * @returns {boolean} True if the comment is at parent start. */ function isCommentAtParentStart(node, nodeType) { - let ancestors = context.getAncestors(); + const ancestors = context.getAncestors(); let parent; if (ancestors.length) { @@ -202,7 +202,7 @@ module.exports = { * @returns {boolean} True if the comment is at parent end. */ function isCommentAtParentEnd(node, nodeType) { - let ancestors = context.getAncestors(); + const ancestors = context.getAncestors(); let parent; if (ancestors.length) { @@ -279,19 +279,19 @@ module.exports = { let after = opts.after, before = opts.before; - let prevLineNum = node.loc.start.line - 1, + const prevLineNum = node.loc.start.line - 1, nextLineNum = node.loc.end.line + 1, commentIsNotAlone = codeAroundComment(node); - let blockStartAllowed = options.allowBlockStart && isCommentAtBlockStart(node), + const blockStartAllowed = options.allowBlockStart && isCommentAtBlockStart(node), blockEndAllowed = options.allowBlockEnd && isCommentAtBlockEnd(node), objectStartAllowed = options.allowObjectStart && isCommentAtObjectStart(node), objectEndAllowed = options.allowObjectEnd && isCommentAtObjectEnd(node), arrayStartAllowed = options.allowArrayStart && isCommentAtArrayStart(node), arrayEndAllowed = options.allowArrayEnd && isCommentAtArrayEnd(node); - let exceptionStartAllowed = blockStartAllowed || objectStartAllowed || arrayStartAllowed; - let exceptionEndAllowed = blockEndAllowed || objectEndAllowed || arrayEndAllowed; + const exceptionStartAllowed = blockStartAllowed || objectStartAllowed || arrayStartAllowed; + const exceptionEndAllowed = blockEndAllowed || objectEndAllowed || arrayEndAllowed; // ignore top of the file and bottom of the file if (prevLineNum < 1) { @@ -306,14 +306,14 @@ module.exports = { return; } - let previousTokenOrComment = sourceCode.getTokenOrCommentBefore(node); - let nextTokenOrComment = sourceCode.getTokenOrCommentAfter(node); + const previousTokenOrComment = sourceCode.getTokenOrCommentBefore(node); + const nextTokenOrComment = sourceCode.getTokenOrCommentAfter(node); // check for newline before if (!exceptionStartAllowed && before && !lodash.includes(commentAndEmptyLines, prevLineNum) && !(isCommentNodeType(previousTokenOrComment) && astUtils.isTokenOnSameLine(previousTokenOrComment, node))) { - let lineStart = node.range[0] - node.loc.start.column; - let range = [lineStart, lineStart]; + const lineStart = node.range[0] - node.loc.start.column; + const range = [lineStart, lineStart]; context.report({ node: node, diff --git a/lib/rules/max-depth.js b/lib/rules/max-depth.js index dbc1f6d48c5..383509f8cb0 100644 --- a/lib/rules/max-depth.js +++ b/lib/rules/max-depth.js @@ -49,9 +49,9 @@ module.exports = { // Helpers //-------------------------------------------------------------------------- - let functionStack = [], - option = context.options[0], - maxDepth = 4; + const functionStack = [], + option = context.options[0]; + let maxDepth = 4; if (typeof option === "object" && option.hasOwnProperty("maximum") && typeof option.maximum === "number") { maxDepth = option.maximum; @@ -88,7 +88,7 @@ module.exports = { * @private */ function pushBlock(node) { - let len = ++functionStack[functionStack.length - 1]; + const len = ++functionStack[functionStack.length - 1]; if (len > maxDepth) { context.report(node, "Blocks are nested too deeply ({{depth}}).", diff --git a/lib/rules/max-len.js b/lib/rules/max-len.js index 1bb63990d80..2b19aedf0ac 100644 --- a/lib/rules/max-len.js +++ b/lib/rules/max-len.js @@ -9,7 +9,7 @@ // Constants //------------------------------------------------------------------------------ -let OPTIONS_SCHEMA = { +const OPTIONS_SCHEMA = { type: "object", properties: { code: { @@ -40,7 +40,7 @@ let OPTIONS_SCHEMA = { additionalProperties: false }; -let OPTIONS_OR_INTEGER_SCHEMA = { +const OPTIONS_OR_INTEGER_SCHEMA = { anyOf: [ OPTIONS_SCHEMA, { @@ -79,9 +79,9 @@ module.exports = { * too many false positives * - We don't care about matching the entire URL, any small segment is fine */ - let URL_REGEXP = /[^:/?#]:\/\/[^?#]/; + const URL_REGEXP = /[^:/?#]:\/\/[^?#]/; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Computes the length of a line that may contain tabs. The width of each @@ -95,7 +95,7 @@ module.exports = { let extraCharacterCount = 0; line.replace(/\t/g, function(match, offset) { - let totalOffset = offset + extraCharacterCount, + const totalOffset = offset + extraCharacterCount, previousTabStopOffset = tabWidth ? totalOffset % tabWidth : 0, spaceCount = tabWidth - previousTabStopOffset; @@ -105,8 +105,8 @@ module.exports = { } // The options object must be the last option specified… - let lastOption = context.options[context.options.length - 1]; - let options = typeof lastOption === "object" ? Object.create(lastOption) : {}; + const lastOption = context.options[context.options.length - 1]; + const options = typeof lastOption === "object" ? Object.create(lastOption) : {}; // …but max code length… if (typeof context.options[0] === "number") { @@ -118,13 +118,13 @@ module.exports = { options.tabWidth = context.options[1]; } - let maxLength = options.code || 80, + const maxLength = options.code || 80, tabWidth = options.tabWidth || 4, - ignorePattern = options.ignorePattern || null, ignoreComments = options.ignoreComments || false, ignoreTrailingComments = options.ignoreTrailingComments || options.ignoreComments || false, ignoreUrls = options.ignoreUrls || false, maxCommentLength = options.comments; + let ignorePattern = options.ignorePattern || null; if (ignorePattern) { ignorePattern = new RegExp(ignorePattern); @@ -156,7 +156,7 @@ module.exports = { * @returns {boolean} If the comment covers the entire line */ function isFullLineComment(line, lineNumber, comment) { - let start = comment.loc.start, + const start = comment.loc.start, end = comment.loc.end, isFirstTokenOnLine = !line.slice(0, comment.loc.start.column).trim(); @@ -188,18 +188,18 @@ module.exports = { function checkProgramForMaxLength(node) { // split (honors line-ending) - let lines = sourceCode.lines, + const lines = sourceCode.lines, // list of comments to ignore - comments = ignoreComments || maxCommentLength || ignoreTrailingComments ? sourceCode.getAllComments() : [], + comments = ignoreComments || maxCommentLength || ignoreTrailingComments ? sourceCode.getAllComments() : []; // we iterate over comments in parallel with the lines - commentsIndex = 0; + let commentsIndex = 0; lines.forEach(function(line, i) { // i is zero-indexed, line numbers are one-indexed - let lineNumber = i + 1; + const lineNumber = i + 1; /* * if we're checking comment length; we need to know whether this @@ -235,7 +235,7 @@ module.exports = { return; } - let lineLength = computeLineLength(line, tabWidth); + const lineLength = computeLineLength(line, tabWidth); if (lineIsComment && ignoreComments) { return; diff --git a/lib/rules/max-lines.js b/lib/rules/max-lines.js index 1e311eaffbc..860dd507a4a 100644 --- a/lib/rules/max-lines.js +++ b/lib/rules/max-lines.js @@ -8,8 +8,8 @@ // Requirements //------------------------------------------------------------------------------ -let lodash = require("lodash"); -let astUtils = require("../ast-utils"); +const lodash = require("lodash"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -52,8 +52,8 @@ module.exports = { }, create: function(context) { - let option = context.options[0], - max = 300; + const option = context.options[0]; + let max = 300; if (typeof option === "object" && option.hasOwnProperty("max") && typeof option.max === "number") { max = option.max; @@ -63,10 +63,10 @@ module.exports = { max = option; } - let skipComments = option && option.skipComments; - let skipBlankLines = option && option.skipBlankLines; + const skipComments = option && option.skipComments; + const skipBlankLines = option && option.skipBlankLines; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Returns whether or not a token is a comment node type @@ -125,9 +125,9 @@ module.exports = { } if (skipComments) { - let comments = sourceCode.getAllComments(); + const comments = sourceCode.getAllComments(); - let commentLines = lodash.flatten(comments.map(function(comment) { + const commentLines = lodash.flatten(comments.map(function(comment) { return getLinesWithoutCode(comment); })); diff --git a/lib/rules/max-nested-callbacks.js b/lib/rules/max-nested-callbacks.js index a1145c1f1a6..37953dc757d 100644 --- a/lib/rules/max-nested-callbacks.js +++ b/lib/rules/max-nested-callbacks.js @@ -48,8 +48,8 @@ module.exports = { //-------------------------------------------------------------------------- // Constants //-------------------------------------------------------------------------- - let option = context.options[0], - THRESHOLD = 10; + const option = context.options[0]; + let THRESHOLD = 10; if (typeof option === "object" && option.hasOwnProperty("maximum") && typeof option.maximum === "number") { THRESHOLD = option.maximum; @@ -65,7 +65,7 @@ module.exports = { // Helpers //-------------------------------------------------------------------------- - let callbackStack = []; + const callbackStack = []; /** * Checks a given function node for too many callbacks. @@ -74,14 +74,14 @@ module.exports = { * @private */ function checkFunction(node) { - let parent = node.parent; + const parent = node.parent; if (parent.type === "CallExpression") { callbackStack.push(node); } if (callbackStack.length > THRESHOLD) { - let opts = {num: callbackStack.length, max: THRESHOLD}; + const opts = {num: callbackStack.length, max: THRESHOLD}; context.report(node, "Too many nested callbacks ({{num}}). Maximum allowed is {{max}}.", opts); } diff --git a/lib/rules/max-params.js b/lib/rules/max-params.js index 9fb922392b6..f5a40d931c9 100644 --- a/lib/rules/max-params.js +++ b/lib/rules/max-params.js @@ -45,8 +45,8 @@ module.exports = { create: function(context) { - let option = context.options[0], - numParams = 3; + const option = context.options[0]; + let numParams = 3; if (typeof option === "object" && option.hasOwnProperty("maximum") && typeof option.maximum === "number") { numParams = option.maximum; diff --git a/lib/rules/max-statements-per-line.js b/lib/rules/max-statements-per-line.js index 165c6dd1375..a3482fea796 100644 --- a/lib/rules/max-statements-per-line.js +++ b/lib/rules/max-statements-per-line.js @@ -32,18 +32,18 @@ module.exports = { create: function(context) { - let sourceCode = context.getSourceCode(), + const sourceCode = context.getSourceCode(), options = context.options[0] || {}, - lastStatementLine = 0, - numberOfStatementsOnThisLine = 0, maxStatementsPerLine = typeof options.max !== "undefined" ? options.max : 1, message = "This line has too many statements. Maximum allowed is " + maxStatementsPerLine + "."; + let lastStatementLine = 0, + numberOfStatementsOnThisLine = 0; //-------------------------------------------------------------------------- // Helpers //-------------------------------------------------------------------------- - let SINGLE_CHILD_ALLOWED = /^(?:(?:DoWhile|For|ForIn|ForOf|If|Labeled|While)Statement|Export(?:Default|Named)Declaration)$/; + const SINGLE_CHILD_ALLOWED = /^(?:(?:DoWhile|For|ForIn|ForOf|If|Labeled|While)Statement|Export(?:Default|Named)Declaration)$/; /** * Gets the actual last token of a given node. @@ -68,7 +68,7 @@ module.exports = { * @returns {void} */ function enterStatement(node) { - let line = node.loc.start.line; + const line = node.loc.start.line; // Skip to allow non-block statements if this is direct child of control statements. // `if (a) foo();` is counted as 1. @@ -100,7 +100,7 @@ module.exports = { * @returns {void} */ function leaveStatement(node) { - let line = getActualLastToken(node).loc.end.line; + const line = getActualLastToken(node).loc.end.line; // Update state. if (line !== lastStatementLine) { diff --git a/lib/rules/max-statements.js b/lib/rules/max-statements.js index 6708be3a12e..d56e755287c 100644 --- a/lib/rules/max-statements.js +++ b/lib/rules/max-statements.js @@ -58,11 +58,11 @@ module.exports = { // Helpers //-------------------------------------------------------------------------- - let functionStack = [], + const functionStack = [], option = context.options[0], - maxStatements = 10, ignoreTopLevelFunctions = context.options[1] && context.options[1].ignoreTopLevelFunctions || false, topLevelFunctions = []; + let maxStatements = 10; if (typeof option === "object" && option.hasOwnProperty("maximum") && typeof option.maximum === "number") { maxStatements = option.maximum; @@ -107,7 +107,7 @@ module.exports = { * @private */ function endFunction(node) { - let count = functionStack.pop(); + const count = functionStack.pop(); if (ignoreTopLevelFunctions && functionStack.length === 0) { topLevelFunctions.push({ node: node, count: count}); @@ -147,8 +147,8 @@ module.exports = { } topLevelFunctions.forEach(function(element) { - let count = element.count; - let node = element.node; + const count = element.count; + const node = element.node; reportIfTooManyStatements(node, count, maxStatements); }); diff --git a/lib/rules/multiline-ternary.js b/lib/rules/multiline-ternary.js index 469eb134ded..e6f680cf5ce 100644 --- a/lib/rules/multiline-ternary.js +++ b/lib/rules/multiline-ternary.js @@ -5,7 +5,7 @@ "use strict"; -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -50,8 +50,8 @@ module.exports = { return { ConditionalExpression: function(node) { - let areTestAndConsequentOnSameLine = astUtils.isTokenOnSameLine(node.test, node.consequent); - let areConsequentAndAlternateOnSameLine = astUtils.isTokenOnSameLine(node.consequent, node.alternate); + const areTestAndConsequentOnSameLine = astUtils.isTokenOnSameLine(node.test, node.consequent); + const areConsequentAndAlternateOnSameLine = astUtils.isTokenOnSameLine(node.consequent, node.alternate); if (areTestAndConsequentOnSameLine) { reportError(node.test, node); diff --git a/lib/rules/new-cap.js b/lib/rules/new-cap.js index 5e1baa540cc..ed2ae1f836b 100644 --- a/lib/rules/new-cap.js +++ b/lib/rules/new-cap.js @@ -9,13 +9,13 @@ // Requirements //------------------------------------------------------------------------------ -let lodash = require("lodash"); +const lodash = require("lodash"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let CAPS_ALLOWED = [ +const CAPS_ALLOWED = [ "Array", "Boolean", "Date", @@ -115,19 +115,19 @@ module.exports = { create: function(context) { - let config = context.options[0] ? lodash.assign({}, context.options[0]) : {}; + const config = context.options[0] ? lodash.assign({}, context.options[0]) : {}; config.newIsCap = config.newIsCap !== false; config.capIsNew = config.capIsNew !== false; - let skipProperties = config.properties === false; + const skipProperties = config.properties === false; - let newIsCapExceptions = checkArray(config, "newIsCapExceptions", []).reduce(invert, {}); + const newIsCapExceptions = checkArray(config, "newIsCapExceptions", []).reduce(invert, {}); - let capIsNewExceptions = calculateCapIsNewExceptions(config); + const capIsNewExceptions = calculateCapIsNewExceptions(config); - let listeners = {}; + const listeners = {}; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); //-------------------------------------------------------------------------- // Helpers @@ -140,11 +140,10 @@ module.exports = { */ function extractNameFromExpression(node) { - let name = "", - property; + let name = ""; if (node.callee.type === "MemberExpression") { - property = node.callee.property; + const property = node.callee.property; if (property.type === "Literal" && (typeof property.value === "string")) { name = property.value; @@ -164,10 +163,10 @@ module.exports = { * @returns {string} capitalization state: "non-alpha", "lower", or "upper" */ function getCap(str) { - let firstChar = str.charAt(0); + const firstChar = str.charAt(0); - let firstCharLower = firstChar.toLowerCase(); - let firstCharUpper = firstChar.toUpperCase(); + const firstCharLower = firstChar.toLowerCase(); + const firstCharUpper = firstChar.toUpperCase(); if (firstCharLower === firstCharUpper) { @@ -225,11 +224,11 @@ module.exports = { if (config.newIsCap) { listeners.NewExpression = function(node) { - let constructorName = extractNameFromExpression(node); + const constructorName = extractNameFromExpression(node); if (constructorName) { - let capitalization = getCap(constructorName); - let isAllowed = capitalization !== "lower" || isCapAllowed(newIsCapExceptions, node, constructorName); + const capitalization = getCap(constructorName); + const isAllowed = capitalization !== "lower" || isCapAllowed(newIsCapExceptions, node, constructorName); if (!isAllowed) { report(node, "A constructor name should not start with a lowercase letter."); @@ -241,11 +240,11 @@ module.exports = { if (config.capIsNew) { listeners.CallExpression = function(node) { - let calleeName = extractNameFromExpression(node); + const calleeName = extractNameFromExpression(node); if (calleeName) { - let capitalization = getCap(calleeName); - let isAllowed = capitalization !== "upper" || isCapAllowed(capIsNewExceptions, node, calleeName); + const capitalization = getCap(calleeName); + const isAllowed = capitalization !== "upper" || isCapAllowed(capIsNewExceptions, node, calleeName); if (!isAllowed) { report(node, "A function with a name starting with an uppercase letter should only be used as a constructor."); diff --git a/lib/rules/new-parens.js b/lib/rules/new-parens.js index 7ebd144b7ee..0509229bbb5 100644 --- a/lib/rules/new-parens.js +++ b/lib/rules/new-parens.js @@ -21,13 +21,13 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); return { NewExpression: function(node) { - let tokens = sourceCode.getTokens(node); - let prenticesTokens = tokens.filter(function(token) { + const tokens = sourceCode.getTokens(node); + const prenticesTokens = tokens.filter(function(token) { return token.value === "(" || token.value === ")"; }); diff --git a/lib/rules/newline-after-var.js b/lib/rules/newline-after-var.js index cb06c6f2614..9e84f441abd 100644 --- a/lib/rules/newline-after-var.js +++ b/lib/rules/newline-after-var.js @@ -26,16 +26,16 @@ module.exports = { create: function(context) { - let ALWAYS_MESSAGE = "Expected blank line after variable declarations.", + const ALWAYS_MESSAGE = "Expected blank line after variable declarations.", NEVER_MESSAGE = "Unexpected blank line after variable declarations."; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); // Default `mode` to "always". - let mode = context.options[0] === "never" ? "never" : "always"; + const mode = context.options[0] === "never" ? "never" : "always"; // Cache starting and ending line numbers of comments for faster lookup - let commentEndLine = sourceCode.getAllComments().reduce(function(result, token) { + const commentEndLine = sourceCode.getAllComments().reduce(function(result, token) { result[token.loc.start.line] = token.loc.end.line; return result; }, {}); @@ -83,7 +83,7 @@ module.exports = { * @returns {boolean} True if `node` is last of their parent block. */ function isLastNode(node) { - let token = sourceCode.getTokenAfter(node); + const token = sourceCode.getTokenAfter(node); return !token || (token.type === "Punctuator" && token.value === "}"); } @@ -95,7 +95,7 @@ module.exports = { * @returns {boolean} True if `token` does not start immediately after a comment */ function hasBlankLineAfterComment(token, commentStartLine) { - let commentEnd = commentEndLine[commentStartLine]; + const commentEnd = commentEndLine[commentStartLine]; // If there's another comment, repeat check for blank line if (commentEndLine[commentEnd + 1]) { @@ -114,11 +114,9 @@ module.exports = { * @returns {void} */ function checkForBlankLine(node) { - let lastToken = sourceCode.getLastToken(node), + const lastToken = sourceCode.getLastToken(node), nextToken = sourceCode.getTokenAfter(node), - nextLineNum = lastToken.loc.end.line + 1, - noNextLineToken, - hasNextLineComment; + nextLineNum = lastToken.loc.end.line + 1; // Ignore if there is no following statement if (!nextToken) { @@ -147,8 +145,8 @@ module.exports = { } // Next statement is not a `var`... - noNextLineToken = nextToken.loc.start.line > nextLineNum; - hasNextLineComment = (typeof commentEndLine[nextLineNum] !== "undefined"); + const noNextLineToken = nextToken.loc.start.line > nextLineNum; + const hasNextLineComment = (typeof commentEndLine[nextLineNum] !== "undefined"); if (mode === "never" && noNextLineToken && !hasNextLineComment) { context.report(node, NEVER_MESSAGE, { identifier: node.name }); diff --git a/lib/rules/newline-before-return.js b/lib/rules/newline-before-return.js index 966ddb9193b..4a30a7d08ac 100644 --- a/lib/rules/newline-before-return.js +++ b/lib/rules/newline-before-return.js @@ -20,7 +20,7 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); //-------------------------------------------------------------------------- // Helpers @@ -34,7 +34,7 @@ module.exports = { * @private */ function isPrecededByTokens(node, testTokens) { - let tokenBefore = sourceCode.getTokenBefore(node); + const tokenBefore = sourceCode.getTokenBefore(node); return testTokens.some(function(token) { return tokenBefore.value === token; @@ -48,7 +48,7 @@ module.exports = { * @private */ function isFirstNode(node) { - let parentType = node.parent.type; + const parentType = node.parent.type; if (node.parent.body) { return Array.isArray(node.parent.body) @@ -75,8 +75,8 @@ module.exports = { * @private */ function calcCommentLines(node, lineNumTokenBefore) { - let comments = sourceCode.getComments(node).leading, - numLinesComments = 0; + const comments = sourceCode.getComments(node).leading; + let numLinesComments = 0; if (!comments.length) { return numLinesComments; @@ -109,10 +109,9 @@ module.exports = { * @private */ function hasNewlineBefore(node) { - let tokenBefore = sourceCode.getTokenBefore(node), - lineNumNode = node.loc.start.line, - lineNumTokenBefore, - commentLines; + const tokenBefore = sourceCode.getTokenBefore(node), + lineNumNode = node.loc.start.line; + let lineNumTokenBefore; /** * Global return (at the beginning of a script) is a special case. @@ -128,7 +127,7 @@ module.exports = { lineNumTokenBefore = 0; // global return at beginning of script } - commentLines = calcCommentLines(node, lineNumTokenBefore); + const commentLines = calcCommentLines(node, lineNumTokenBefore); return (lineNumNode - lineNumTokenBefore - commentLines) > 1; } diff --git a/lib/rules/newline-per-chained-call.js b/lib/rules/newline-per-chained-call.js index 068e7b97ae9..8959742d349 100644 --- a/lib/rules/newline-per-chained-call.js +++ b/lib/rules/newline-per-chained-call.js @@ -33,10 +33,10 @@ module.exports = { create: function(context) { - let options = context.options[0] || {}, + const options = context.options[0] || {}, ignoreChainWithDepth = options.ignoreChainWithDepth || 2; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Gets the property text of a given MemberExpression node. @@ -46,9 +46,9 @@ module.exports = { * @returns {string} The property text of the node. */ function getPropertyText(node) { - let prefix = node.computed ? "[" : "."; - let lines = sourceCode.getText(node.property).split(/\r\n|\r|\n/g); - let suffix = node.computed && lines.length === 1 ? "]" : ""; + const prefix = node.computed ? "[" : "."; + const lines = sourceCode.getText(node.property).split(/\r\n|\r|\n/g); + const suffix = node.computed && lines.length === 1 ? "]" : ""; return prefix + lines[0] + suffix; } @@ -59,7 +59,7 @@ module.exports = { return; } - let callee = node.callee; + const callee = node.callee; let parent = callee.object; let depth = 1; diff --git a/lib/rules/no-alert.js b/lib/rules/no-alert.js index 1ff04a3b687..ebbac4c262b 100644 --- a/lib/rules/no-alert.js +++ b/lib/rules/no-alert.js @@ -51,7 +51,7 @@ function getPropertyName(memberExpressionNode) { * @returns {Reference|null} Returns the found reference or null if none were found. */ function findReference(scope, node) { - let references = scope.references.filter(function(reference) { + const references = scope.references.filter(function(reference) { return reference.identifier.range[0] === node.range[0] && reference.identifier.range[1] === node.range[1]; }); @@ -70,7 +70,7 @@ function findReference(scope, node) { * @returns {boolean} Whether or not the name is shadowed. */ function isShadowed(scope, globalScope, node) { - let reference = findReference(scope, node); + const reference = findReference(scope, node); return reference && reference.resolved && reference.resolved.defs.length > 0; } @@ -117,20 +117,19 @@ module.exports = { }, CallExpression: function(node) { - let callee = node.callee, - identifierName, + const callee = node.callee, currentScope = context.getScope(); // without window. if (callee.type === "Identifier") { - identifierName = callee.name; + const identifierName = callee.name; if (!isShadowed(currentScope, globalScope, callee) && isProhibitedIdentifier(callee.name)) { report(context, node, identifierName); } } else if (callee.type === "MemberExpression" && isGlobalThisReferenceOrGlobalWindow(currentScope, globalScope, callee.object)) { - identifierName = getPropertyName(callee); + const identifierName = getPropertyName(callee); if (isProhibitedIdentifier(identifierName)) { report(context, node, identifierName); diff --git a/lib/rules/no-bitwise.js b/lib/rules/no-bitwise.js index bfb6c180da4..a17a8a9b32b 100644 --- a/lib/rules/no-bitwise.js +++ b/lib/rules/no-bitwise.js @@ -8,7 +8,7 @@ // // Set of bitwise operators. // -let BITWISE_OPERATORS = [ +const BITWISE_OPERATORS = [ "^", "|", "&", "<<", ">>", ">>>", "^=", "|=", "&=", "<<=", ">>=", ">>>=", "~" @@ -47,9 +47,9 @@ module.exports = { }, create: function(context) { - let options = context.options[0] || {}; - let allowed = options.allow || []; - let int32Hint = options.int32Hint === true; + const options = context.options[0] || {}; + const allowed = options.allow || []; + const int32Hint = options.int32Hint === true; /** * Reports an unexpected use of a bitwise operator. diff --git a/lib/rules/no-caller.js b/lib/rules/no-caller.js index 75cfb63f65c..ff17262bce9 100644 --- a/lib/rules/no-caller.js +++ b/lib/rules/no-caller.js @@ -25,7 +25,7 @@ module.exports = { return { MemberExpression: function(node) { - let objectName = node.object.name, + const objectName = node.object.name, propertyName = node.property.name; if (objectName === "arguments" && !node.computed && propertyName && propertyName.match(/^calle[er]$/)) { diff --git a/lib/rules/no-case-declarations.js b/lib/rules/no-case-declarations.js index 6538674d41e..6a0db0e8699 100644 --- a/lib/rules/no-case-declarations.js +++ b/lib/rules/no-case-declarations.js @@ -41,7 +41,7 @@ module.exports = { return { SwitchCase: function(node) { for (let i = 0; i < node.consequent.length; i++) { - let statement = node.consequent[i]; + const statement = node.consequent[i]; if (isLexicalDeclaration(statement)) { context.report({ diff --git a/lib/rules/no-catch-shadow.js b/lib/rules/no-catch-shadow.js index 919ad3bc37d..7573e3d8a31 100644 --- a/lib/rules/no-catch-shadow.js +++ b/lib/rules/no-catch-shadow.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition diff --git a/lib/rules/no-class-assign.js b/lib/rules/no-class-assign.js index e12d3a065a6..059c36e56e5 100644 --- a/lib/rules/no-class-assign.js +++ b/lib/rules/no-class-assign.js @@ -5,7 +5,7 @@ "use strict"; -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition diff --git a/lib/rules/no-cond-assign.js b/lib/rules/no-cond-assign.js index 5cba25e8c78..908dc457704 100644 --- a/lib/rules/no-cond-assign.js +++ b/lib/rules/no-cond-assign.js @@ -4,7 +4,7 @@ */ "use strict"; -let NODE_DESCRIPTIONS = { +const NODE_DESCRIPTIONS = { DoWhileStatement: "a 'do...while' statement", ForStatement: "a 'for' statement", IfStatement: "an 'if' statement", @@ -32,9 +32,9 @@ module.exports = { create: function(context) { - let prohibitAssign = (context.options[0] || "except-parens"); + const prohibitAssign = (context.options[0] || "except-parens"); - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Check whether an AST node is the test expression for a conditional statement. @@ -70,7 +70,7 @@ module.exports = { * @returns {boolean} `true` if the code is enclosed in parentheses; otherwise, `false`. */ function isParenthesised(node) { - let previousToken = sourceCode.getTokenBefore(node), + const previousToken = sourceCode.getTokenBefore(node), nextToken = sourceCode.getTokenAfter(node); return previousToken.value === "(" && previousToken.range[1] <= node.range[0] && @@ -83,7 +83,7 @@ module.exports = { * @returns {boolean} `true` if the code is enclosed in two sets of parentheses; otherwise, `false`. */ function isParenthesisedTwice(node) { - let previousToken = sourceCode.getTokenBefore(node, 1), + const previousToken = sourceCode.getTokenBefore(node, 1), nextToken = sourceCode.getTokenAfter(node, 1); return isParenthesised(node) && @@ -120,7 +120,7 @@ module.exports = { * @returns {void} */ function testForConditionalAncestor(node) { - let ancestor = findConditionalAncestor(node); + const ancestor = findConditionalAncestor(node); if (ancestor) { context.report(ancestor, "Unexpected assignment within {{type}}.", { diff --git a/lib/rules/no-confusing-arrow.js b/lib/rules/no-confusing-arrow.js index 42d1f865e27..c4bd3470461 100644 --- a/lib/rules/no-confusing-arrow.js +++ b/lib/rules/no-confusing-arrow.js @@ -6,7 +6,7 @@ "use strict"; -let astUtils = require("../ast-utils.js"); +const astUtils = require("../ast-utils.js"); //------------------------------------------------------------------------------ // Helpers @@ -43,8 +43,8 @@ module.exports = { }, create: function(context) { - let config = context.options[0] || {}; - let sourceCode = context.getSourceCode(); + const config = context.options[0] || {}; + const sourceCode = context.getSourceCode(); /** * Reports if an arrow function contains an ambiguous conditional. @@ -52,7 +52,7 @@ module.exports = { * @returns {void} */ function checkArrowFunc(node) { - let body = node.body; + const body = node.body; if (isConditional(body) && !(config.allowParens && astUtils.isParenthesised(sourceCode, body))) { context.report(node, "Arrow function used ambiguously with a conditional expression."); diff --git a/lib/rules/no-console.js b/lib/rules/no-console.js index 553fc724607..0daff2bb075 100644 --- a/lib/rules/no-console.js +++ b/lib/rules/no-console.js @@ -45,9 +45,9 @@ module.exports = { let blockConsole = true; if (context.options.length > 0) { - let allowedProperties = context.options[0].allow; - let passedProperty = node.property.name; - let propertyIsAllowed = (allowedProperties.indexOf(passedProperty) > -1); + const allowedProperties = context.options[0].allow; + const passedProperty = node.property.name; + const propertyIsAllowed = (allowedProperties.indexOf(passedProperty) > -1); if (propertyIsAllowed) { blockConsole = false; diff --git a/lib/rules/no-const-assign.js b/lib/rules/no-const-assign.js index 8015225dbd8..a34d4c1f4b7 100644 --- a/lib/rules/no-const-assign.js +++ b/lib/rules/no-const-assign.js @@ -5,7 +5,7 @@ "use strict"; -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition diff --git a/lib/rules/no-constant-condition.js b/lib/rules/no-constant-condition.js index b2d3b647386..33132e4c50b 100644 --- a/lib/rules/no-constant-condition.js +++ b/lib/rules/no-constant-condition.js @@ -32,7 +32,7 @@ module.exports = { }, create: function(context) { - let options = context.options[0] || {}, + const options = context.options[0] || {}, checkLoops = options.checkLoops !== false; //-------------------------------------------------------------------------- diff --git a/lib/rules/no-control-regex.js b/lib/rules/no-control-regex.js index 4032fb2af77..4e7f1685f6f 100644 --- a/lib/rules/no-control-regex.js +++ b/lib/rules/no-control-regex.js @@ -33,7 +33,7 @@ module.exports = { return node.value; } else if (typeof node.value === "string") { - let parent = context.getAncestors().pop(); + const parent = context.getAncestors().pop(); if ((parent.type === "NewExpression" || parent.type === "CallExpression") && parent.callee.type === "Identifier" && parent.callee.name === "RegExp" @@ -63,12 +63,12 @@ module.exports = { let hasControlChars = /[\x00-\x1f]/.test(regexStr); // eslint-disable-line no-control-regex // check substr, if regex literal used - let subStrIndex = regexStr.search(/\\x[01][0-9a-f]/i); + const subStrIndex = regexStr.search(/\\x[01][0-9a-f]/i); if (!hasControlChars && subStrIndex > -1) { // is it escaped, check backslash count - let possibleEscapeCharacters = regexStr.substr(0, subStrIndex).match(/\\+$/gi); + const possibleEscapeCharacters = regexStr.substr(0, subStrIndex).match(/\\+$/gi); hasControlChars = possibleEscapeCharacters === null || !(possibleEscapeCharacters[0].length % 2); } @@ -78,11 +78,10 @@ module.exports = { return { Literal: function(node) { - let computedValue, - regex = getRegExp(node); + const regex = getRegExp(node); if (regex) { - computedValue = regex.toString(); + const computedValue = regex.toString(); if (hasControlCharacters(computedValue)) { context.report(node, "Unexpected control character in regular expression."); diff --git a/lib/rules/no-div-regex.js b/lib/rules/no-div-regex.js index f54a534b226..908b2003105 100644 --- a/lib/rules/no-div-regex.js +++ b/lib/rules/no-div-regex.js @@ -21,12 +21,12 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); return { Literal: function(node) { - let token = sourceCode.getFirstToken(node); + const token = sourceCode.getFirstToken(node); if (token.type === "RegularExpression" && token.value[1] === "=") { context.report(node, "A regular expression literal can be confused with '/='."); diff --git a/lib/rules/no-dupe-args.js b/lib/rules/no-dupe-args.js index f63fab5bb24..7e13f997a35 100644 --- a/lib/rules/no-dupe-args.js +++ b/lib/rules/no-dupe-args.js @@ -42,13 +42,13 @@ module.exports = { * @private */ function checkParams(node) { - let variables = context.getDeclaredVariables(node); + const variables = context.getDeclaredVariables(node); for (let i = 0; i < variables.length; ++i) { - let variable = variables[i]; + const variable = variables[i]; // Checks and reports duplications. - let defs = variable.defs.filter(isParameter); + const defs = variable.defs.filter(isParameter); if (defs.length >= 2) { context.report({ diff --git a/lib/rules/no-dupe-class-members.js b/lib/rules/no-dupe-class-members.js index 102072b8bbe..f4385c56cbf 100644 --- a/lib/rules/no-dupe-class-members.js +++ b/lib/rules/no-dupe-class-members.js @@ -33,8 +33,8 @@ module.exports = { * - retv.set {boolean} A flag which shows the name is declared as setter. */ function getState(name, isStatic) { - let stateMap = stack[stack.length - 1]; - let key = "$" + name; // to avoid "__proto__". + const stateMap = stack[stack.length - 1]; + const key = "$" + name; // to avoid "__proto__". if (!stateMap[key]) { stateMap[key] = { @@ -85,8 +85,8 @@ module.exports = { return; } - let name = getName(node.key); - let state = getState(name, node.static); + const name = getName(node.key); + const state = getState(name, node.static); let isDuplicate = false; if (node.kind === "get") { diff --git a/lib/rules/no-dupe-keys.js b/lib/rules/no-dupe-keys.js index d2a3fc67738..1456bb8fa57 100644 --- a/lib/rules/no-dupe-keys.js +++ b/lib/rules/no-dupe-keys.js @@ -28,7 +28,7 @@ module.exports = { // Object that will be a map of properties--safe because we will // prefix all of the keys. - let nodeProps = Object.create(null); + const nodeProps = Object.create(null); node.properties.forEach(function(property) { @@ -36,7 +36,7 @@ module.exports = { return; } - let keyName = property.key.name || property.key.value, + const keyName = property.key.name || property.key.value, key = property.kind + "-" + keyName, checkProperty = (!property.computed || property.key.type === "Literal"); diff --git a/lib/rules/no-duplicate-case.js b/lib/rules/no-duplicate-case.js index 9e9b8b5cd8b..66afb731a55 100644 --- a/lib/rules/no-duplicate-case.js +++ b/lib/rules/no-duplicate-case.js @@ -22,14 +22,14 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); return { SwitchStatement: function(node) { - let mapping = {}; + const mapping = {}; node.cases.forEach(function(switchCase) { - let key = sourceCode.getText(switchCase.test); + const key = sourceCode.getText(switchCase.test); if (mapping[key]) { context.report(switchCase, "Duplicate case label."); diff --git a/lib/rules/no-duplicate-imports.js b/lib/rules/no-duplicate-imports.js index 8594541b14a..204bfeedc0c 100644 --- a/lib/rules/no-duplicate-imports.js +++ b/lib/rules/no-duplicate-imports.js @@ -60,7 +60,7 @@ function checkAndReport(context, node, value, array, message) { */ function handleImports(context, includeExports, importsInFile, exportsInFile) { return function(node) { - let value = getValue(node); + const value = getValue(node); if (value) { checkAndReport(context, node, value, importsInFile, "import is duplicated."); @@ -85,7 +85,7 @@ function handleImports(context, includeExports, importsInFile, exportsInFile) { */ function handleExports(context, importsInFile, exportsInFile) { return function(node) { - let value = getValue(node); + const value = getValue(node); if (value) { checkAndReport(context, node, value, exportsInFile, "export is duplicated."); @@ -116,11 +116,11 @@ module.exports = { }, create: function(context) { - let includeExports = (context.options[0] || {}).includeExports, + const includeExports = (context.options[0] || {}).includeExports, importsInFile = [], exportsInFile = []; - let handlers = { + const handlers = { ImportDeclaration: handleImports(context, includeExports, importsInFile, exportsInFile) }; diff --git a/lib/rules/no-else-return.js b/lib/rules/no-else-return.js index 05ead21586b..6b8b096d022 100644 --- a/lib/rules/no-else-return.js +++ b/lib/rules/no-else-return.js @@ -56,7 +56,7 @@ module.exports = { */ function naiveHasReturn(node) { if (node.type === "BlockStatement") { - let body = node.body, + const body = node.body, lastChildNode = body[body.length - 1]; return lastChildNode && checkForReturn(lastChildNode); @@ -128,8 +128,8 @@ module.exports = { return { IfStatement: function(node) { - let parent = context.getAncestors().pop(), - consequents, + const parent = context.getAncestors().pop(); + let consequents, alternate; // Only "top-level" if statements are checked, meaning the first `if` diff --git a/lib/rules/no-empty-character-class.js b/lib/rules/no-empty-character-class.js index 4a1ae8f92f6..47e48a420e0 100644 --- a/lib/rules/no-empty-character-class.js +++ b/lib/rules/no-empty-character-class.js @@ -21,7 +21,7 @@ plain-English description of the following regexp: 4. `[gimuy]*`: optional regexp flags 5. `$`: fix the match at the end of the string */ -let regex = /^\/([^\\[]|\\.|\[([^\\\]]|\\.)+\])*\/[gimuy]*$/; +const regex = /^\/([^\\[]|\\.|\[([^\\\]]|\\.)+\])*\/[gimuy]*$/; //------------------------------------------------------------------------------ // Rule Definition @@ -39,12 +39,12 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); return { Literal: function(node) { - let token = sourceCode.getFirstToken(node); + const token = sourceCode.getFirstToken(node); if (token.type === "RegularExpression" && !regex.test(token.value)) { context.report(node, "Empty class."); diff --git a/lib/rules/no-empty-function.js b/lib/rules/no-empty-function.js index d7d8c2e886c..1f02d230cff 100644 --- a/lib/rules/no-empty-function.js +++ b/lib/rules/no-empty-function.js @@ -9,7 +9,7 @@ // Helpers //------------------------------------------------------------------------------ -let ALLOW_OPTIONS = Object.freeze([ +const ALLOW_OPTIONS = Object.freeze([ "functions", "arrowFunctions", "generatorFunctions", @@ -19,7 +19,7 @@ let ALLOW_OPTIONS = Object.freeze([ "setters", "constructors" ]); -let SHOW_KIND = Object.freeze({ +const SHOW_KIND = Object.freeze({ functions: "function", arrowFunctions: "arrow function", generatorFunctions: "generator function", @@ -44,7 +44,7 @@ let SHOW_KIND = Object.freeze({ * "constructors". */ function getKind(node) { - let parent = node.parent; + const parent = node.parent; let kind = ""; if (node.type === "ArrowFunctionExpression") { @@ -118,10 +118,10 @@ module.exports = { }, create: function(context) { - let options = context.options[0] || {}; - let allowed = options.allow || []; + const options = context.options[0] || {}; + const allowed = options.allow || []; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Reports a given function node if the node matches the following patterns. @@ -136,7 +136,7 @@ module.exports = { * @returns {void} */ function reportIfEmpty(node) { - let kind = getKind(node); + const kind = getKind(node); if (allowed.indexOf(kind) === -1 && node.body.type === "BlockStatement" && diff --git a/lib/rules/no-empty.js b/lib/rules/no-empty.js index 8897cce02b3..b3056033a32 100644 --- a/lib/rules/no-empty.js +++ b/lib/rules/no-empty.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -36,10 +36,10 @@ module.exports = { }, create: function(context) { - let options = context.options[0] || {}, + const options = context.options[0] || {}, allowEmptyCatch = options.allowEmptyCatch || false; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); return { BlockStatement: function(node) { diff --git a/lib/rules/no-eq-null.js b/lib/rules/no-eq-null.js index 743f2908035..57e4a3f4e4d 100644 --- a/lib/rules/no-eq-null.js +++ b/lib/rules/no-eq-null.js @@ -26,7 +26,7 @@ module.exports = { return { BinaryExpression: function(node) { - let badOperator = node.operator === "==" || node.operator === "!="; + const badOperator = node.operator === "==" || node.operator === "!="; if (node.right.type === "Literal" && node.right.raw === "null" && badOperator || node.left.type === "Literal" && node.left.raw === "null" && badOperator) { diff --git a/lib/rules/no-eval.js b/lib/rules/no-eval.js index 67ac1017cf4..b3ef724eedd 100644 --- a/lib/rules/no-eval.js +++ b/lib/rules/no-eval.js @@ -9,13 +9,13 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let candidatesOfGlobalObject = Object.freeze([ +const candidatesOfGlobalObject = Object.freeze([ "global", "window" ]); @@ -94,11 +94,11 @@ module.exports = { }, create: function(context) { - let allowIndirect = Boolean( + const allowIndirect = Boolean( context.options[0] && context.options[0].allowIndirect ); - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); let funcInfo = null; /** @@ -112,7 +112,7 @@ module.exports = { * @returns {void} */ function enterVarScope(node) { - let strict = context.getScope().isStrict; + const strict = context.getScope().isStrict; funcInfo = { upper: funcInfo, @@ -147,7 +147,7 @@ module.exports = { */ function report(node) { let locationNode = node; - let parent = node.parent; + const parent = node.parent; if (node.type === "MemberExpression") { locationNode = node.property; @@ -171,17 +171,17 @@ module.exports = { */ function reportAccessingEvalViaGlobalObject(globalScope) { for (let i = 0; i < candidatesOfGlobalObject.length; ++i) { - let name = candidatesOfGlobalObject[i]; - let variable = astUtils.getVariableByName(globalScope, name); + const name = candidatesOfGlobalObject[i]; + const variable = astUtils.getVariableByName(globalScope, name); if (!variable) { continue; } - let references = variable.references; + const references = variable.references; for (let j = 0; j < references.length; ++j) { - let identifier = references[j].identifier; + const identifier = references[j].identifier; let node = identifier.parent; // To detect code like `window.window.eval`. @@ -204,17 +204,17 @@ module.exports = { * @returns {void} */ function reportAccessingEval(globalScope) { - let variable = astUtils.getVariableByName(globalScope, "eval"); + const variable = astUtils.getVariableByName(globalScope, "eval"); if (!variable) { return; } - let references = variable.references; + const references = variable.references; for (let i = 0; i < references.length; ++i) { - let reference = references[i]; - let id = reference.identifier; + const reference = references[i]; + const id = reference.identifier; if (id.name === "eval" && !astUtils.isCallee(id)) { @@ -229,7 +229,7 @@ module.exports = { // Checks only direct calls to eval. It's simple! return { "CallExpression:exit": function(node) { - let callee = node.callee; + const callee = node.callee; if (isIdentifier(callee, "eval")) { report(callee); @@ -240,7 +240,7 @@ module.exports = { return { "CallExpression:exit": function(node) { - let callee = node.callee; + const callee = node.callee; if (isIdentifier(callee, "eval")) { report(callee); @@ -248,7 +248,7 @@ module.exports = { }, Program: function(node) { - let scope = context.getScope(), + const scope = context.getScope(), features = context.parserOptions.ecmaFeatures || {}, strict = scope.isStrict || @@ -265,7 +265,7 @@ module.exports = { }, "Program:exit": function() { - let globalScope = context.getScope(); + const globalScope = context.getScope(); exitVarScope(); reportAccessingEval(globalScope); diff --git a/lib/rules/no-ex-assign.js b/lib/rules/no-ex-assign.js index 42aea52723c..db1c61aa21b 100644 --- a/lib/rules/no-ex-assign.js +++ b/lib/rules/no-ex-assign.js @@ -5,7 +5,7 @@ "use strict"; -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition diff --git a/lib/rules/no-extend-native.js b/lib/rules/no-extend-native.js index c58e5c35540..daf4dd7a480 100644 --- a/lib/rules/no-extend-native.js +++ b/lib/rules/no-extend-native.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let globals = require("globals"); +const globals = require("globals"); //------------------------------------------------------------------------------ // Rule Definition @@ -42,8 +42,8 @@ module.exports = { create: function(context) { - let config = context.options[0] || {}; - let exceptions = config.exceptions || []; + const config = context.options[0] || {}; + const exceptions = config.exceptions || []; let modifiedBuiltins = Object.keys(globals.builtin).filter(function(builtin) { return builtin[0].toUpperCase() === builtin[0]; }); @@ -58,14 +58,13 @@ module.exports = { // handle the Array.prototype.extra style case AssignmentExpression: function(node) { - let lhs = node.left, - affectsProto; + const lhs = node.left; if (lhs.type !== "MemberExpression" || lhs.object.type !== "MemberExpression") { return; } - affectsProto = lhs.object.computed ? + const affectsProto = lhs.object.computed ? lhs.object.property.type === "Literal" && lhs.object.property.value === "prototype" : lhs.object.property.name === "prototype"; @@ -83,9 +82,7 @@ module.exports = { // handle the Object.definePropert[y|ies](Array.prototype) case CallExpression: function(node) { - let callee = node.callee, - subject, - object; + const callee = node.callee; // only worry about Object.definePropert[y|ies] if (callee.type === "MemberExpression" && @@ -93,8 +90,9 @@ module.exports = { (callee.property.name === "defineProperty" || callee.property.name === "defineProperties")) { // verify the object being added to is a native prototype - subject = node.arguments[0]; - object = subject && subject.object; + const subject = node.arguments[0]; + const object = subject && subject.object; + if (object && object.type === "Identifier" && (modifiedBuiltins.indexOf(object.name) > -1) && diff --git a/lib/rules/no-extra-bind.js b/lib/rules/no-extra-bind.js index bdafaf040f1..20dd3aca77b 100644 --- a/lib/rules/no-extra-bind.js +++ b/lib/rules/no-extra-bind.js @@ -73,8 +73,8 @@ module.exports = { * @returns {boolean} `true` if the node is the callee of `.bind()` method. */ function isCalleeOfBindMethod(node) { - let parent = node.parent; - let grandparent = parent.parent; + const parent = node.parent; + const grandparent = parent.parent; return ( grandparent && diff --git a/lib/rules/no-extra-boolean-cast.js b/lib/rules/no-extra-boolean-cast.js index 890f7cb6051..7f294939093 100644 --- a/lib/rules/no-extra-boolean-cast.js +++ b/lib/rules/no-extra-boolean-cast.js @@ -23,7 +23,7 @@ module.exports = { create: function(context) { // Node types which have a test which will coerce values to booleans. - let BOOLEAN_NODE_TYPES = [ + const BOOLEAN_NODE_TYPES = [ "IfStatement", "DoWhileStatement", "WhileStatement", @@ -52,7 +52,7 @@ module.exports = { return { UnaryExpression: function(node) { - let ancestors = context.getAncestors(), + const ancestors = context.getAncestors(), parent = ancestors.pop(), grandparent = ancestors.pop(); @@ -74,7 +74,7 @@ module.exports = { } }, CallExpression: function(node) { - let parent = node.parent; + const parent = node.parent; if (node.callee.type !== "Identifier" || node.callee.name !== "Boolean") { return; diff --git a/lib/rules/no-extra-label.js b/lib/rules/no-extra-label.js index 5b72209bf2d..12be549403b 100644 --- a/lib/rules/no-extra-label.js +++ b/lib/rules/no-extra-label.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -98,8 +98,8 @@ module.exports = { return; } - let labelNode = node.label; - let label = labelNode.name; + const labelNode = node.label; + const label = labelNode.name; let info = scopeInfo; while (info) { diff --git a/lib/rules/no-extra-parens.js b/lib/rules/no-extra-parens.js index 86ef6ddc0f8..060f84ff793 100644 --- a/lib/rules/no-extra-parens.js +++ b/lib/rules/no-extra-parens.js @@ -8,7 +8,7 @@ // Rule Definition //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils.js"); +const astUtils = require("../ast-utils.js"); module.exports = { meta: { @@ -54,14 +54,14 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); - let isParenthesised = astUtils.isParenthesised.bind(astUtils, sourceCode); - let precedence = astUtils.getPrecedence; - let ALL_NODES = context.options[0] !== "functions"; - let EXCEPT_COND_ASSIGN = ALL_NODES && context.options[1] && context.options[1].conditionalAssign === false; - let NESTED_BINARY = ALL_NODES && context.options[1] && context.options[1].nestedBinaryExpressions === false; - let EXCEPT_RETURN_ASSIGN = ALL_NODES && context.options[1] && context.options[1].returnAssign === false; + const isParenthesised = astUtils.isParenthesised.bind(astUtils, sourceCode); + const precedence = astUtils.getPrecedence; + const ALL_NODES = context.options[0] !== "functions"; + const EXCEPT_COND_ASSIGN = ALL_NODES && context.options[1] && context.options[1].conditionalAssign === false; + const NESTED_BINARY = ALL_NODES && context.options[1] && context.options[1].nestedBinaryExpressions === false; + const EXCEPT_RETURN_ASSIGN = ALL_NODES && context.options[1] && context.options[1].returnAssign === false; /** * Determines if this rule should be enforced for a node given the current configuration. @@ -80,7 +80,7 @@ module.exports = { * @private */ function isParenthesisedTwice(node) { - let previousToken = sourceCode.getTokenBefore(node, 1), + const previousToken = sourceCode.getTokenBefore(node, 1), nextToken = sourceCode.getTokenAfter(node, 1); return isParenthesised(node) && previousToken && nextToken && @@ -263,7 +263,7 @@ module.exports = { * @private */ function report(node) { - let previousToken = sourceCode.getTokenBefore(node); + const previousToken = sourceCode.getTokenBefore(node); context.report(node, previousToken.loc.start, "Gratuitous parentheses around expression."); } @@ -317,7 +317,7 @@ module.exports = { */ function dryBinaryLogical(node) { if (!NESTED_BINARY) { - let prec = precedence(node); + const prec = precedence(node); if (hasExcessParens(node.left) && precedence(node.left) >= prec) { report(node.left); @@ -394,12 +394,10 @@ module.exports = { }, ExpressionStatement: function(node) { - let firstToken, secondToken, firstTokens; - if (hasExcessParens(node.expression)) { - firstTokens = sourceCode.getFirstTokens(node.expression, 2); - firstToken = firstTokens[0]; - secondToken = firstTokens[1]; + const firstTokens = sourceCode.getFirstTokens(node.expression, 2); + const firstToken = firstTokens[0]; + const secondToken = firstTokens[1]; if ( !firstToken || @@ -484,7 +482,7 @@ module.exports = { ObjectExpression: function(node) { [].forEach.call(node.properties, function(e) { - let v = e.value; + const v = e.value; if (v && hasExcessParens(v) && precedence(v) >= precedence({type: "AssignmentExpression"})) { report(v); @@ -493,7 +491,7 @@ module.exports = { }, ReturnStatement: function(node) { - let returnToken = sourceCode.getFirstToken(node); + const returnToken = sourceCode.getFirstToken(node); if (isReturnAssignException(node)) { return; @@ -529,7 +527,7 @@ module.exports = { }, ThrowStatement: function(node) { - let throwToken = sourceCode.getFirstToken(node); + const throwToken = sourceCode.getFirstToken(node); if (hasExcessParensNoLineTerminator(throwToken, node.argument)) { report(node.argument); @@ -562,10 +560,8 @@ module.exports = { }, YieldExpression: function(node) { - let yieldToken; - if (node.argument) { - yieldToken = sourceCode.getFirstToken(node); + const yieldToken = sourceCode.getFirstToken(node); if ((precedence(node.argument) >= precedence(node) && hasExcessParensNoLineTerminator(yieldToken, node.argument)) || diff --git a/lib/rules/no-extra-semi.js b/lib/rules/no-extra-semi.js index 37f2253c26a..485c0d02f7c 100644 --- a/lib/rules/no-extra-semi.js +++ b/lib/rules/no-extra-semi.js @@ -22,7 +22,7 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Reports an unnecessary semicolon error. @@ -65,7 +65,7 @@ module.exports = { * @returns {void} */ EmptyStatement: function(node) { - let parent = node.parent, + const parent = node.parent, allowedParentTypes = [ "ForStatement", "ForInStatement", diff --git a/lib/rules/no-fallthrough.js b/lib/rules/no-fallthrough.js index 24f3642fa16..a1194385967 100644 --- a/lib/rules/no-fallthrough.js +++ b/lib/rules/no-fallthrough.js @@ -8,13 +8,13 @@ // Requirements //------------------------------------------------------------------------------ -let lodash = require("lodash"); +const lodash = require("lodash"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let DEFAULT_FALLTHROUGH_COMMENT = /falls?\s?through/i; +const DEFAULT_FALLTHROUGH_COMMENT = /falls?\s?through/i; /** * Checks whether or not a given node has a fallthrough comment. @@ -24,8 +24,8 @@ let DEFAULT_FALLTHROUGH_COMMENT = /falls?\s?through/i; * @returns {boolean} `true` if the node has a valid fallthrough comment. */ function hasFallthroughComment(node, context, fallthroughCommentPattern) { - let sourceCode = context.getSourceCode(); - let comment = lodash.last(sourceCode.getComments(node).leading); + const sourceCode = context.getSourceCode(); + const comment = lodash.last(sourceCode.getComments(node).leading); return Boolean(comment && fallthroughCommentPattern.test(comment.value)); } @@ -75,9 +75,9 @@ module.exports = { }, create: function(context) { - let options = context.options[0] || {}; + const options = context.options[0] || {}; let currentCodePath = null; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /* * We need to use leading comments of the next SwitchCase node because @@ -117,7 +117,7 @@ module.exports = { }, "SwitchCase:exit": function(node) { - let nextToken = sourceCode.getTokenAfter(node); + const nextToken = sourceCode.getTokenAfter(node); /* * `reachable` meant fall through because statements preceded by diff --git a/lib/rules/no-func-assign.js b/lib/rules/no-func-assign.js index 2266a044fc3..d57062dfc21 100644 --- a/lib/rules/no-func-assign.js +++ b/lib/rules/no-func-assign.js @@ -5,7 +5,7 @@ "use strict"; -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition diff --git a/lib/rules/no-global-assign.js b/lib/rules/no-global-assign.js index 1b2fd58b98e..a5d389e7b0f 100644 --- a/lib/rules/no-global-assign.js +++ b/lib/rules/no-global-assign.js @@ -33,8 +33,8 @@ module.exports = { }, create: function(context) { - let config = context.options[0]; - let exceptions = (config && config.exceptions) || []; + const config = context.options[0]; + const exceptions = (config && config.exceptions) || []; /** * Reports write references. @@ -44,7 +44,7 @@ module.exports = { * @returns {void} */ function checkReference(reference, index, references) { - let identifier = reference.identifier; + const identifier = reference.identifier; if (reference.init === false && reference.isWrite() && @@ -74,7 +74,7 @@ module.exports = { return { Program: function() { - let globalScope = context.getScope(); + const globalScope = context.getScope(); globalScope.variables.forEach(checkVariable); } diff --git a/lib/rules/no-implicit-coercion.js b/lib/rules/no-implicit-coercion.js index ee11bd00876..a27af2b152a 100644 --- a/lib/rules/no-implicit-coercion.js +++ b/lib/rules/no-implicit-coercion.js @@ -9,8 +9,8 @@ // Helpers //------------------------------------------------------------------------------ -let INDEX_OF_PATTERN = /^(?:i|lastI)ndexOf$/; -let ALLOWABLE_OPERATORS = ["~", "!!", "+", "*"]; +const INDEX_OF_PATTERN = /^(?:i|lastI)ndexOf$/; +const ALLOWABLE_OPERATORS = ["~", "!!", "+", "*"]; /** * Parses and normalizes an option object. @@ -91,7 +91,7 @@ function isNumeric(node) { * @returns {ASTNode|null} The first non-numeric item in the BinaryExpression tree or null */ function getNonNumericOperand(node) { - let left = node.left, + const left = node.left, right = node.right; if (right.type !== "BinaryExpression" && !isNumeric(right)) { @@ -176,13 +176,12 @@ module.exports = { }, create: function(context) { - let options = parseOptions(context.options[0]), - operatorAllowed = false; - - let sourceCode = context.getSourceCode(); + const options = parseOptions(context.options[0]); + const sourceCode = context.getSourceCode(); return { UnaryExpression: function(node) { + let operatorAllowed; // !!foo operatorAllowed = options.allow.indexOf("!!") >= 0; @@ -217,10 +216,11 @@ module.exports = { // Use `:exit` to prevent double reporting "BinaryExpression:exit": function(node) { + let operatorAllowed; // 1 * foo operatorAllowed = options.allow.indexOf("*") >= 0; - let nonNumericOperand = !operatorAllowed && options.number && isMultiplyByOne(node) && getNonNumericOperand(node); + const nonNumericOperand = !operatorAllowed && options.number && isMultiplyByOne(node) && getNonNumericOperand(node); if (nonNumericOperand) { context.report( @@ -244,8 +244,9 @@ module.exports = { AssignmentExpression: function(node) { // foo += "" - operatorAllowed = options.allow.indexOf("+") >= 0; - if (options.string && isAppendEmptyString(node)) { + const operatorAllowed = options.allow.indexOf("+") >= 0; + + if (!operatorAllowed && options.string && isAppendEmptyString(node)) { context.report( node, "use `{{code}} = String({{code}})` instead.", { diff --git a/lib/rules/no-implicit-globals.js b/lib/rules/no-implicit-globals.js index 9f8180394f1..84968cb071f 100644 --- a/lib/rules/no-implicit-globals.js +++ b/lib/rules/no-implicit-globals.js @@ -23,7 +23,7 @@ module.exports = { create: function(context) { return { Program: function() { - let scope = context.getScope(); + const scope = context.getScope(); scope.variables.forEach(function(variable) { if (variable.writeable) { @@ -38,7 +38,7 @@ module.exports = { }); scope.implicit.variables.forEach(function(variable) { - let scopeVariable = scope.set.get(variable.name); + const scopeVariable = scope.set.get(variable.name); if (scopeVariable && scopeVariable.writeable) { return; diff --git a/lib/rules/no-implied-eval.js b/lib/rules/no-implied-eval.js index ec660fa08f3..c074098ba9c 100644 --- a/lib/rules/no-implied-eval.js +++ b/lib/rules/no-implied-eval.js @@ -21,13 +21,13 @@ module.exports = { }, create: function(context) { - let CALLEE_RE = /set(?:Timeout|Interval)|execScript/; + const CALLEE_RE = /set(?:Timeout|Interval)|execScript/; /* * Figures out if we should inspect a given binary expression. Is a stack * of stacks, where the first element in each substack is a CallExpression. */ - let impliedEvalAncestorsStack = []; + const impliedEvalAncestorsStack = []; //-------------------------------------------------------------------------- // Helpers @@ -50,7 +50,7 @@ module.exports = { * @private */ function isImpliedEvalMemberExpression(node) { - let object = node.object, + const object = node.object, property = node.property, hasImpliedEvalName = CALLEE_RE.test(property.name) || CALLEE_RE.test(property.value); @@ -67,7 +67,7 @@ module.exports = { * @private */ function isImpliedEvalCallExpression(node) { - let isMemberExpression = (node.callee.type === "MemberExpression"), + const isMemberExpression = (node.callee.type === "MemberExpression"), isIdentifier = (node.callee.type === "Identifier"), isImpliedEvalCallee = (isIdentifier && CALLEE_RE.test(node.callee.name)) || @@ -103,7 +103,7 @@ module.exports = { if (hasImpliedEvalParent(node)) { // remove the entire substack, to avoid duplicate reports - let substack = impliedEvalAncestorsStack.pop(); + const substack = impliedEvalAncestorsStack.pop(); context.report(substack[0], "Implied eval. Consider passing a function instead of a string."); } diff --git a/lib/rules/no-inline-comments.js b/lib/rules/no-inline-comments.js index 87039d46971..8ca0c573c5b 100644 --- a/lib/rules/no-inline-comments.js +++ b/lib/rules/no-inline-comments.js @@ -4,7 +4,7 @@ */ "use strict"; -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -22,7 +22,7 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Will check that comments are not on lines starting with or ending with code @@ -33,16 +33,16 @@ module.exports = { function testCodeAroundComment(node) { // Get the whole line and cut it off at the start of the comment - let startLine = String(sourceCode.lines[node.loc.start.line - 1]); - let endLine = String(sourceCode.lines[node.loc.end.line - 1]); + const startLine = String(sourceCode.lines[node.loc.start.line - 1]); + const endLine = String(sourceCode.lines[node.loc.end.line - 1]); - let preamble = startLine.slice(0, node.loc.start.column).trim(); + const preamble = startLine.slice(0, node.loc.start.column).trim(); // Also check after the comment - let postamble = endLine.slice(node.loc.end.column).trim(); + const postamble = endLine.slice(node.loc.end.column).trim(); // Check that this comment isn't an ESLint directive - let isDirective = astUtils.isDirectiveComment(node); + const isDirective = astUtils.isDirectiveComment(node); // Should be empty if there was only whitespace around the comment if (!isDirective && (preamble || postamble)) { diff --git a/lib/rules/no-inner-declarations.js b/lib/rules/no-inner-declarations.js index 3e21385a59b..22ef55b21e8 100644 --- a/lib/rules/no-inner-declarations.js +++ b/lib/rules/no-inner-declarations.js @@ -31,8 +31,8 @@ module.exports = { * @returns {Object} Ancestor's type and distance from node. */ function nearestBody() { - let ancestors = context.getAncestors(), - ancestor = ancestors.pop(), + const ancestors = context.getAncestors(); + let ancestor = ancestors.pop(), generation = 1; while (ancestor && ["Program", "FunctionDeclaration", @@ -58,7 +58,7 @@ module.exports = { * @returns {void} */ function check(node) { - let body = nearestBody(node), + const body = nearestBody(node), valid = ((body.type === "Program" && body.distance === 1) || body.distance === 2); diff --git a/lib/rules/no-invalid-regexp.js b/lib/rules/no-invalid-regexp.js index eb693c55c6c..123b80c39b7 100644 --- a/lib/rules/no-invalid-regexp.js +++ b/lib/rules/no-invalid-regexp.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let espree = require("espree"); +const espree = require("espree"); //------------------------------------------------------------------------------ // Rule Definition @@ -38,8 +38,8 @@ module.exports = { create: function(context) { - let options = context.options[0], - allowedFlags = ""; + const options = context.options[0]; + let allowedFlags = ""; if (options && options.allowConstructorFlags) { allowedFlags = options.allowConstructorFlags.join(""); diff --git a/lib/rules/no-invalid-this.js b/lib/rules/no-invalid-this.js index e41c4746991..9672c284678 100644 --- a/lib/rules/no-invalid-this.js +++ b/lib/rules/no-invalid-this.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -27,7 +27,7 @@ module.exports = { }, create: function(context) { - let stack = [], + const stack = [], sourceCode = context.getSourceCode(); /** @@ -40,7 +40,7 @@ module.exports = { * an object which has a flag that whether or not `this` keyword is valid. */ stack.getCurrent = function() { - let current = this[this.length - 1]; + const current = this[this.length - 1]; if (!current.init) { current.init = true; @@ -86,7 +86,7 @@ module.exports = { * Modules is always strict mode. */ Program: function(node) { - let scope = context.getScope(), + const scope = context.getScope(), features = context.parserOptions.ecmaFeatures || {}; stack.push({ @@ -111,7 +111,7 @@ module.exports = { // Reports if `this` of the current context is invalid. ThisExpression: function(node) { - let current = stack.getCurrent(); + const current = stack.getCurrent(); if (current && !current.valid) { context.report(node, "Unexpected 'this'."); diff --git a/lib/rules/no-irregular-whitespace.js b/lib/rules/no-irregular-whitespace.js index 0049de3dde9..a34de284e01 100644 --- a/lib/rules/no-irregular-whitespace.js +++ b/lib/rules/no-irregular-whitespace.js @@ -10,10 +10,10 @@ // Constants //------------------------------------------------------------------------------ -let ALL_IRREGULARS = /[\f\v\u0085\u00A0\ufeff\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u202f\u205f\u3000\u2028\u2029]/; -let IRREGULAR_WHITESPACE = /[\f\v\u0085\u00A0\ufeff\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u202f\u205f\u3000]+/mg; -let IRREGULAR_LINE_TERMINATORS = /[\u2028\u2029]/mg; -let LINE_BREAK = /\r\n|\r|\n|\u2028|\u2029/g; +const ALL_IRREGULARS = /[\f\v\u0085\u00A0\ufeff\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u202f\u205f\u3000\u2028\u2029]/; +const IRREGULAR_WHITESPACE = /[\f\v\u0085\u00A0\ufeff\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u202f\u205f\u3000]+/mg; +const IRREGULAR_LINE_TERMINATORS = /[\u2028\u2029]/mg; +const LINE_BREAK = /\r\n|\r|\n|\u2028|\u2029/g; //------------------------------------------------------------------------------ // Rule Definition @@ -55,16 +55,16 @@ module.exports = { let errors = []; // Comment nodes. We accumulate these as we go, so we can be sure to trigger them after the whole `Program` entity is parsed, even for top-of-file comments. - let commentNodes = []; + const commentNodes = []; // Lookup the `skipComments` option, which defaults to `false`. - let options = context.options[0] || {}; - let skipComments = !!options.skipComments; - let skipStrings = options.skipStrings !== false; - let skipRegExps = !!options.skipRegExps; - let skipTemplates = !!options.skipTemplates; + const options = context.options[0] || {}; + const skipComments = !!options.skipComments; + const skipStrings = options.skipStrings !== false; + const skipRegExps = !!options.skipRegExps; + const skipTemplates = !!options.skipTemplates; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Removes errors that occur inside a string node @@ -73,11 +73,11 @@ module.exports = { * @private */ function removeWhitespaceError(node) { - let locStart = node.loc.start; - let locEnd = node.loc.end; + const locStart = node.loc.start; + const locEnd = node.loc.end; errors = errors.filter(function(error) { - let errorLoc = error[1]; + const errorLoc = error[1]; if (errorLoc.line >= locStart.line && errorLoc.line <= locEnd.line) { if (errorLoc.column >= locStart.column && (errorLoc.column <= locEnd.column || errorLoc.line < locEnd.line)) { @@ -95,8 +95,8 @@ module.exports = { * @private */ function removeInvalidNodeErrorsInIdentifierOrLiteral(node) { - let shouldCheckStrings = skipStrings && (typeof node.value === "string"); - let shouldCheckRegExps = skipRegExps && (node.value instanceof RegExp); + const shouldCheckStrings = skipStrings && (typeof node.value === "string"); + const shouldCheckRegExps = skipRegExps && (node.value instanceof RegExp); if (shouldCheckStrings || shouldCheckRegExps) { @@ -140,15 +140,14 @@ module.exports = { * @private */ function checkForIrregularWhitespace(node) { - let sourceLines = sourceCode.lines; + const sourceLines = sourceCode.lines; sourceLines.forEach(function(sourceLine, lineIndex) { - let lineNumber = lineIndex + 1, - location, - match; + const lineNumber = lineIndex + 1; + let match; while ((match = IRREGULAR_WHITESPACE.exec(sourceLine)) !== null) { - location = { + const location = { line: lineNumber, column: match.index }; @@ -165,18 +164,15 @@ module.exports = { * @private */ function checkForIrregularLineTerminators(node) { - let source = sourceCode.getText(), + const source = sourceCode.getText(), sourceLines = sourceCode.lines, - linebreaks = source.match(LINE_BREAK), - lastLineIndex = -1, - lineIndex, - location, + linebreaks = source.match(LINE_BREAK); + let lastLineIndex = -1, match; while ((match = IRREGULAR_LINE_TERMINATORS.exec(source)) !== null) { - lineIndex = linebreaks.indexOf(match[0], lastLineIndex + 1) || 0; - - location = { + const lineIndex = linebreaks.indexOf(match[0], lastLineIndex + 1) || 0; + const location = { line: lineIndex + 1, column: sourceLines[lineIndex].length }; @@ -203,7 +199,7 @@ module.exports = { */ function noop() {} - let nodes = {}; + const nodes = {}; if (ALL_IRREGULARS.test(sourceCode.getText())) { nodes.Program = function(node) { diff --git a/lib/rules/no-label-var.js b/lib/rules/no-label-var.js index a203324f147..e050f011392 100644 --- a/lib/rules/no-label-var.js +++ b/lib/rules/no-label-var.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -52,7 +52,7 @@ module.exports = { LabeledStatement: function(node) { // Fetch the innermost scope. - let scope = context.getScope(); + const scope = context.getScope(); // Recursively find the identifier walking up the scope, starting // with the innermost scope. diff --git a/lib/rules/no-labels.js b/lib/rules/no-labels.js index adc5bc0f81b..90b696829b4 100644 --- a/lib/rules/no-labels.js +++ b/lib/rules/no-labels.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -39,9 +39,9 @@ module.exports = { }, create: function(context) { - let options = context.options[0]; - let allowLoop = Boolean(options && options.allowLoop); - let allowSwitch = Boolean(options && options.allowSwitch); + const options = context.options[0]; + const allowLoop = Boolean(options && options.allowLoop); + const allowSwitch = Boolean(options && options.allowSwitch); let scopeInfo = null; /** diff --git a/lib/rules/no-lone-blocks.js b/lib/rules/no-lone-blocks.js index e93f1d0809b..ae59e99fae9 100644 --- a/lib/rules/no-lone-blocks.js +++ b/lib/rules/no-lone-blocks.js @@ -23,8 +23,8 @@ module.exports = { create: function(context) { // A stack of lone blocks to be checked for block-level bindings - let loneBlocks = [], - ruleDef; + const loneBlocks = []; + let ruleDef; /** * Reports a node as invalid. @@ -32,7 +32,7 @@ module.exports = { * @returns {void} */ function report(node) { - let parent = context.getAncestors().pop(); + const parent = context.getAncestors().pop(); context.report(node, parent.type === "Program" ? "Block is redundant." : @@ -45,7 +45,7 @@ module.exports = { * @returns {boolean} True if the current node is a lone block. */ function isLoneBlock() { - let parent = context.getAncestors().pop(); + const parent = context.getAncestors().pop(); return parent.type === "BlockStatement" || parent.type === "Program"; } @@ -60,7 +60,7 @@ module.exports = { return; } - let block = context.getAncestors().pop(); + const block = context.getAncestors().pop(); if (loneBlocks[loneBlocks.length - 1] === block) { loneBlocks.pop(); diff --git a/lib/rules/no-lonely-if.js b/lib/rules/no-lonely-if.js index 4c99bca8389..4764908dfa8 100644 --- a/lib/rules/no-lonely-if.js +++ b/lib/rules/no-lonely-if.js @@ -23,7 +23,7 @@ module.exports = { return { IfStatement: function(node) { - let ancestors = context.getAncestors(), + const ancestors = context.getAncestors(), parent = ancestors.pop(), grandparent = ancestors.pop(); diff --git a/lib/rules/no-loop-func.js b/lib/rules/no-loop-func.js index e9409338961..f51a8327c2d 100644 --- a/lib/rules/no-loop-func.js +++ b/lib/rules/no-loop-func.js @@ -74,7 +74,7 @@ function getContainingLoopNode(node) { */ function getTopLoopNode(node, excludedNode) { let retv = node; - let border = excludedNode ? excludedNode.range[1] : 0; + const border = excludedNode ? excludedNode.range[1] : 0; while (node && node.range[0] >= border) { retv = node; @@ -94,10 +94,10 @@ function getTopLoopNode(node, excludedNode) { * @returns {boolean} `true` if the reference is safe or not. */ function isSafe(funcNode, loopNode, reference) { - let variable = reference.resolved; - let definition = variable && variable.defs[0]; - let declaration = definition && definition.parent; - let kind = (declaration && declaration.type === "VariableDeclaration") + const variable = reference.resolved; + const definition = variable && variable.defs[0]; + const declaration = definition && definition.parent; + const kind = (declaration && declaration.type === "VariableDeclaration") ? declaration.kind : ""; @@ -117,7 +117,7 @@ function isSafe(funcNode, loopNode, reference) { // WriteReferences which exist after this border are unsafe because those // can modify the variable. - let border = getTopLoopNode( + const border = getTopLoopNode( loopNode, (kind === "let") ? declaration : null ).range[0]; @@ -135,7 +135,7 @@ function isSafe(funcNode, loopNode, reference) { * @returns {boolean} `true` if the reference is safe. */ function isSafeReference(upperRef) { - let id = upperRef.identifier; + const id = upperRef.identifier; return ( !upperRef.isWrite() || @@ -174,13 +174,13 @@ module.exports = { * @returns {boolean} Whether or not the node is within a loop. */ function checkForLoops(node) { - let loopNode = getContainingLoopNode(node); + const loopNode = getContainingLoopNode(node); if (!loopNode) { return; } - let references = context.getScope().through; + const references = context.getScope().through; if (references.length > 0 && !references.every(isSafe.bind(null, node, loopNode)) diff --git a/lib/rules/no-magic-numbers.js b/lib/rules/no-magic-numbers.js index 76d71c1e6ce..92853c1c06b 100644 --- a/lib/rules/no-magic-numbers.js +++ b/lib/rules/no-magic-numbers.js @@ -42,7 +42,7 @@ module.exports = { }, create: function(context) { - let config = context.options[0] || {}, + const config = context.options[0] || {}, detectObjects = !!config.detectObjects, enforceConst = !!config.enforceConst, ignore = config.ignore || [], @@ -102,8 +102,8 @@ module.exports = { Literal: function(node) { let parent = node.parent, value = node.value, - raw = node.raw, - okTypes = detectObjects ? [] : ["ObjectExpression", "Property", "AssignmentExpression"]; + raw = node.raw; + const okTypes = detectObjects ? [] : ["ObjectExpression", "Property", "AssignmentExpression"]; if (!isNumber(node)) { return; diff --git a/lib/rules/no-mixed-operators.js b/lib/rules/no-mixed-operators.js index f6e686521df..2ddf9a18675 100644 --- a/lib/rules/no-mixed-operators.js +++ b/lib/rules/no-mixed-operators.js @@ -9,32 +9,32 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils.js"); +const astUtils = require("../ast-utils.js"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let ARITHMETIC_OPERATORS = ["+", "-", "*", "/", "%", "**"]; -let BITWISE_OPERATORS = ["&", "|", "^", "~", "<<", ">>", ">>>"]; -let COMPARISON_OPERATORS = ["==", "!=", "===", "!==", ">", ">=", "<", "<="]; -let LOGICAL_OPERATORS = ["&&", "||"]; -let RELATIONAL_OPERATORS = ["in", "instanceof"]; -let ALL_OPERATORS = [].concat( +const ARITHMETIC_OPERATORS = ["+", "-", "*", "/", "%", "**"]; +const BITWISE_OPERATORS = ["&", "|", "^", "~", "<<", ">>", ">>>"]; +const COMPARISON_OPERATORS = ["==", "!=", "===", "!==", ">", ">=", "<", "<="]; +const LOGICAL_OPERATORS = ["&&", "||"]; +const RELATIONAL_OPERATORS = ["in", "instanceof"]; +const ALL_OPERATORS = [].concat( ARITHMETIC_OPERATORS, BITWISE_OPERATORS, COMPARISON_OPERATORS, LOGICAL_OPERATORS, RELATIONAL_OPERATORS ); -let DEFAULT_GROUPS = [ +const DEFAULT_GROUPS = [ ARITHMETIC_OPERATORS, BITWISE_OPERATORS, COMPARISON_OPERATORS, LOGICAL_OPERATORS, RELATIONAL_OPERATORS ]; -let TARGET_NODE_TYPE = /^(?:Binary|Logical)Expression$/; +const TARGET_NODE_TYPE = /^(?:Binary|Logical)Expression$/; /** * Normalizes options. @@ -43,9 +43,9 @@ let TARGET_NODE_TYPE = /^(?:Binary|Logical)Expression$/; * @returns {Object} Normalized option object. */ function normalizeOptions(options) { - let hasGroups = (options && options.groups && options.groups.length > 0); - let groups = hasGroups ? options.groups : DEFAULT_GROUPS; - let allowSamePrecedence = (options && options.allowSamePrecedence) !== false; + const hasGroups = (options && options.groups && options.groups.length > 0); + const groups = hasGroups ? options.groups : DEFAULT_GROUPS; + const allowSamePrecedence = (options && options.allowSamePrecedence) !== false; return { groups: groups, @@ -102,8 +102,8 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); - let options = normalizeOptions(context.options[0]); + const sourceCode = context.getSourceCode(); + const options = normalizeOptions(context.options[0]); /** * Checks whether a given node should be ignored by options or not. @@ -114,8 +114,8 @@ module.exports = { * @returns {boolean} `true` if the node should be ignored. */ function shouldIgnore(node) { - let a = node; - let b = node.parent; + const a = node; + const b = node.parent; return ( !includesBothInAGroup(options.groups, a.operator, b.operator) || @@ -169,10 +169,10 @@ module.exports = { * @returns {void} */ function reportBothOperators(node) { - let parent = node.parent; - let left = (parent.left === node) ? node : parent; - let right = (parent.left !== node) ? node : parent; - let message = + const parent = node.parent; + const left = (parent.left === node) ? node : parent; + const right = (parent.left !== node) ? node : parent; + const message = "Unexpected mix of '" + left.operator + "' and '" + right.operator + "'."; diff --git a/lib/rules/no-mixed-requires.js b/lib/rules/no-mixed-requires.js index 68ce51f56fc..9d25a1f090d 100644 --- a/lib/rules/no-mixed-requires.js +++ b/lib/rules/no-mixed-requires.js @@ -42,9 +42,9 @@ module.exports = { create: function(context) { + const options = context.options[0]; let grouping = false, - allowCall = false, - options = context.options[0]; + allowCall = false; if (typeof options === "object") { grouping = options.grouping; @@ -74,13 +74,13 @@ module.exports = { ]; } - let BUILTIN_MODULES = getBuiltinModules(); + const BUILTIN_MODULES = getBuiltinModules(); - let DECL_REQUIRE = "require", + const DECL_REQUIRE = "require", DECL_UNINITIALIZED = "uninitialized", DECL_OTHER = "other"; - let REQ_CORE = "core", + const REQ_CORE = "core", REQ_FILE = "file", REQ_MODULE = "module", REQ_COMPUTED = "computed"; @@ -137,7 +137,7 @@ module.exports = { return REQ_COMPUTED; } - let arg = initExpression.arguments[0]; + const arg = initExpression.arguments[0]; if (arg.type !== "Literal" || typeof arg.value !== "string") { @@ -167,10 +167,10 @@ module.exports = { * @returns {boolean} True if the declarations are mixed, false if not. */ function isMixed(declarations) { - let contains = {}; + const contains = {}; declarations.forEach(function(declaration) { - let type = getDeclarationType(declaration.init); + const type = getDeclarationType(declaration.init); contains[type] = true; }); @@ -188,7 +188,7 @@ module.exports = { * @returns {boolean} True if the declarations are grouped, false if not. */ function isGrouped(declarations) { - let found = {}; + const found = {}; declarations.forEach(function(declaration) { if (getDeclarationType(declaration.init) === DECL_REQUIRE) { diff --git a/lib/rules/no-mixed-spaces-and-tabs.js b/lib/rules/no-mixed-spaces-and-tabs.js index 19734b1b5d5..41e47141089 100644 --- a/lib/rules/no-mixed-spaces-and-tabs.js +++ b/lib/rules/no-mixed-spaces-and-tabs.js @@ -24,10 +24,10 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); - let smartTabs, - ignoredLocs = []; + let smartTabs; + const ignoredLocs = []; switch (context.options[0]) { case true: // Support old syntax, maybe add deprecation warning here @@ -85,9 +85,8 @@ module.exports = { * or the reverse before non-tab/-space * characters begin. */ - let regex = /^(?=[\t ]*(\t | \t))/, - match, - lines = sourceCode.lines, + let regex = /^(?=[\t ]*(\t | \t))/; + const lines = sourceCode.lines, comments = sourceCode.getAllComments(); comments.forEach(function(comment) { @@ -116,10 +115,10 @@ module.exports = { } lines.forEach(function(line, i) { - match = regex.exec(line); + const match = regex.exec(line); if (match) { - let lineNumber = i + 1, + const lineNumber = i + 1, column = match.index + 1; for (let j = 0; j < ignoredLocs.length; j++) { diff --git a/lib/rules/no-multi-spaces.js b/lib/rules/no-multi-spaces.js index 78d600c8848..608843aff24 100644 --- a/lib/rules/no-multi-spaces.js +++ b/lib/rules/no-multi-spaces.js @@ -41,9 +41,9 @@ module.exports = { create: function(context) { // the index of the last comment that was checked - let exceptions = { Property: true }, - hasExceptions = true, - options = context.options[0], + const exceptions = { Property: true }, + options = context.options[0]; + let hasExceptions = true, lastCommentIndex = 0; if (options && options.exceptions) { @@ -68,12 +68,8 @@ module.exports = { * @private */ function isIndexInComment(index, comments) { - - let comment; - while (lastCommentIndex < comments.length) { - - comment = comments[lastCommentIndex]; + const comment = comments[lastCommentIndex]; if (comment.range[0] <= index && index < comment.range[1]) { return true; @@ -82,7 +78,6 @@ module.exports = { } else { break; } - } return false; @@ -95,13 +90,11 @@ module.exports = { return { Program: function() { - let sourceCode = context.getSourceCode(), + const sourceCode = context.getSourceCode(), source = sourceCode.getText(), allComments = sourceCode.getAllComments(), - pattern = /[^\n\r\u2028\u2029\t ].? {2,}/g, // note: repeating space - token, - previousToken, - parent; + pattern = /[^\n\r\u2028\u2029\t ].? {2,}/g; // note: repeating space + let parent; /** @@ -122,9 +115,10 @@ module.exports = { // do not flag anything inside of comments if (!isIndexInComment(pattern.lastIndex, allComments)) { - token = sourceCode.getTokenByRangeStart(pattern.lastIndex); + const token = sourceCode.getTokenByRangeStart(pattern.lastIndex); + if (token) { - previousToken = sourceCode.getTokenBefore(token); + const previousToken = sourceCode.getTokenBefore(token); if (hasExceptions) { parent = sourceCode.getNodeByRangeIndex(pattern.lastIndex - 1); diff --git a/lib/rules/no-multi-str.js b/lib/rules/no-multi-str.js index 1d880104591..78930ab0b70 100644 --- a/lib/rules/no-multi-str.js +++ b/lib/rules/no-multi-str.js @@ -39,7 +39,7 @@ module.exports = { return { Literal: function(node) { - let lineBreak = /\n/; + const lineBreak = /\n/; if (lineBreak.test(node.raw) && !isJSXElement(node.parent)) { context.report(node, "Multiline support is limited to browsers supporting ES5 only."); diff --git a/lib/rules/no-multiple-empty-lines.js b/lib/rules/no-multiple-empty-lines.js index cede2d5e78a..7b8c73d0ac4 100644 --- a/lib/rules/no-multiple-empty-lines.js +++ b/lib/rules/no-multiple-empty-lines.js @@ -50,7 +50,7 @@ module.exports = { maxBOF; // store lines that appear empty but really aren't - let notEmpty = []; + const notEmpty = []; if (context.options.length) { max = context.options[0].max; @@ -58,7 +58,7 @@ module.exports = { maxBOF = typeof context.options[0].maxBOF !== "undefined" ? context.options[0].maxBOF : max; } - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); //-------------------------------------------------------------------------- // Public @@ -68,7 +68,7 @@ module.exports = { TemplateLiteral: function(node) { let start = node.loc.start.line; - let end = node.loc.end.line; + const end = node.loc.end.line; while (start <= end) { notEmpty.push(start); @@ -77,28 +77,31 @@ module.exports = { }, "Program:exit": function checkBlankLines(node) { - let lines = sourceCode.lines, + const lines = sourceCode.lines, fullLines = sourceCode.text.match(/.*(\r\n|\r|\n|\u2028|\u2029)/g) || [], - firstNonBlankLine = -1, + linesRangeStart = []; + let firstNonBlankLine = -1, trimmedLines = [], - linesRangeStart = [], blankCounter = 0, currentLocation, lastLocation, - location, firstOfEndingBlankLines, diff, - fix, rangeStart, rangeEnd; - fix = function(fixer) { + /** + * Fix code. + * @param {RuleFixer} fixer - The fixer of this context. + * @returns {Object} The fixing information. + */ + function fix(fixer) { return fixer.removeRange([rangeStart, rangeEnd]); - }; + } linesRangeStart.push(0); lines.forEach(function(str, i) { - let length = i < fullLines.length ? fullLines[i].length : 0, + const length = i < fullLines.length ? fullLines[i].length : 0, trimmed = str.trim(); if ((firstNonBlankLine === -1) && (trimmed !== "")) { @@ -157,7 +160,7 @@ module.exports = { if (lastLocation === currentLocation - 1) { blankCounter++; } else { - location = { + const location = { line: lastLocation + 1, column: 1 }; diff --git a/lib/rules/no-native-reassign.js b/lib/rules/no-native-reassign.js index 92aeecfe356..46708e94b4a 100644 --- a/lib/rules/no-native-reassign.js +++ b/lib/rules/no-native-reassign.js @@ -37,8 +37,8 @@ module.exports = { }, create: function(context) { - let config = context.options[0]; - let exceptions = (config && config.exceptions) || []; + const config = context.options[0]; + const exceptions = (config && config.exceptions) || []; /** * Reports write references. @@ -48,7 +48,7 @@ module.exports = { * @returns {void} */ function checkReference(reference, index, references) { - let identifier = reference.identifier; + const identifier = reference.identifier; if (reference.init === false && reference.isWrite() && @@ -78,7 +78,7 @@ module.exports = { return { Program: function() { - let globalScope = context.getScope(); + const globalScope = context.getScope(); globalScope.variables.forEach(checkVariable); } diff --git a/lib/rules/no-new-symbol.js b/lib/rules/no-new-symbol.js index d4c4e67b17b..e8c87b1b63b 100644 --- a/lib/rules/no-new-symbol.js +++ b/lib/rules/no-new-symbol.js @@ -24,12 +24,12 @@ module.exports = { return { "Program:exit": function() { - let globalScope = context.getScope(); - let variable = globalScope.set.get("Symbol"); + const globalScope = context.getScope(); + const variable = globalScope.set.get("Symbol"); if (variable && variable.defs.length === 0) { variable.references.forEach(function(ref) { - let node = ref.identifier; + const node = ref.identifier; if (node.parent && node.parent.type === "NewExpression") { context.report(node, "`Symbol` cannot be called as a constructor."); diff --git a/lib/rules/no-new-wrappers.js b/lib/rules/no-new-wrappers.js index 756ee80076f..cfc80a7f9ad 100644 --- a/lib/rules/no-new-wrappers.js +++ b/lib/rules/no-new-wrappers.js @@ -25,7 +25,7 @@ module.exports = { return { NewExpression: function(node) { - let wrapperObjects = ["String", "Number", "Boolean", "Math", "JSON"]; + const wrapperObjects = ["String", "Number", "Boolean", "Math", "JSON"]; if (wrapperObjects.indexOf(node.callee.name) > -1) { context.report(node, "Do not use {{fn}} as a constructor.", { fn: node.callee.name }); diff --git a/lib/rules/no-obj-calls.js b/lib/rules/no-obj-calls.js index ba1c45a31fe..fafc31296f3 100644 --- a/lib/rules/no-obj-calls.js +++ b/lib/rules/no-obj-calls.js @@ -26,7 +26,7 @@ module.exports = { CallExpression: function(node) { if (node.callee.type === "Identifier") { - let name = node.callee.name; + const name = node.callee.name; if (name === "Math" || name === "JSON") { context.report(node, "'{{name}}' is not a function.", { name: name }); diff --git a/lib/rules/no-octal-escape.js b/lib/rules/no-octal-escape.js index cf5953a986f..e4af81db5ee 100644 --- a/lib/rules/no-octal-escape.js +++ b/lib/rules/no-octal-escape.js @@ -29,11 +29,10 @@ module.exports = { return; } - let match = node.raw.match(/^([^\\]|\\[^0-7])*\\([0-3][0-7]{1,2}|[4-7][0-7]|[0-7])/), - octalDigit; + const match = node.raw.match(/^([^\\]|\\[^0-7])*\\([0-3][0-7]{1,2}|[4-7][0-7]|[0-7])/); if (match) { - octalDigit = match[2]; + const octalDigit = match[2]; // \0 is actually not considered an octal if (match[2] !== "0" || typeof match[3] !== "undefined") { diff --git a/lib/rules/no-param-reassign.js b/lib/rules/no-param-reassign.js index 3a59106a2d5..048e87bbc36 100644 --- a/lib/rules/no-param-reassign.js +++ b/lib/rules/no-param-reassign.js @@ -8,7 +8,7 @@ // Rule Definition //------------------------------------------------------------------------------ -let stopNodePattern = /(?:Statement|Declaration|Function(?:Expression)?|Program)$/; +const stopNodePattern = /(?:Statement|Declaration|Function(?:Expression)?|Program)$/; module.exports = { meta: { @@ -30,7 +30,7 @@ module.exports = { }, create: function(context) { - let props = context.options[0] && Boolean(context.options[0].props); + const props = context.options[0] && Boolean(context.options[0].props); /** * Checks whether or not the reference modifies properties of its variable. @@ -92,7 +92,7 @@ module.exports = { * @returns {void} */ function checkReference(reference, index, references) { - let identifier = reference.identifier; + const identifier = reference.identifier; if (identifier && !reference.init && diff --git a/lib/rules/no-path-concat.js b/lib/rules/no-path-concat.js index f13d9426745..72fba0b9cd8 100644 --- a/lib/rules/no-path-concat.js +++ b/lib/rules/no-path-concat.js @@ -21,7 +21,7 @@ module.exports = { create: function(context) { - let MATCHER = /^__(?:dir|file)name$/; + const MATCHER = /^__(?:dir|file)name$/; //-------------------------------------------------------------------------- // Public @@ -31,7 +31,7 @@ module.exports = { BinaryExpression: function(node) { - let left = node.left, + const left = node.left, right = node.right; if (node.operator === "+" && diff --git a/lib/rules/no-plusplus.js b/lib/rules/no-plusplus.js index 34e54001ae5..7b4dd59569b 100644 --- a/lib/rules/no-plusplus.js +++ b/lib/rules/no-plusplus.js @@ -33,8 +33,8 @@ module.exports = { create: function(context) { - let config = context.options[0], - allowInForAfterthought = false; + const config = context.options[0]; + let allowInForAfterthought = false; if (typeof config === "object") { allowInForAfterthought = config.allowForLoopAfterthoughts === true; diff --git a/lib/rules/no-process-env.js b/lib/rules/no-process-env.js index d1bf15a245d..229b95f8d6d 100644 --- a/lib/rules/no-process-env.js +++ b/lib/rules/no-process-env.js @@ -24,7 +24,7 @@ module.exports = { return { MemberExpression: function(node) { - let objectName = node.object.name, + const objectName = node.object.name, propertyName = node.property.name; if (objectName === "process" && !node.computed && propertyName && propertyName === "env") { diff --git a/lib/rules/no-process-exit.js b/lib/rules/no-process-exit.js index 045214e7e74..2ca84b92013 100644 --- a/lib/rules/no-process-exit.js +++ b/lib/rules/no-process-exit.js @@ -28,7 +28,7 @@ module.exports = { return { CallExpression: function(node) { - let callee = node.callee; + const callee = node.callee; if (callee.type === "MemberExpression" && callee.object.name === "process" && callee.property.name === "exit" diff --git a/lib/rules/no-prototype-builtins.js b/lib/rules/no-prototype-builtins.js index 08b0b6dcf9a..a0ce73fc15f 100644 --- a/lib/rules/no-prototype-builtins.js +++ b/lib/rules/no-prototype-builtins.js @@ -20,7 +20,7 @@ module.exports = { }, create: function(context) { - let DISALLOWED_PROPS = [ + const DISALLOWED_PROPS = [ "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable" @@ -35,7 +35,7 @@ module.exports = { if (node.callee.type !== "MemberExpression" || node.callee.computed) { return; } - let propName = node.callee.property.name; + const propName = node.callee.property.name; if (DISALLOWED_PROPS.indexOf(propName) > -1) { context.report({ diff --git a/lib/rules/no-redeclare.js b/lib/rules/no-redeclare.js index 8a1540ff79f..8a26b34b428 100644 --- a/lib/rules/no-redeclare.js +++ b/lib/rules/no-redeclare.js @@ -29,7 +29,7 @@ module.exports = { }, create: function(context) { - let options = { + const options = { builtinGlobals: Boolean(context.options[0] && context.options[0].builtinGlobals) }; @@ -41,8 +41,8 @@ module.exports = { */ function findVariablesInScope(scope) { scope.variables.forEach(function(variable) { - let hasBuiltin = options.builtinGlobals && "writeable" in variable; - let count = (hasBuiltin ? 1 : 0) + variable.identifiers.length; + const hasBuiltin = options.builtinGlobals && "writeable" in variable; + const count = (hasBuiltin ? 1 : 0) + variable.identifiers.length; if (count >= 2) { variable.identifiers.sort(function(a, b) { @@ -67,7 +67,7 @@ module.exports = { * @private */ function checkForGlobal(node) { - let scope = context.getScope(), + const scope = context.getScope(), parserOptions = context.parserOptions, ecmaFeatures = parserOptions.ecmaFeatures || {}; diff --git a/lib/rules/no-regex-spaces.js b/lib/rules/no-regex-spaces.js index de179894b36..dc09e98e05b 100644 --- a/lib/rules/no-regex-spaces.js +++ b/lib/rules/no-regex-spaces.js @@ -21,7 +21,7 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Validate regular expressions @@ -31,7 +31,7 @@ module.exports = { * @private */ function checkRegex(node, value) { - let multipleSpacesRegex = /( {2,})+?/, + const multipleSpacesRegex = /( {2,})+?/, regexResults = multipleSpacesRegex.exec(value); if (regexResults !== null) { @@ -46,7 +46,7 @@ module.exports = { * @private */ function checkLiteral(node) { - let token = sourceCode.getFirstToken(node), + const token = sourceCode.getFirstToken(node), nodeType = token.type, nodeValue = token.value; diff --git a/lib/rules/no-restricted-globals.js b/lib/rules/no-restricted-globals.js index 19bd6a94aec..3617f1a8d7b 100644 --- a/lib/rules/no-restricted-globals.js +++ b/lib/rules/no-restricted-globals.js @@ -26,7 +26,7 @@ module.exports = { }, create: function(context) { - let restrictedGlobals = context.options; + const restrictedGlobals = context.options; // if no globals are restricted we don't need to check if (restrictedGlobals.length === 0) { @@ -57,7 +57,7 @@ module.exports = { return { Program: function() { - let scope = context.getScope(); + const scope = context.getScope(); // Report variables declared elsewhere (ex: variables defined as "global" by eslint) scope.variables.forEach(function(variable) { diff --git a/lib/rules/no-restricted-imports.js b/lib/rules/no-restricted-imports.js index da768c135c7..3649f027ac2 100644 --- a/lib/rules/no-restricted-imports.js +++ b/lib/rules/no-restricted-imports.js @@ -26,7 +26,7 @@ module.exports = { }, create: function(context) { - let restrictedImports = context.options; + const restrictedImports = context.options; // if no imports are restricted we don"t need to check if (restrictedImports.length === 0) { @@ -37,7 +37,7 @@ module.exports = { ImportDeclaration: function(node) { if (node && node.source && node.source.value) { - let value = node.source.value.trim(); + const value = node.source.value.trim(); if (restrictedImports.indexOf(value) !== -1) { context.report(node, "'{{importName}}' import is restricted from being used.", { diff --git a/lib/rules/no-restricted-modules.js b/lib/rules/no-restricted-modules.js index eeb6bf270d3..982ad0110dc 100644 --- a/lib/rules/no-restricted-modules.js +++ b/lib/rules/no-restricted-modules.js @@ -28,7 +28,7 @@ module.exports = { create: function(context) { // trim restricted module names - let restrictedModules = context.options; + const restrictedModules = context.options; // if no modules are restricted we don't need to check the CallExpressions if (restrictedModules.length === 0) { @@ -63,7 +63,7 @@ module.exports = { // node has arguments and first argument is string if (node.arguments.length && isString(node.arguments[0])) { - let argumentValue = node.arguments[0].value.trim(); + const argumentValue = node.arguments[0].value.trim(); // check if argument value is in restricted modules array if (restrictedModules.indexOf(argumentValue) !== -1) { @@ -77,7 +77,7 @@ module.exports = { return { CallExpression: function(node) { if (isRequireCall(node)) { - let restrictedModuleName = getRestrictedModuleName(node); + const restrictedModuleName = getRestrictedModuleName(node); if (restrictedModuleName) { context.report(node, "'{{moduleName}}' module is restricted from being used.", { diff --git a/lib/rules/no-restricted-syntax.js b/lib/rules/no-restricted-syntax.js index 84c62d63ac0..7c4d2345018 100644 --- a/lib/rules/no-restricted-syntax.js +++ b/lib/rules/no-restricted-syntax.js @@ -8,7 +8,7 @@ // Rule Definition //------------------------------------------------------------------------------ -let nodeTypes = require("espree").Syntax; +const nodeTypes = require("espree").Syntax; module.exports = { meta: { diff --git a/lib/rules/no-return-assign.js b/lib/rules/no-return-assign.js index 54935060710..d223fff7ad3 100644 --- a/lib/rules/no-return-assign.js +++ b/lib/rules/no-return-assign.js @@ -8,7 +8,7 @@ // Helpers //------------------------------------------------------------------------------ -let SENTINEL_TYPE = /^(?:[a-zA-Z]+?Statement|ArrowFunctionExpression|FunctionExpression|ClassExpression)$/; +const SENTINEL_TYPE = /^(?:[a-zA-Z]+?Statement|ArrowFunctionExpression|FunctionExpression|ClassExpression)$/; /** * Checks whether or not a node is enclosed in parentheses. @@ -17,8 +17,8 @@ let SENTINEL_TYPE = /^(?:[a-zA-Z]+?Statement|ArrowFunctionExpression|FunctionExp * @returns {boolean} Whether or not the node is enclosed in parentheses. */ function isEnclosedInParens(node, sourceCode) { - let prevToken = sourceCode.getTokenBefore(node); - let nextToken = sourceCode.getTokenAfter(node); + const prevToken = sourceCode.getTokenBefore(node); + const nextToken = sourceCode.getTokenAfter(node); return prevToken && prevToken.value === "(" && nextToken && nextToken.value === ")"; } @@ -43,8 +43,8 @@ module.exports = { }, create: function(context) { - let always = (context.options[0] || "except-parens") !== "except-parens"; - let sourceCode = context.getSourceCode(); + const always = (context.options[0] || "except-parens") !== "except-parens"; + const sourceCode = context.getSourceCode(); return { AssignmentExpression: function(node) { diff --git a/lib/rules/no-script-url.js b/lib/rules/no-script-url.js index 1c12490b433..0d767bbd1e6 100644 --- a/lib/rules/no-script-url.js +++ b/lib/rules/no-script-url.js @@ -27,11 +27,8 @@ module.exports = { return { Literal: function(node) { - - let value; - if (node.value && typeof node.value === "string") { - value = node.value.toLowerCase(); + const value = node.value.toLowerCase(); if (value.indexOf("javascript:") === 0) { context.report(node, "Script URL is a form of eval."); diff --git a/lib/rules/no-self-assign.js b/lib/rules/no-self-assign.js index e3dc35e81e7..11cb44af925 100644 --- a/lib/rules/no-self-assign.js +++ b/lib/rules/no-self-assign.js @@ -35,10 +35,10 @@ function eachSelfAssignment(left, right, report) { left.type === "ArrayPattern" && right.type === "ArrayExpression" ) { - let end = Math.min(left.elements.length, right.elements.length); + const end = Math.min(left.elements.length, right.elements.length); for (i = 0; i < end; ++i) { - let rightElement = right.elements[i]; + const rightElement = right.elements[i]; eachSelfAssignment(left.elements[i], rightElement, report); diff --git a/lib/rules/no-self-compare.js b/lib/rules/no-self-compare.js index c677e56ffdb..db51796217b 100644 --- a/lib/rules/no-self-compare.js +++ b/lib/rules/no-self-compare.js @@ -26,7 +26,7 @@ module.exports = { return { BinaryExpression: function(node) { - let operators = ["===", "==", "!==", "!=", ">", "<", ">=", "<="]; + const operators = ["===", "==", "!==", "!=", ">", "<", ">=", "<="]; if (operators.indexOf(node.operator) > -1 && (node.left.type === "Identifier" && node.right.type === "Identifier" && node.left.name === node.right.name || diff --git a/lib/rules/no-sequences.js b/lib/rules/no-sequences.js index 51c3b8e8080..7971dac0dcb 100644 --- a/lib/rules/no-sequences.js +++ b/lib/rules/no-sequences.js @@ -21,12 +21,12 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Parts of the grammar that are required to have parens. */ - let parenthesized = { + const parenthesized = { DoWhileStatement: "test", IfStatement: "test", SwitchStatement: "discriminant", @@ -57,7 +57,7 @@ module.exports = { * @returns {boolean} True if the node has a paren on each side. */ function isParenthesised(node) { - let previousToken = sourceCode.getTokenBefore(node), + const previousToken = sourceCode.getTokenBefore(node), nextToken = sourceCode.getTokenAfter(node); return previousToken && nextToken && @@ -71,7 +71,7 @@ module.exports = { * @returns {boolean} True if two parens surround the node on each side. */ function isParenthesisedTwice(node) { - let previousToken = sourceCode.getTokenBefore(node, 1), + const previousToken = sourceCode.getTokenBefore(node, 1), nextToken = sourceCode.getTokenAfter(node, 1); return isParenthesised(node) && previousToken && nextToken && @@ -99,7 +99,7 @@ module.exports = { } } - let child = sourceCode.getTokenAfter(node.expressions[0]); + const child = sourceCode.getTokenAfter(node.expressions[0]); context.report(node, child.loc.start, "Unexpected use of comma operator."); } diff --git a/lib/rules/no-shadow-restricted-names.js b/lib/rules/no-shadow-restricted-names.js index d932363d6f7..54dc1e58733 100644 --- a/lib/rules/no-shadow-restricted-names.js +++ b/lib/rules/no-shadow-restricted-names.js @@ -21,7 +21,7 @@ module.exports = { create: function(context) { - let RESTRICTED = ["undefined", "NaN", "Infinity", "arguments", "eval"]; + const RESTRICTED = ["undefined", "NaN", "Infinity", "arguments", "eval"]; /** * Check if the node name is present inside the restricted list diff --git a/lib/rules/no-shadow.js b/lib/rules/no-shadow.js index 62f75047807..6eca4a41760 100644 --- a/lib/rules/no-shadow.js +++ b/lib/rules/no-shadow.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -43,7 +43,7 @@ module.exports = { create: function(context) { - let options = { + const options = { builtinGlobals: Boolean(context.options[0] && context.options[0].builtinGlobals), hoist: (context.options[0] && context.options[0].hoist) || "functions", allow: (context.options[0] && context.options[0].allow) || [] @@ -69,7 +69,7 @@ module.exports = { * @returns {boolean} Whether or not the variable of the class name in the class scope of ClassDeclaration. */ function isDuplicatedClassNameVariable(variable) { - let block = variable.scope.block; + const block = variable.scope.block; return block.type === "ClassDeclaration" && block.id === variable.identifiers[0]; } @@ -85,12 +85,12 @@ module.exports = { * @returns {boolean} Whether or not the variable is inside initializer of scopeVar. */ function isOnInitializer(variable, scopeVar) { - let outerScope = scopeVar.scope; - let outerDef = scopeVar.defs[0]; - let outer = outerDef && outerDef.parent && outerDef.parent.range; - let innerScope = variable.scope; - let innerDef = variable.defs[0]; - let inner = innerDef && innerDef.name.range; + const outerScope = scopeVar.scope; + const outerDef = scopeVar.defs[0]; + const outer = outerDef && outerDef.parent && outerDef.parent.range; + const innerScope = variable.scope; + const innerDef = variable.defs[0]; + const inner = innerDef && innerDef.name.range; return ( outer && @@ -108,7 +108,7 @@ module.exports = { * @returns {Array|undefined} The range of the variable's identifier node. */ function getNameRange(variable) { - let def = variable.defs[0]; + const def = variable.defs[0]; return def && def.name.range; } @@ -120,9 +120,9 @@ module.exports = { * @returns {boolean} Whether or not the variable is in TDZ of scopeVar. */ function isInTdz(variable, scopeVar) { - let outerDef = scopeVar.defs[0]; - let inner = getNameRange(variable); - let outer = getNameRange(scopeVar); + const outerDef = scopeVar.defs[0]; + const inner = getNameRange(variable); + const outer = getNameRange(scopeVar); return ( inner && @@ -140,10 +140,10 @@ module.exports = { * @returns {void} */ function checkForShadows(scope) { - let variables = scope.variables; + const variables = scope.variables; for (let i = 0; i < variables.length; ++i) { - let variable = variables[i]; + const variable = variables[i]; // Skips "arguments" or variables of a class name in the class scope of ClassDeclaration. if (variable.identifiers.length === 0 || @@ -154,7 +154,7 @@ module.exports = { } // Gets shadowed variable. - let shadowed = astUtils.getVariableByName(scope.upper, variable.name); + const shadowed = astUtils.getVariableByName(scope.upper, variable.name); if (shadowed && (shadowed.identifiers.length > 0 || (options.builtinGlobals && "writeable" in shadowed)) && @@ -172,12 +172,12 @@ module.exports = { return { "Program:exit": function() { - let globalScope = context.getScope(); - let stack = globalScope.childScopes.slice(); - let scope; + const globalScope = context.getScope(); + const stack = globalScope.childScopes.slice(); while (stack.length) { - scope = stack.pop(); + const scope = stack.pop(); + stack.push.apply(stack, scope.childScopes); checkForShadows(scope); } diff --git a/lib/rules/no-spaced-func.js b/lib/rules/no-spaced-func.js index 90765645e87..bf110d0054e 100644 --- a/lib/rules/no-spaced-func.js +++ b/lib/rules/no-spaced-func.js @@ -23,7 +23,7 @@ module.exports = { create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Check if open space is present in a function name @@ -32,8 +32,8 @@ module.exports = { * @private */ function detectOpenSpaces(node) { - let lastCalleeToken = sourceCode.getLastToken(node.callee), - prevToken = lastCalleeToken, + const lastCalleeToken = sourceCode.getLastToken(node.callee); + let prevToken = lastCalleeToken, parenToken = sourceCode.getTokenAfter(lastCalleeToken); // advances to an open parenthesis. diff --git a/lib/rules/no-sparse-arrays.js b/lib/rules/no-sparse-arrays.js index 4d4bfd9944c..1765c4c5fa0 100644 --- a/lib/rules/no-sparse-arrays.js +++ b/lib/rules/no-sparse-arrays.js @@ -30,7 +30,7 @@ module.exports = { ArrayExpression: function(node) { - let emptySpot = node.elements.indexOf(null) > -1; + const emptySpot = node.elements.indexOf(null) > -1; if (emptySpot) { context.report(node, "Unexpected comma in middle of array."); diff --git a/lib/rules/no-sync.js b/lib/rules/no-sync.js index ddd1f9484b9..449f27eba70 100644 --- a/lib/rules/no-sync.js +++ b/lib/rules/no-sync.js @@ -27,7 +27,7 @@ module.exports = { return { MemberExpression: function(node) { - let propertyName = node.property.name, + const propertyName = node.property.name, syncRegex = /.*Sync$/; if (syncRegex.exec(propertyName) !== null) { diff --git a/lib/rules/no-this-before-super.js b/lib/rules/no-this-before-super.js index 82eda02160a..5f19b1819d6 100644 --- a/lib/rules/no-this-before-super.js +++ b/lib/rules/no-this-before-super.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Helpers @@ -101,10 +101,10 @@ module.exports = { * @returns {void} */ function setInvalid(node) { - let segments = funcInfo.codePath.currentSegments; + const segments = funcInfo.codePath.currentSegments; for (let i = 0; i < segments.length; ++i) { - let segment = segments[i]; + const segment = segments[i]; if (segment.reachable) { segInfoMap[segment.id].invalidNodes.push(node); @@ -117,10 +117,10 @@ module.exports = { * @returns {void} */ function setSuperCalled() { - let segments = funcInfo.codePath.currentSegments; + const segments = funcInfo.codePath.currentSegments; for (let i = 0; i < segments.length; ++i) { - let segment = segments[i]; + const segment = segments[i]; if (segment.reachable) { segInfoMap[segment.id].superCalled = true; @@ -140,7 +140,7 @@ module.exports = { if (isConstructorFunction(node)) { // Class > ClassBody > MethodDefinition > FunctionExpression - let classNode = node.parent.parent.parent; + const classNode = node.parent.parent.parent; funcInfo = { upper: funcInfo, @@ -172,7 +172,7 @@ module.exports = { * @returns {void} */ onCodePathEnd: function(codePath) { - let isDerivedClass = funcInfo.hasExtends; + const isDerivedClass = funcInfo.hasExtends; funcInfo = funcInfo.upper; if (!isDerivedClass) { @@ -180,10 +180,10 @@ module.exports = { } codePath.traverseSegments(function(segment, controller) { - let info = segInfoMap[segment.id]; + const info = segInfoMap[segment.id]; for (let i = 0; i < info.invalidNodes.length; ++i) { - let invalidNode = info.invalidNodes[i]; + const invalidNode = info.invalidNodes[i]; context.report({ message: "'{{kind}}' is not allowed before 'super()'.", @@ -238,7 +238,7 @@ module.exports = { funcInfo.codePath.traverseSegments( {first: toSegment, last: fromSegment}, function(segment, controller) { - let info = segInfoMap[segment.id]; + const info = segInfoMap[segment.id]; if (info.superCalled) { info.invalidNodes = []; diff --git a/lib/rules/no-trailing-spaces.js b/lib/rules/no-trailing-spaces.js index 6b82cfc38cd..ed7356f193a 100644 --- a/lib/rules/no-trailing-spaces.js +++ b/lib/rules/no-trailing-spaces.js @@ -32,13 +32,13 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); - let BLANK_CLASS = "[ \t\u00a0\u2000-\u200b\u2028\u2029\u3000]", + const BLANK_CLASS = "[ \t\u00a0\u2000-\u200b\u2028\u2029\u3000]", SKIP_BLANK = "^" + BLANK_CLASS + "*$", NONBLANK = BLANK_CLASS + "+$"; - let options = context.options[0] || {}, + const options = context.options[0] || {}, skipBlankLines = options.skipBlankLines || false; /** @@ -78,36 +78,31 @@ module.exports = { // Let's hack. Since Espree does not return whitespace nodes, // fetch the source code and do matching via regexps. - let re = new RegExp(NONBLANK), + const re = new RegExp(NONBLANK), skipMatch = new RegExp(SKIP_BLANK), - matches, lines = sourceCode.lines, - linebreaks = sourceCode.getText().match(/\r\n|\r|\n|\u2028|\u2029/g), - location, - totalLength = 0, - rangeStart, - rangeEnd, - fixRange = [], - containingNode; + linebreaks = sourceCode.getText().match(/\r\n|\r|\n|\u2028|\u2029/g); + let totalLength = 0, + fixRange = []; for (let i = 0, ii = lines.length; i < ii; i++) { - matches = re.exec(lines[i]); + const matches = re.exec(lines[i]); // Always add linebreak length to line length to accommodate for line break (\n or \r\n) // Because during the fix time they also reserve one spot in the array. // Usually linebreak length is 2 for \r\n (CRLF) and 1 for \n (LF) - let linebreakLength = linebreaks && linebreaks[i] ? linebreaks[i].length : 1; - let lineLength = lines[i].length + linebreakLength; + const linebreakLength = linebreaks && linebreaks[i] ? linebreaks[i].length : 1; + const lineLength = lines[i].length + linebreakLength; if (matches) { - location = { + const location = { line: i + 1, column: matches.index }; - rangeStart = totalLength + location.column; - rangeEnd = totalLength + lineLength - linebreakLength; - containingNode = sourceCode.getNodeByRangeIndex(rangeStart); + const rangeStart = totalLength + location.column; + const rangeEnd = totalLength + lineLength - linebreakLength; + const containingNode = sourceCode.getNodeByRangeIndex(rangeStart); if (containingNode && containingNode.type === "TemplateElement" && rangeStart > containingNode.parent.range[0] && diff --git a/lib/rules/no-undef-init.js b/lib/rules/no-undef-init.js index 2683f61e8aa..80a27f6b78c 100644 --- a/lib/rules/no-undef-init.js +++ b/lib/rules/no-undef-init.js @@ -25,7 +25,7 @@ module.exports = { return { VariableDeclarator: function(node) { - let name = node.id.name, + const name = node.id.name, init = node.init && node.init.name; if (init === "undefined" && node.parent.kind !== "const") { diff --git a/lib/rules/no-undef.js b/lib/rules/no-undef.js index da9437157ce..1206747086e 100644 --- a/lib/rules/no-undef.js +++ b/lib/rules/no-undef.js @@ -14,7 +14,7 @@ * @returns {boolean} Whether or not the node is the argument of a typeof operator. */ function hasTypeOfOperator(node) { - let parent = node.parent; + const parent = node.parent; return parent.type === "UnaryExpression" && parent.operator === "typeof"; } @@ -45,15 +45,15 @@ module.exports = { }, create: function(context) { - let options = context.options[0]; - let considerTypeOf = options && options.typeof === true || false; + const options = context.options[0]; + const considerTypeOf = options && options.typeof === true || false; return { "Program:exit": function(/* node */) { - let globalScope = context.getScope(); + const globalScope = context.getScope(); globalScope.through.forEach(function(ref) { - let identifier = ref.identifier; + const identifier = ref.identifier; if (!considerTypeOf && hasTypeOfOperator(identifier)) { return; diff --git a/lib/rules/no-undefined.js b/lib/rules/no-undefined.js index a34d665203f..7a785b80fb3 100644 --- a/lib/rules/no-undefined.js +++ b/lib/rules/no-undefined.js @@ -25,7 +25,7 @@ module.exports = { Identifier: function(node) { if (node.name === "undefined") { - let parent = context.getAncestors().pop(); + const parent = context.getAncestors().pop(); if (!parent || parent.type !== "MemberExpression" || node !== parent.property || parent.computed) { context.report(node, "Unexpected use of undefined."); diff --git a/lib/rules/no-underscore-dangle.js b/lib/rules/no-underscore-dangle.js index a6a3b174fc2..01f44309a94 100644 --- a/lib/rules/no-underscore-dangle.js +++ b/lib/rules/no-underscore-dangle.js @@ -41,10 +41,10 @@ module.exports = { create: function(context) { - let options = context.options[0] || {}; - let ALLOWED_VARIABLES = options.allow ? options.allow : []; - let allowAfterThis = typeof options.allowAfterThis !== "undefined" ? options.allowAfterThis : false; - let allowAfterSuper = typeof options.allowAfterSuper !== "undefined" ? options.allowAfterSuper : false; + const options = context.options[0] || {}; + const ALLOWED_VARIABLES = options.allow ? options.allow : []; + const allowAfterThis = typeof options.allowAfterThis !== "undefined" ? options.allowAfterThis : false; + const allowAfterSuper = typeof options.allowAfterSuper !== "undefined" ? options.allowAfterSuper : false; //------------------------------------------------------------------------- // Helpers @@ -69,7 +69,7 @@ module.exports = { * @private */ function hasTrailingUnderscore(identifier) { - let len = identifier.length; + const len = identifier.length; return identifier !== "_" && (identifier[0] === "_" || identifier[len - 1] === "_"); } @@ -104,7 +104,7 @@ module.exports = { */ function checkForTrailingUnderscoreInFunctionDeclaration(node) { if (node.id) { - let identifier = node.id.name; + const identifier = node.id.name; if (typeof identifier !== "undefined" && hasTrailingUnderscore(identifier) && !isAllowed(identifier)) { context.report(node, "Unexpected dangling '_' in '" + identifier + "'."); @@ -119,7 +119,7 @@ module.exports = { * @private */ function checkForTrailingUnderscoreInVariableExpression(node) { - let identifier = node.id.name; + const identifier = node.id.name; if (typeof identifier !== "undefined" && hasTrailingUnderscore(identifier) && !isSpecialCaseIdentifierInVariableExpression(identifier) && !isAllowed(identifier)) { @@ -134,7 +134,7 @@ module.exports = { * @private */ function checkForTrailingUnderscoreInMemberExpression(node) { - let identifier = node.property.name, + const identifier = node.property.name, isMemberOfThis = node.object.type === "ThisExpression", isMemberOfSuper = node.object.type === "Super"; diff --git a/lib/rules/no-unexpected-multiline.js b/lib/rules/no-unexpected-multiline.js index 6fcb8c681a9..832150e4e7c 100644 --- a/lib/rules/no-unexpected-multiline.js +++ b/lib/rules/no-unexpected-multiline.js @@ -20,11 +20,11 @@ module.exports = { create: function(context) { - let FUNCTION_MESSAGE = "Unexpected newline between function and ( of function call."; - let PROPERTY_MESSAGE = "Unexpected newline between object and [ of property access."; - let TAGGED_TEMPLATE_MESSAGE = "Unexpected newline between template tag and template literal."; + const FUNCTION_MESSAGE = "Unexpected newline between function and ( of function call."; + const PROPERTY_MESSAGE = "Unexpected newline between object and [ of property access."; + const TAGGED_TEMPLATE_MESSAGE = "Unexpected newline between template tag and template literal."; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Check to see if there is a newline between the node and the following open bracket diff --git a/lib/rules/no-unmodified-loop-condition.js b/lib/rules/no-unmodified-loop-condition.js index 099dd5f955e..3f3addf552c 100644 --- a/lib/rules/no-unmodified-loop-condition.js +++ b/lib/rules/no-unmodified-loop-condition.js @@ -9,19 +9,19 @@ // Requirements //------------------------------------------------------------------------------ -let Traverser = require("../util/traverser"), +const Traverser = require("../util/traverser"), astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let pushAll = Function.apply.bind(Array.prototype.push); -let SENTINEL_PATTERN = /(?:(?:Call|Class|Function|Member|New|Yield)Expression|Statement|Declaration)$/; -let LOOP_PATTERN = /^(?:DoWhile|For|While)Statement$/; // for-in/of statements don't have `test` property. -let GROUP_PATTERN = /^(?:BinaryExpression|ConditionalExpression)$/; -let SKIP_PATTERN = /^(?:ArrowFunction|Class|Function)Expression$/; -let DYNAMIC_PATTERN = /^(?:Call|Member|New|TaggedTemplate|Yield)Expression$/; +const pushAll = Function.apply.bind(Array.prototype.push); +const SENTINEL_PATTERN = /(?:(?:Call|Class|Function|Member|New|Yield)Expression|Statement|Declaration)$/; +const LOOP_PATTERN = /^(?:DoWhile|For|While)Statement$/; // for-in/of statements don't have `test` property. +const GROUP_PATTERN = /^(?:BinaryExpression|ConditionalExpression)$/; +const SKIP_PATTERN = /^(?:ArrowFunction|Class|Function)Expression$/; +const DYNAMIC_PATTERN = /^(?:Call|Member|New|TaggedTemplate|Yield)Expression$/; /** * @typedef {Object} LoopConditionInfo @@ -42,7 +42,7 @@ let DYNAMIC_PATTERN = /^(?:Call|Member|New|TaggedTemplate|Yield)Expression$/; */ function isWriteReference(reference) { if (reference.init) { - let def = reference.resolved && reference.resolved.defs[0]; + const def = reference.resolved && reference.resolved.defs[0]; if (!def || def.type !== "Variable" || def.parent.kind !== "var") { return false; @@ -81,8 +81,8 @@ function isUnmodifiedAndNotBelongToGroup(condition) { * @returns {boolean} `true` if the reference is inside of the node. */ function isInRange(node, reference) { - let or = node.range; - let ir = reference.identifier.range; + const or = node.range; + const ir = reference.identifier.range; return or[0] <= ir[0] && ir[1] <= or[1]; } @@ -95,7 +95,7 @@ function isInRange(node, reference) { * @returns {boolean} `true` if the reference is inside of the loop node's * condition. */ -let isInLoop = { +const isInLoop = { WhileStatement: isInRange, DoWhileStatement: isInRange, ForStatement: function(node, reference) { @@ -114,8 +114,8 @@ let isInLoop = { * @returns {boolean} `true` if the node is dynamic. */ function hasDynamicExpressions(root) { - let retv = false, - traverser = new Traverser(); + let retv = false; + const traverser = new Traverser(); traverser.traverse(root, { enter: function(node) { @@ -216,11 +216,10 @@ function updateModifiedFlag(conditions, modifiers) { let funcNode, funcVar; for (let i = 0; i < conditions.length; ++i) { - let condition = conditions[i]; + const condition = conditions[i]; for (let j = 0; !condition.modified && j < modifiers.length; ++j) { - let modifier = modifiers[j], - inLoop; + const modifier = modifiers[j]; /* * Besides checking for the condition being in the loop, we want to @@ -228,11 +227,12 @@ function updateModifiedFlag(conditions, modifiers) { * in the loop. * FIXME: This should probably be extracted to a function. */ - inLoop = condition.isInLoop(modifier) || Boolean( + const inLoop = condition.isInLoop(modifier) || Boolean( (funcNode = getEncloseFunctionDeclaration(modifier)) && (funcVar = astUtils.getVariableByName(modifier.from.upper, funcNode.id.name)) && funcVar.references.some(condition.isInLoop) ); + condition.modified = inLoop; } } @@ -263,7 +263,7 @@ module.exports = { * @returns {void} */ function report(condition) { - let node = condition.reference.identifier; + const node = condition.reference.identifier; context.report({ node: node, @@ -281,7 +281,7 @@ module.exports = { */ function registerConditionsToGroup(conditions) { for (let i = 0; i < conditions.length; ++i) { - let condition = conditions[i]; + const condition = conditions[i]; if (condition.group) { let group = groupMap.get(condition.group); @@ -317,7 +317,7 @@ module.exports = { function checkReferences(variable) { // Gets references that exist in loop conditions. - let conditions = variable + const conditions = variable .references .map(toLoopCondition) .filter(Boolean); @@ -330,7 +330,7 @@ module.exports = { registerConditionsToGroup(conditions); // Check the conditions are modified. - let modifiers = variable.references.filter(isWriteReference); + const modifiers = variable.references.filter(isWriteReference); if (modifiers.length > 0) { updateModifiedFlag(conditions, modifiers); @@ -347,7 +347,7 @@ module.exports = { return { "Program:exit": function() { - let queue = [context.getScope()]; + const queue = [context.getScope()]; groupMap = new Map(); diff --git a/lib/rules/no-unneeded-ternary.js b/lib/rules/no-unneeded-ternary.js index 64c767ed0eb..d22d703498f 100644 --- a/lib/rules/no-unneeded-ternary.js +++ b/lib/rules/no-unneeded-ternary.js @@ -31,8 +31,8 @@ module.exports = { }, create: function(context) { - let options = context.options[0] || {}; - let defaultAssignment = options.defaultAssignment !== false; + const options = context.options[0] || {}; + const defaultAssignment = options.defaultAssignment !== false; /** * Test if the node is a boolean literal diff --git a/lib/rules/no-unsafe-finally.js b/lib/rules/no-unsafe-finally.js index 305cce28ad1..05901abf043 100644 --- a/lib/rules/no-unsafe-finally.js +++ b/lib/rules/no-unsafe-finally.js @@ -9,9 +9,9 @@ // Helpers //------------------------------------------------------------------------------ -let SENTINEL_NODE_TYPE_RETURN_THROW = /^(?:Program|(?:Function|Class)(?:Declaration|Expression)|ArrowFunctionExpression)$/; -let SENTINEL_NODE_TYPE_BREAK = /^(?:Program|(?:Function|Class)(?:Declaration|Expression)|ArrowFunctionExpression|DoWhileStatement|WhileStatement|ForOfStatement|ForInStatement|ForStatement|SwitchStatement)$/; -let SENTINEL_NODE_TYPE_CONTINUE = /^(?:Program|(?:Function|Class)(?:Declaration|Expression)|ArrowFunctionExpression|DoWhileStatement|WhileStatement|ForOfStatement|ForInStatement|ForStatement)$/; +const SENTINEL_NODE_TYPE_RETURN_THROW = /^(?:Program|(?:Function|Class)(?:Declaration|Expression)|ArrowFunctionExpression)$/; +const SENTINEL_NODE_TYPE_BREAK = /^(?:Program|(?:Function|Class)(?:Declaration|Expression)|ArrowFunctionExpression|DoWhileStatement|WhileStatement|ForOfStatement|ForInStatement|ForStatement|SwitchStatement)$/; +const SENTINEL_NODE_TYPE_CONTINUE = /^(?:Program|(?:Function|Class)(?:Declaration|Expression)|ArrowFunctionExpression|DoWhileStatement|WhileStatement|ForOfStatement|ForInStatement|ForStatement)$/; //------------------------------------------------------------------------------ diff --git a/lib/rules/no-unused-expressions.js b/lib/rules/no-unused-expressions.js index d2bdda70f21..c5e062ad2a4 100644 --- a/lib/rules/no-unused-expressions.js +++ b/lib/rules/no-unused-expressions.js @@ -33,7 +33,7 @@ module.exports = { }, create: function(context) { - let config = context.options[0] || {}, + const config = context.options[0] || {}, allowShortCircuit = config.allowShortCircuit || false, allowTernary = config.allowTernary || false; @@ -74,7 +74,7 @@ module.exports = { * @returns {boolean} whether the given node is considered a directive in its current position */ function isDirective(node, ancestors) { - let parent = ancestors[ancestors.length - 1], + const parent = ancestors[ancestors.length - 1], grandparent = ancestors[ancestors.length - 2]; return (parent.type === "Program" || parent.type === "BlockStatement" && diff --git a/lib/rules/no-unused-labels.js b/lib/rules/no-unused-labels.js index ec13c6168e7..f7d9045b505 100644 --- a/lib/rules/no-unused-labels.js +++ b/lib/rules/no-unused-labels.js @@ -68,7 +68,7 @@ module.exports = { return; } - let label = node.label.name; + const label = node.label.name; let info = scopeInfo; while (info) { diff --git a/lib/rules/no-unused-vars.js b/lib/rules/no-unused-vars.js index 951330de9bb..61052f6c1ea 100644 --- a/lib/rules/no-unused-vars.js +++ b/lib/rules/no-unused-vars.js @@ -9,8 +9,8 @@ // Requirements //------------------------------------------------------------------------------ -let lodash = require("lodash"); -let astUtils = require("../ast-utils"); +const lodash = require("lodash"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -60,15 +60,15 @@ module.exports = { create: function(context) { - let MESSAGE = "'{{name}}' is defined but never used."; + const MESSAGE = "'{{name}}' is defined but never used."; - let config = { + const config = { vars: "all", args: "after-used", caughtErrors: "none" }; - let firstOption = context.options[0]; + const firstOption = context.options[0]; if (firstOption) { if (typeof firstOption === "string") { @@ -96,7 +96,7 @@ module.exports = { // Helpers //-------------------------------------------------------------------------- - let STATEMENT_TYPE = /(?:Statement|Declaration)$/; + const STATEMENT_TYPE = /(?:Statement|Declaration)$/; /** * Determines if a given variable is being exported from a module. @@ -106,7 +106,7 @@ module.exports = { */ function isExported(variable) { - let definition = variable.defs[0]; + const definition = variable.defs[0]; if (definition) { @@ -209,12 +209,12 @@ module.exports = { * @private */ function getRhsNode(ref, prevRhsNode) { - let id = ref.identifier; - let parent = id.parent; - let granpa = parent.parent; - let refScope = ref.from.variableScope; - let varScope = ref.resolved.scope.variableScope; - let canBeUsedLater = refScope !== varScope || isInsideOfLoop(id); + const id = ref.identifier; + const parent = id.parent; + const granpa = parent.parent; + const refScope = ref.from.variableScope; + const varScope = ref.resolved.scope.variableScope; + const canBeUsedLater = refScope !== varScope || isInsideOfLoop(id); /* * Inherits the previous node if this reference is in the node. @@ -301,7 +301,7 @@ module.exports = { * @private */ function isInsideOfStorableFunction(id, rhsNode) { - let funcNode = astUtils.getUpperFunction(id); + const funcNode = astUtils.getUpperFunction(id); return ( funcNode && @@ -319,9 +319,9 @@ module.exports = { * @private */ function isReadForItself(ref, rhsNode) { - let id = ref.identifier; - let parent = id.parent; - let granpa = parent.parent; + const id = ref.identifier; + const parent = id.parent; + const granpa = parent.parent; return ref.isRead() && ( @@ -389,20 +389,20 @@ module.exports = { * @private */ function isUsedVariable(variable) { - let functionNodes = variable.defs.filter(function(def) { + const functionNodes = variable.defs.filter(function(def) { return def.type === "FunctionName"; }).map(function(def) { return def.node; }), - isFunctionDefinition = functionNodes.length > 0, - rhsNode = null; + isFunctionDefinition = functionNodes.length > 0; + let rhsNode = null; return variable.references.some(function(ref) { if (isForInRef(ref)) { return true; } - let forItself = isReadForItself(ref, rhsNode); + const forItself = isReadForItself(ref, rhsNode); rhsNode = getRhsNode(ref, rhsNode); @@ -422,13 +422,13 @@ module.exports = { * @private */ function collectUnusedVariables(scope, unusedVars) { - let variables = scope.variables; - let childScopes = scope.childScopes; + const variables = scope.variables; + const childScopes = scope.childScopes; let i, l; if (scope.type !== "TDZ" && (scope.type !== "global" || config.vars === "all")) { for (i = 0, l = variables.length; i < l; ++i) { - let variable = variables[i]; + const variable = variables[i]; // skip a variable of class itself name in the class scope if (scope.type === "class" && scope.block.id === variable.identifiers[0]) { @@ -446,10 +446,10 @@ module.exports = { } // explicit global variables don't have definitions. - let def = variable.defs[0]; + const def = variable.defs[0]; if (def) { - let type = def.type; + const type = def.type; // skip catch variables if (type === "CatchClause") { @@ -514,13 +514,13 @@ module.exports = { * @private */ function getColumnInComment(variable, comment) { - let namePattern = new RegExp("[\\s,]" + lodash.escapeRegExp(variable.name) + "(?:$|[\\s,:])", "g"); + const namePattern = new RegExp("[\\s,]" + lodash.escapeRegExp(variable.name) + "(?:$|[\\s,:])", "g"); // To ignore the first text "global". namePattern.lastIndex = comment.value.indexOf("global") + 6; // Search a given variable name. - let match = namePattern.exec(comment.value); + const match = namePattern.exec(comment.value); return match ? match.index + 1 : 0; } @@ -534,11 +534,11 @@ module.exports = { * @private */ function getLocation(variable) { - let comment = variable.eslintExplicitGlobalComment; - let baseLoc = comment.loc.start; + const comment = variable.eslintExplicitGlobalComment; + const baseLoc = comment.loc.start; let column = getColumnInComment(variable, comment); - let prefix = comment.value.slice(0, column); - let lineInComment = (prefix.match(/\n/g) || []).length; + const prefix = comment.value.slice(0, column); + const lineInComment = (prefix.match(/\n/g) || []).length; if (lineInComment > 0) { column -= 1 + prefix.lastIndexOf("\n"); @@ -560,10 +560,10 @@ module.exports = { return { "Program:exit": function(programNode) { - let unusedVars = collectUnusedVariables(context.getScope(), []); + const unusedVars = collectUnusedVariables(context.getScope(), []); for (let i = 0, l = unusedVars.length; i < l; ++i) { - let unusedVar = unusedVars[i]; + const unusedVar = unusedVars[i]; if (unusedVar.eslintExplicitGlobal) { context.report({ diff --git a/lib/rules/no-use-before-define.js b/lib/rules/no-use-before-define.js index 90dd05c8b1b..edc7926fe94 100644 --- a/lib/rules/no-use-before-define.js +++ b/lib/rules/no-use-before-define.js @@ -9,8 +9,8 @@ // Helpers //------------------------------------------------------------------------------ -let SENTINEL_TYPE = /^(?:(?:Function|Class)(?:Declaration|Expression)|ArrowFunctionExpression|CatchClause|ImportDeclaration|ExportNamedDeclaration)$/; -let FOR_IN_OF_TYPE = /^For(?:In|Of)Statement$/; +const SENTINEL_TYPE = /^(?:(?:Function|Class)(?:Declaration|Expression)|ArrowFunctionExpression|CatchClause|ImportDeclaration|ExportNamedDeclaration)$/; +const FOR_IN_OF_TYPE = /^For(?:In|Of)Statement$/; /** * Parses a given value as options. @@ -106,7 +106,7 @@ function isInInitializer(variable, reference) { } let node = variable.identifiers[0].parent; - let location = reference.identifier.range[1]; + const location = reference.identifier.range[1]; while (node) { if (node.type === "VariableDeclarator") { @@ -165,7 +165,7 @@ module.exports = { }, create: function(context) { - let options = parseOptions(context.options[0]); + const options = parseOptions(context.options[0]); // Defines a function which checks whether or not a reference is allowed according to the option. let isAllowed; @@ -188,7 +188,7 @@ module.exports = { */ function findVariablesInScope(scope) { scope.references.forEach(function(reference) { - let variable = reference.resolved; + const variable = reference.resolved; // Skips when the reference is: // - initialization's. @@ -221,14 +221,14 @@ module.exports = { * @private */ function findVariables() { - let scope = context.getScope(); + const scope = context.getScope(); findVariablesInScope(scope); } - let ruleDefinition = { + const ruleDefinition = { "Program:exit": function(node) { - let scope = context.getScope(), + const scope = context.getScope(), ecmaFeatures = context.parserOptions.ecmaFeatures || {}; findVariablesInScope(scope); diff --git a/lib/rules/no-useless-call.js b/lib/rules/no-useless-call.js index b05292ff79e..ace10f682a6 100644 --- a/lib/rules/no-useless-call.js +++ b/lib/rules/no-useless-call.js @@ -5,7 +5,7 @@ "use strict"; -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Helpers @@ -36,8 +36,8 @@ function isCallOrNonVariadicApply(node) { * @returns {boolean} the source code for the given node. */ function equalTokens(left, right, sourceCode) { - let tokensL = sourceCode.getTokens(left); - let tokensR = sourceCode.getTokens(right); + const tokensL = sourceCode.getTokens(left); + const tokensR = sourceCode.getTokens(right); if (tokensL.length !== tokensR.length) { return false; @@ -83,7 +83,7 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); return { CallExpression: function(node) { @@ -91,9 +91,9 @@ module.exports = { return; } - let applied = node.callee.object; - let expectedThis = (applied.type === "MemberExpression") ? applied.object : null; - let thisArg = node.arguments[0]; + const applied = node.callee.object; + const expectedThis = (applied.type === "MemberExpression") ? applied.object : null; + const thisArg = node.arguments[0]; if (isValidThisArg(expectedThis, thisArg, sourceCode)) { context.report( diff --git a/lib/rules/no-useless-computed-key.js b/lib/rules/no-useless-computed-key.js index f25b9e54743..e90f7aaca8b 100644 --- a/lib/rules/no-useless-computed-key.js +++ b/lib/rules/no-useless-computed-key.js @@ -8,7 +8,7 @@ // Rule Definition //------------------------------------------------------------------------------ -let MESSAGE_UNNECESSARY_COMPUTED = "Unnecessarily computed property [{{property}}] found."; +const MESSAGE_UNNECESSARY_COMPUTED = "Unnecessarily computed property [{{property}}] found."; module.exports = { meta: { @@ -21,7 +21,7 @@ module.exports = { schema: [] }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); return { Property: function(node) { @@ -29,7 +29,7 @@ module.exports = { return; } - let key = node.key, + const key = node.key, nodeType = typeof key.value; if (key.type === "Literal" && (nodeType === "string" || nodeType === "number")) { diff --git a/lib/rules/no-useless-concat.js b/lib/rules/no-useless-concat.js index 6c4cecd7b67..20d2afeacaa 100644 --- a/lib/rules/no-useless-concat.js +++ b/lib/rules/no-useless-concat.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Helpers @@ -67,7 +67,7 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); return { BinaryExpression: function(node) { @@ -78,8 +78,8 @@ module.exports = { } // account for the `foo + "a" + "b"` case - let left = getLeft(node); - let right = getRight(node); + const left = getLeft(node); + const right = getRight(node); if (astUtils.isStringLiteral(left) && astUtils.isStringLiteral(right) && diff --git a/lib/rules/no-useless-constructor.js b/lib/rules/no-useless-constructor.js index f6be08f69da..323be4f1fa3 100644 --- a/lib/rules/no-useless-constructor.js +++ b/lib/rules/no-useless-constructor.js @@ -163,9 +163,9 @@ module.exports = { return; } - let body = node.value.body.body; - let ctorParams = node.value.params; - let superClass = node.parent.parent.superClass; + const body = node.value.body.body; + const ctorParams = node.value.params; + const superClass = node.parent.parent.superClass; if (superClass ? isRedundantSuperCall(body, ctorParams) : (body.length === 0)) { context.report({ diff --git a/lib/rules/no-useless-escape.js b/lib/rules/no-useless-escape.js index 226a9da1659..244249c389c 100644 --- a/lib/rules/no-useless-escape.js +++ b/lib/rules/no-useless-escape.js @@ -9,7 +9,7 @@ // Rule Definition //------------------------------------------------------------------------------ -let VALID_STRING_ESCAPES = [ +const VALID_STRING_ESCAPES = [ "\\", "n", "r", @@ -23,7 +23,7 @@ let VALID_STRING_ESCAPES = [ "\r" ]; -let VALID_REGEX_ESCAPES = [ +const VALID_REGEX_ESCAPES = [ "\\", ".", "-", @@ -80,8 +80,8 @@ module.exports = { * @returns {void} */ function validate(escapes, node, elm) { - let escapeNotFound = escapes.indexOf(elm[0][1]) === -1; - let isQuoteEscape = elm[0][1] === node.raw[0]; + const escapeNotFound = escapes.indexOf(elm[0][1]) === -1; + const isQuoteEscape = elm[0][1] === node.raw[0]; if (escapeNotFound && !isQuoteEscape) { context.report({ @@ -103,7 +103,7 @@ module.exports = { */ function check(node) { let nodeEscapes, match; - let pattern = /\\[^\d]/g; + const pattern = /\\[^\d]/g; if (typeof node.value === "string") { diff --git a/lib/rules/no-useless-rename.js b/lib/rules/no-useless-rename.js index 80539e57723..91cdcc49ffb 100644 --- a/lib/rules/no-useless-rename.js +++ b/lib/rules/no-useless-rename.js @@ -31,7 +31,7 @@ module.exports = { }, create: function(context) { - let options = context.options[0] || {}, + const options = context.options[0] || {}, ignoreDestructuring = options.ignoreDestructuring === true, ignoreImport = options.ignoreImport === true, ignoreExport = options.ignoreExport === true; @@ -49,7 +49,7 @@ module.exports = { * @returns {void} */ function reportError(node, initial, result, type) { - let name = initial.type === "Identifier" ? initial.name : initial.value; + const name = initial.type === "Identifier" ? initial.name : initial.value; return context.report({ node: node, @@ -73,16 +73,13 @@ module.exports = { * @returns {void} */ function checkDestructured(node) { - let properties, - i; - if (ignoreDestructuring) { return; } - properties = node.properties; + const properties = node.properties; - for (i = 0; i < properties.length; i++) { + for (let i = 0; i < properties.length; i++) { if (properties[i].shorthand) { continue; } diff --git a/lib/rules/no-var.js b/lib/rules/no-var.js index fc7783d7160..dfef7ceea69 100644 --- a/lib/rules/no-var.js +++ b/lib/rules/no-var.js @@ -9,7 +9,7 @@ // Helpers //------------------------------------------------------------------------------ -let SCOPE_NODE_TYPE = /^(?:Program|BlockStatement|SwitchStatement|ForStatement|ForInStatement|ForOfStatement)$/; +const SCOPE_NODE_TYPE = /^(?:Program|BlockStatement|SwitchStatement|ForStatement|ForInStatement|ForOfStatement)$/; /** * Gets the scope node which directly contains a given node. @@ -60,8 +60,8 @@ function isUsedFromOutsideOf(scopeNode) { * scope. */ function isOutsideOfScope(reference) { - let scope = scopeNode.range; - let id = reference.identifier.range; + const scope = scopeNode.range; + const id = reference.identifier.range; return id[0] < scope[0] || id[1] > scope[1]; } @@ -88,7 +88,7 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Checks whether it can fix a given variable declaration or not. @@ -119,8 +119,8 @@ module.exports = { * @returns {boolean} `true` if it can fix the node. */ function canFix(node) { - let variables = context.getDeclaredVariables(node); - let scopeNode = getScopeNode(node); + const variables = context.getDeclaredVariables(node); + const scopeNode = getScopeNode(node); return !( node.parent.type === "SwitchCase" || @@ -136,7 +136,7 @@ module.exports = { * @returns {void} */ function report(node) { - let varToken = sourceCode.getFirstToken(node); + const varToken = sourceCode.getFirstToken(node); context.report({ node: node, diff --git a/lib/rules/no-warning-comments.js b/lib/rules/no-warning-comments.js index 7db6ed1234b..d0ae12da615 100644 --- a/lib/rules/no-warning-comments.js +++ b/lib/rules/no-warning-comments.js @@ -5,7 +5,7 @@ "use strict"; -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -40,11 +40,10 @@ module.exports = { create: function(context) { - let configuration = context.options[0] || {}, + const configuration = context.options[0] || {}, warningTerms = configuration.terms || ["todo", "fixme", "xxx"], location = configuration.location || "start", - selfConfigRegEx = /\bno-warning-comments\b/, - warningRegExps; + selfConfigRegEx = /\bno-warning-comments\b/; /** * Convert a warning term into a RegExp which will match a comment containing that whole word in the specified @@ -55,9 +54,8 @@ module.exports = { * @returns {RegExp} The term converted to a RegExp */ function convertToRegExp(term) { - let escaped = term.replace(/[-\/\\$\^*+?.()|\[\]{}]/g, "\\$&"), - suffix, - prefix; + const escaped = term.replace(/[-\/\\$\^*+?.()|\[\]{}]/g, "\\$&"); + let prefix; /* * If the term ends in a word character (a-z0-9_), ensure a word @@ -69,7 +67,7 @@ module.exports = { * In these cases, use no bounding match. Same applies for the * prefix, handled below. */ - suffix = /\w$/.test(term) ? "\\b" : ""; + const suffix = /\w$/.test(term) ? "\\b" : ""; if (location === "start") { @@ -87,13 +85,15 @@ module.exports = { return new RegExp(prefix + escaped + suffix, "i"); } + const warningRegExps = warningTerms.map(convertToRegExp); + /** * Checks the specified comment for matches of the configured warning terms and returns the matches. * @param {string} comment The comment which is checked. * @returns {Array} All matched warning terms for this comment. */ function commentContainsWarningTerm(comment) { - let matches = []; + const matches = []; warningRegExps.forEach(function(regex, index) { if (regex.test(comment)) { @@ -114,14 +114,13 @@ module.exports = { return; } - let matches = commentContainsWarningTerm(node.value); + const matches = commentContainsWarningTerm(node.value); matches.forEach(function(matchedTerm) { context.report(node, "Unexpected '" + matchedTerm + "' comment."); }); } - warningRegExps = warningTerms.map(convertToRegExp); return { BlockComment: checkComment, LineComment: checkComment diff --git a/lib/rules/no-whitespace-before-property.js b/lib/rules/no-whitespace-before-property.js index fd13ba9d5d5..2c0ad7a7503 100644 --- a/lib/rules/no-whitespace-before-property.js +++ b/lib/rules/no-whitespace-before-property.js @@ -4,7 +4,7 @@ */ "use strict"; -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -23,7 +23,7 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); //-------------------------------------------------------------------------- // Helpers @@ -53,7 +53,7 @@ module.exports = { * @private */ function reportError(node, leftToken, rightToken) { - let replacementText = node.computed ? "" : "."; + const replacementText = node.computed ? "" : "."; context.report({ node: node, diff --git a/lib/rules/object-curly-newline.js b/lib/rules/object-curly-newline.js index b69bd190447..6b94ad31133 100644 --- a/lib/rules/object-curly-newline.js +++ b/lib/rules/object-curly-newline.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ // Schema objects. -let OPTION_VALUE = { +const OPTION_VALUE = { oneOf: [ { enum: ["always", "never"] @@ -78,7 +78,7 @@ function normalizeOptions(options) { }; } - let value = normalizeOptionValue(options); + const value = normalizeOptionValue(options); return {ObjectExpression: value, ObjectPattern: value}; } @@ -114,8 +114,8 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); - let normalizedOptions = normalizeOptions(context.options[0]); + const sourceCode = context.getSourceCode(); + const normalizedOptions = normalizeOptions(context.options[0]); /** * Reports a given node if it violated this rule. @@ -125,12 +125,12 @@ module.exports = { * @returns {void} */ function check(node) { - let options = normalizedOptions[node.type]; - let openBrace = sourceCode.getFirstToken(node); - let closeBrace = sourceCode.getLastToken(node); + const options = normalizedOptions[node.type]; + const openBrace = sourceCode.getFirstToken(node); + const closeBrace = sourceCode.getLastToken(node); let first = sourceCode.getTokenOrCommentAfter(openBrace); let last = sourceCode.getTokenOrCommentBefore(closeBrace); - let needsLinebreaks = ( + const needsLinebreaks = ( node.properties.length >= options.minProperties || ( options.multiline && diff --git a/lib/rules/object-curly-spacing.js b/lib/rules/object-curly-spacing.js index 4fe1f85758b..46c678e6e88 100644 --- a/lib/rules/object-curly-spacing.js +++ b/lib/rules/object-curly-spacing.js @@ -4,7 +4,7 @@ */ "use strict"; -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -40,7 +40,7 @@ module.exports = { }, create: function(context) { - let spaced = context.options[0] === "always", + const spaced = context.options[0] === "always", sourceCode = context.getSourceCode(); /** @@ -54,7 +54,7 @@ module.exports = { return context.options[1] ? context.options[1][option] === !spaced : false; } - let options = { + const options = { spaced: spaced, arraysInObjectsException: isOptionSet("arraysInObjects"), objectsInObjectsException: isOptionSet("objectsInObjects") @@ -76,7 +76,7 @@ module.exports = { loc: token.loc.start, message: "There should be no space after '" + token.value + "'.", fix: function(fixer) { - let nextToken = context.getSourceCode().getTokenAfter(token); + const nextToken = context.getSourceCode().getTokenAfter(token); return fixer.removeRange([token.range[1], nextToken.range[0]]); } @@ -95,7 +95,7 @@ module.exports = { loc: token.loc.start, message: "There should be no space before '" + token.value + "'.", fix: function(fixer) { - let previousToken = context.getSourceCode().getTokenBefore(token); + const previousToken = context.getSourceCode().getTokenBefore(token); return fixer.removeRange([previousToken.range[1], token.range[0]]); } @@ -146,14 +146,9 @@ module.exports = { * @returns {void} */ function validateBraceSpacing(node, first, second, penultimate, last) { - let shouldCheckPenultimate, - penultimateType, - closingCurlyBraceMustBeSpaced, - firstSpaced, - lastSpaced; - if (astUtils.isTokenOnSameLine(first, second)) { - firstSpaced = sourceCode.isSpaceBetweenTokens(first, second); + const firstSpaced = sourceCode.isSpaceBetweenTokens(first, second); + if (options.spaced && !firstSpaced) { reportRequiredBeginningSpace(node, first); } @@ -163,18 +158,18 @@ module.exports = { } if (astUtils.isTokenOnSameLine(penultimate, last)) { - shouldCheckPenultimate = ( + const shouldCheckPenultimate = ( options.arraysInObjectsException && penultimate.value === "]" || options.objectsInObjectsException && penultimate.value === "}" ); - penultimateType = shouldCheckPenultimate && sourceCode.getNodeByRangeIndex(penultimate.start).type; + const penultimateType = shouldCheckPenultimate && sourceCode.getNodeByRangeIndex(penultimate.start).type; - closingCurlyBraceMustBeSpaced = ( + const closingCurlyBraceMustBeSpaced = ( options.arraysInObjectsException && penultimateType === "ArrayExpression" || options.objectsInObjectsException && (penultimateType === "ObjectExpression" || penultimateType === "ObjectPattern") ) ? !options.spaced : options.spaced; - lastSpaced = sourceCode.isSpaceBetweenTokens(penultimate, last); + const lastSpaced = sourceCode.isSpaceBetweenTokens(penultimate, last); if (closingCurlyBraceMustBeSpaced && !lastSpaced) { reportRequiredEndingSpace(node, last); @@ -195,7 +190,7 @@ module.exports = { return; } - let first = sourceCode.getFirstToken(node), + const first = sourceCode.getFirstToken(node), last = sourceCode.getLastToken(node), second = sourceCode.getTokenAfter(first), penultimate = sourceCode.getTokenBefore(last); @@ -213,8 +208,8 @@ module.exports = { return; } - let firstSpecifier = node.specifiers[0], - lastSpecifier = node.specifiers[node.specifiers.length - 1]; + let firstSpecifier = node.specifiers[0]; + const lastSpecifier = node.specifiers[node.specifiers.length - 1]; if (lastSpecifier.type !== "ImportSpecifier") { return; @@ -223,15 +218,15 @@ module.exports = { firstSpecifier = node.specifiers[1]; } - let first = sourceCode.getTokenBefore(firstSpecifier), - last = sourceCode.getTokenAfter(lastSpecifier); + const first = sourceCode.getTokenBefore(firstSpecifier); + let last = sourceCode.getTokenAfter(lastSpecifier); // to support a trailing comma. if (last.value === ",") { last = sourceCode.getTokenAfter(last); } - let second = sourceCode.getTokenAfter(first), + const second = sourceCode.getTokenAfter(first), penultimate = sourceCode.getTokenBefore(last); validateBraceSpacing(node, first, second, penultimate, last); @@ -247,17 +242,17 @@ module.exports = { return; } - let firstSpecifier = node.specifiers[0], + const firstSpecifier = node.specifiers[0], lastSpecifier = node.specifiers[node.specifiers.length - 1], - first = sourceCode.getTokenBefore(firstSpecifier), - last = sourceCode.getTokenAfter(lastSpecifier); + first = sourceCode.getTokenBefore(firstSpecifier); + let last = sourceCode.getTokenAfter(lastSpecifier); // to support a trailing comma. if (last.value === ",") { last = sourceCode.getTokenAfter(last); } - let second = sourceCode.getTokenAfter(first), + const second = sourceCode.getTokenAfter(first), penultimate = sourceCode.getTokenBefore(last); validateBraceSpacing(node, first, second, penultimate, last); diff --git a/lib/rules/object-property-newline.js b/lib/rules/object-property-newline.js index fef7b871b44..d159f6f7dbe 100644 --- a/lib/rules/object-property-newline.js +++ b/lib/rules/object-property-newline.js @@ -31,21 +31,19 @@ module.exports = { }, create: function(context) { - let allowSameLine = context.options[0] && Boolean(context.options[0].allowMultiplePropertiesPerLine); - let errorMessage = allowSameLine ? + const allowSameLine = context.options[0] && Boolean(context.options[0].allowMultiplePropertiesPerLine); + const errorMessage = allowSameLine ? "Object properties must go on a new line if they aren't all on the same line." : "Object properties must go on a new line."; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); return { ObjectExpression: function(node) { - let lastTokenOfPreviousProperty, firstTokenOfCurrentProperty; - if (allowSameLine) { if (node.properties.length > 1) { - let firstTokenOfFirstProperty = sourceCode.getFirstToken(node.properties[0]); - let lastTokenOfLastProperty = sourceCode.getLastToken(node.properties[node.properties.length - 1]); + const firstTokenOfFirstProperty = sourceCode.getFirstToken(node.properties[0]); + const lastTokenOfLastProperty = sourceCode.getLastToken(node.properties[node.properties.length - 1]); if (firstTokenOfFirstProperty.loc.end.line === lastTokenOfLastProperty.loc.start.line) { @@ -56,8 +54,8 @@ module.exports = { } for (let i = 1; i < node.properties.length; i++) { - lastTokenOfPreviousProperty = sourceCode.getLastToken(node.properties[i - 1]); - firstTokenOfCurrentProperty = sourceCode.getFirstToken(node.properties[i]); + const lastTokenOfPreviousProperty = sourceCode.getLastToken(node.properties[i - 1]); + const firstTokenOfCurrentProperty = sourceCode.getFirstToken(node.properties[i]); if (lastTokenOfPreviousProperty.loc.end.line === firstTokenOfCurrentProperty.loc.start.line) { context.report({ diff --git a/lib/rules/object-shorthand.js b/lib/rules/object-shorthand.js index 1d08178d57e..87cbde330f5 100644 --- a/lib/rules/object-shorthand.js +++ b/lib/rules/object-shorthand.js @@ -5,7 +5,7 @@ "use strict"; -let OPTIONS = { +const OPTIONS = { always: "always", never: "never", methods: "methods", @@ -83,14 +83,14 @@ module.exports = { }, create: function(context) { - let APPLY = context.options[0] || OPTIONS.always; - let APPLY_TO_METHODS = APPLY === OPTIONS.methods || APPLY === OPTIONS.always; - let APPLY_TO_PROPS = APPLY === OPTIONS.properties || APPLY === OPTIONS.always; - let APPLY_NEVER = APPLY === OPTIONS.never; + const APPLY = context.options[0] || OPTIONS.always; + const APPLY_TO_METHODS = APPLY === OPTIONS.methods || APPLY === OPTIONS.always; + const APPLY_TO_PROPS = APPLY === OPTIONS.properties || APPLY === OPTIONS.always; + const APPLY_NEVER = APPLY === OPTIONS.never; - let PARAMS = context.options[1] || {}; - let IGNORE_CONSTRUCTORS = PARAMS.ignoreConstructors; - let AVOID_QUOTES = PARAMS.avoidQuotes; + const PARAMS = context.options[1] || {}; + const IGNORE_CONSTRUCTORS = PARAMS.ignoreConstructors; + const AVOID_QUOTES = PARAMS.avoidQuotes; //-------------------------------------------------------------------------- // Helpers @@ -103,7 +103,7 @@ module.exports = { * @private */ function isConstructor(name) { - let firstChar = name.charAt(0); + const firstChar = name.charAt(0); return firstChar === firstChar.toUpperCase(); } @@ -123,8 +123,7 @@ module.exports = { return { Property: function(node) { - let isConciseProperty = node.method || node.shorthand, - type; + const isConciseProperty = node.method || node.shorthand; // Ignore destructuring assignment if (node.parent.type === "ObjectPattern") { @@ -147,7 +146,8 @@ module.exports = { // if we're "never" and concise we should warn now if (APPLY_NEVER) { - type = node.method ? "method" : "property"; + const type = node.method ? "method" : "property"; + context.report({ node: node, message: "Expected longform " + type + " syntax.", diff --git a/lib/rules/one-var-declaration-per-line.js b/lib/rules/one-var-declaration-per-line.js index e7a29fb115d..fe47b0333f4 100644 --- a/lib/rules/one-var-declaration-per-line.js +++ b/lib/rules/one-var-declaration-per-line.js @@ -25,8 +25,8 @@ module.exports = { create: function(context) { - let ERROR_MESSAGE = "Expected variable declaration to be on a new line."; - let always = context.options[0] === "always"; + const ERROR_MESSAGE = "Expected variable declaration to be on a new line."; + const always = context.options[0] === "always"; //-------------------------------------------------------------------------- // Helpers @@ -54,7 +54,7 @@ module.exports = { return; } - let declarations = node.declarations; + const declarations = node.declarations; let prev; declarations.forEach(function(current) { diff --git a/lib/rules/one-var.js b/lib/rules/one-var.js index 10cdb626e57..0291c709737 100644 --- a/lib/rules/one-var.js +++ b/lib/rules/one-var.js @@ -57,12 +57,12 @@ module.exports = { create: function(context) { - let MODE_ALWAYS = "always", + const MODE_ALWAYS = "always", MODE_NEVER = "never"; - let mode = context.options[0] || MODE_ALWAYS; + const mode = context.options[0] || MODE_ALWAYS; - let options = { + const options = { }; if (typeof mode === "string") { // simple options configuration with just a string @@ -113,8 +113,8 @@ module.exports = { // Helpers //-------------------------------------------------------------------------- - let functionStack = []; - let blockStack = []; + const functionStack = []; + const blockStack = []; /** * Increments the blockStack counter. @@ -204,7 +204,7 @@ module.exports = { * @private */ function countDeclarations(declarations) { - let counts = { uninitialized: 0, initialized: 0 }; + const counts = { uninitialized: 0, initialized: 0 }; for (let i = 0; i < declarations.length; i++) { if (declarations[i].init === null) { @@ -225,9 +225,9 @@ module.exports = { */ function hasOnlyOneStatement(statementType, declarations) { - let declarationCounts = countDeclarations(declarations); - let currentOptions = options[statementType] || {}; - let currentScope = getCurrentScope(statementType); + const declarationCounts = countDeclarations(declarations); + const currentOptions = options[statementType] || {}; + const currentScope = getCurrentScope(statementType); if (currentOptions.uninitialized === MODE_ALWAYS && currentOptions.initialized === MODE_ALWAYS) { if (currentScope.uninitialized || currentScope.initialized) { @@ -266,16 +266,15 @@ module.exports = { SwitchStatement: startBlock, VariableDeclaration: function(node) { - let parent = node.parent, - type, declarations, declarationCounts; + const parent = node.parent; + const type = node.kind; - type = node.kind; if (!options[type]) { return; } - declarations = node.declarations; - declarationCounts = countDeclarations(declarations); + const declarations = node.declarations; + const declarationCounts = countDeclarations(declarations); // always if (!hasOnlyOneStatement(type, declarations)) { @@ -296,7 +295,7 @@ module.exports = { // never if (parent.type !== "ForStatement" || parent.init !== node) { - let totalDeclarations = declarationCounts.uninitialized + declarationCounts.initialized; + const totalDeclarations = declarationCounts.uninitialized + declarationCounts.initialized; if (totalDeclarations > 1) { diff --git a/lib/rules/operator-assignment.js b/lib/rules/operator-assignment.js index 3088ff174f5..6056b41d36d 100644 --- a/lib/rules/operator-assignment.js +++ b/lib/rules/operator-assignment.js @@ -93,15 +93,13 @@ module.exports = { * @returns {void} */ function verify(node) { - let expr, left, operator; - if (node.operator !== "=" || node.right.type !== "BinaryExpression") { return; } - left = node.left; - expr = node.right; - operator = expr.operator; + const left = node.left; + const expr = node.right; + const operator = expr.operator; if (isCommutativeOperatorWithShorthand(operator)) { if (same(left, expr.left) || same(left, expr.right)) { diff --git a/lib/rules/operator-linebreak.js b/lib/rules/operator-linebreak.js index 2b2f1274aa1..a330957af7b 100644 --- a/lib/rules/operator-linebreak.js +++ b/lib/rules/operator-linebreak.js @@ -5,7 +5,7 @@ "use strict"; -let lodash = require("lodash"), +const lodash = require("lodash"), astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ @@ -44,10 +44,10 @@ module.exports = { create: function(context) { - let usedDefaultGlobal = !context.options[0]; - let globalStyle = context.options[0] || "after"; - let options = context.options[1] || {}; - let styleOverrides = options.overrides ? lodash.assign({}, options.overrides) : {}; + const usedDefaultGlobal = !context.options[0]; + const globalStyle = context.options[0] || "after"; + const options = context.options[1] || {}; + const styleOverrides = options.overrides ? lodash.assign({}, options.overrides) : {}; if (usedDefaultGlobal && !styleOverrides["?"]) { styleOverrides["?"] = "before"; @@ -57,7 +57,7 @@ module.exports = { styleOverrides[":"] = "before"; } - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); //-------------------------------------------------------------------------- // Helpers @@ -84,10 +84,10 @@ module.exports = { operatorToken = sourceCode.getTokenAfter(operatorToken); } - let rightToken = sourceCode.getTokenAfter(operatorToken); - let operator = operatorToken.value; - let operatorStyleOverride = styleOverrides[operator]; - let style = operatorStyleOverride || globalStyle; + const rightToken = sourceCode.getTokenAfter(operatorToken); + const operator = operatorToken.value; + const operatorStyleOverride = styleOverrides[operator]; + const style = operatorStyleOverride || globalStyle; // if single line if (astUtils.isTokenOnSameLine(leftToken, operatorToken) && diff --git a/lib/rules/padded-blocks.js b/lib/rules/padded-blocks.js index 2754cda4de6..b79a25c2908 100644 --- a/lib/rules/padded-blocks.js +++ b/lib/rules/padded-blocks.js @@ -47,8 +47,8 @@ module.exports = { }, create: function(context) { - let options = {}; - let config = context.options[0] || "always"; + const options = {}; + const config = context.options[0] || "always"; if (typeof config === "string") { options.blocks = config === "always"; @@ -64,10 +64,10 @@ module.exports = { } } - let ALWAYS_MESSAGE = "Block must be padded by blank lines.", + const ALWAYS_MESSAGE = "Block must be padded by blank lines.", NEVER_MESSAGE = "Block must not be padded by blank lines."; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Gets the open brace token from a given node. @@ -96,17 +96,16 @@ module.exports = { * @returns {boolean} Whether or not the token is followed by a blank line. */ function isTokenTopPadded(token) { - let tokenStartLine = token.loc.start.line, - expectedFirstLine = tokenStartLine + 2, - first, - firstLine; + const tokenStartLine = token.loc.start.line, + expectedFirstLine = tokenStartLine + 2; + let first = token; - first = token; do { first = sourceCode.getTokenOrCommentAfter(first); } while (isComment(first) && first.loc.start.line === tokenStartLine); - firstLine = first.loc.start.line; + const firstLine = first.loc.start.line; + return expectedFirstLine <= firstLine; } @@ -116,17 +115,16 @@ module.exports = { * @returns {boolean} Whether or not the token is preceeded by a blank line */ function isTokenBottomPadded(token) { - let blockEnd = token.loc.end.line, - expectedLastLine = blockEnd - 2, - last, - lastLine; + const blockEnd = token.loc.end.line, + expectedLastLine = blockEnd - 2; + let last = token; - last = token; do { last = sourceCode.getTokenOrCommentBefore(last); } while (isComment(last) && last.loc.end.line === blockEnd); - lastLine = last.loc.end.line; + const lastLine = last.loc.end.line; + return lastLine <= expectedLastLine; } @@ -156,7 +154,7 @@ module.exports = { * @returns {void} undefined. */ function checkPadding(node) { - let openBrace = getOpenBrace(node), + const openBrace = getOpenBrace(node), closeBrace = sourceCode.getLastToken(node), blockHasTopPadding = isTokenTopPadded(openBrace), blockHasBottomPadding = isTokenBottomPadded(closeBrace); @@ -184,7 +182,7 @@ module.exports = { } } else { if (blockHasTopPadding) { - let nextToken = sourceCode.getTokenOrCommentAfter(openBrace); + const nextToken = sourceCode.getTokenOrCommentAfter(openBrace); context.report({ node: node, @@ -197,7 +195,7 @@ module.exports = { } if (blockHasBottomPadding) { - let previousToken = sourceCode.getTokenOrCommentBefore(closeBrace); + const previousToken = sourceCode.getTokenOrCommentBefore(closeBrace); context.report({ node: node, @@ -211,7 +209,7 @@ module.exports = { } } - let rule = {}; + const rule = {}; if (options.hasOwnProperty("switches")) { rule.SwitchStatement = function(node) { diff --git a/lib/rules/prefer-arrow-callback.js b/lib/rules/prefer-arrow-callback.js index 185bf160576..97aab40b2e3 100644 --- a/lib/rules/prefer-arrow-callback.js +++ b/lib/rules/prefer-arrow-callback.js @@ -35,10 +35,10 @@ function checkMetaProperty(node, metaName, propertyName) { * @returns {escope.Variable} The found variable object. */ function getVariableOfArguments(scope) { - let variables = scope.variables; + const variables = scope.variables; for (let i = 0; i < variables.length; ++i) { - let variable = variables[i]; + const variable = variables[i]; if (variable.name === "arguments") { @@ -63,7 +63,7 @@ function getVariableOfArguments(scope) { * {boolean} retv.isLexicalThis - `true` if the node is with `.bind(this)`. */ function getCallbackInfo(node) { - let retv = {isCallback: false, isLexicalThis: false}; + const retv = {isCallback: false, isLexicalThis: false}; let parent = node.parent; while (node) { @@ -144,10 +144,10 @@ module.exports = { }, create: function(context) { - let options = context.options[0] || {}; + const options = context.options[0] || {}; - let allowUnboundThis = options.allowUnboundThis !== false; // default to true - let allowNamedFunctions = options.allowNamedFunctions; + const allowUnboundThis = options.allowUnboundThis !== false; // default to true + const allowNamedFunctions = options.allowNamedFunctions; /* * {Array<{this: boolean, super: boolean, meta: boolean}>} @@ -182,7 +182,7 @@ module.exports = { // If there are below, it cannot replace with arrow functions merely. ThisExpression: function() { - let info = stack[stack.length - 1]; + const info = stack[stack.length - 1]; if (info) { info.this = true; @@ -190,7 +190,7 @@ module.exports = { }, Super: function() { - let info = stack[stack.length - 1]; + const info = stack[stack.length - 1]; if (info) { info.super = true; @@ -198,7 +198,7 @@ module.exports = { }, MetaProperty: function(node) { - let info = stack[stack.length - 1]; + const info = stack[stack.length - 1]; if (info && checkMetaProperty(node, "new", "target")) { info.meta = true; @@ -212,7 +212,7 @@ module.exports = { // Main. FunctionExpression: enterScope, "FunctionExpression:exit": function(node) { - let scopeInfo = exitScope(); + const scopeInfo = exitScope(); // Skip named function expressions if (allowNamedFunctions && node.id && node.id.name) { @@ -225,21 +225,21 @@ module.exports = { } // Skip recursive functions. - let nameVar = context.getDeclaredVariables(node)[0]; + const nameVar = context.getDeclaredVariables(node)[0]; if (isFunctionName(nameVar) && nameVar.references.length > 0) { return; } // Skip if it's using arguments. - let variable = getVariableOfArguments(context.getScope()); + const variable = getVariableOfArguments(context.getScope()); if (variable && variable.references.length > 0) { return; } // Reports if it's a callback which can replace with arrows. - let callbackInfo = getCallbackInfo(node); + const callbackInfo = getCallbackInfo(node); if (callbackInfo.isCallback && (!allowUnboundThis || !scopeInfo.this || callbackInfo.isLexicalThis) && diff --git a/lib/rules/prefer-const.js b/lib/rules/prefer-const.js index 5935e02b2c3..76931bfc1d1 100644 --- a/lib/rules/prefer-const.js +++ b/lib/rules/prefer-const.js @@ -9,15 +9,15 @@ // Requirements //------------------------------------------------------------------------------ -let lodash = require("lodash"); +const lodash = require("lodash"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let PATTERN_TYPE = /^(?:.+?Pattern|RestElement|Property)$/; -let DECLARATION_HOST_TYPE = /^(?:Program|BlockStatement|SwitchCase)$/; -let DESTRUCTURING_HOST_TYPE = /^(?:VariableDeclarator|AssignmentExpression)$/; +const PATTERN_TYPE = /^(?:.+?Pattern|RestElement|Property)$/; +const DECLARATION_HOST_TYPE = /^(?:Program|BlockStatement|SwitchCase)$/; +const DESTRUCTURING_HOST_TYPE = /^(?:VariableDeclarator|AssignmentExpression)$/; /** * Adds multiple items to the tail of an array. @@ -26,7 +26,7 @@ let DESTRUCTURING_HOST_TYPE = /^(?:VariableDeclarator|AssignmentExpression)$/; * @param {any[]} values - Items to be added. * @returns {void} */ -let pushAll = Function.apply.bind(Array.prototype.push); +const pushAll = Function.apply.bind(Array.prototype.push); /** * Checks whether a given node is located at `ForStatement.init` or not. @@ -89,13 +89,13 @@ function getIdentifierIfShouldBeConst(variable, ignoreReadBeforeAssign) { // Finds the unique WriteReference. let writer = null; let isReadBeforeInit = false; - let references = variable.references; + const references = variable.references; for (let i = 0; i < references.length; ++i) { - let reference = references[i]; + const reference = references[i]; if (reference.isWrite()) { - let isReassigned = ( + const isReassigned = ( writer !== null && writer.identifier !== reference.identifier ); @@ -115,7 +115,7 @@ function getIdentifierIfShouldBeConst(variable, ignoreReadBeforeAssign) { // If the assignment is from a different scope, ignore it. // If the assignment cannot change to a declaration, ignore it. - let shouldBeConst = ( + const shouldBeConst = ( writer !== null && writer.from === variable.scope && canBecomeVariableDeclaration(writer.identifier) @@ -168,17 +168,17 @@ function getDestructuringHost(reference) { * @returns {Map} Grouped identifier nodes. */ function groupByDestructuring(variables, ignoreReadBeforeAssign) { - let identifierMap = new Map(); + const identifierMap = new Map(); for (let i = 0; i < variables.length; ++i) { - let variable = variables[i]; - let references = variable.references; - let identifier = getIdentifierIfShouldBeConst(variable, ignoreReadBeforeAssign); + const variable = variables[i]; + const references = variable.references; + const identifier = getIdentifierIfShouldBeConst(variable, ignoreReadBeforeAssign); let prevId = null; for (let j = 0; j < references.length; ++j) { - let reference = references[j]; - let id = reference.identifier; + const reference = references[j]; + const id = reference.identifier; // Avoid counting a reference twice or more for default values of // destructuring. @@ -188,7 +188,7 @@ function groupByDestructuring(variables, ignoreReadBeforeAssign) { prevId = id; // Add the identifier node into the destructuring group. - let group = getDestructuringHost(reference); + const group = getDestructuringHost(reference); if (group) { if (identifierMap.has(group)) { @@ -248,9 +248,9 @@ module.exports = { }, create: function(context) { - let options = context.options[0] || {}; - let checkingMixedDestructuring = options.destructuring !== "all"; - let ignoreReadBeforeAssign = options.ignoreReadBeforeAssign === true; + const options = context.options[0] || {}; + const checkingMixedDestructuring = options.destructuring !== "all"; + const ignoreReadBeforeAssign = options.ignoreReadBeforeAssign === true; let variables = null; /** @@ -260,7 +260,7 @@ module.exports = { * @returns {void} */ function report(node) { - let reportArgs = { + const reportArgs = { node: node, message: "'{{name}}' is never reassigned. Use 'const' instead.", data: node @@ -317,7 +317,7 @@ module.exports = { * @returns {void} */ function checkVariable(variable) { - let node = getIdentifierIfShouldBeConst(variable, ignoreReadBeforeAssign); + const node = getIdentifierIfShouldBeConst(variable, ignoreReadBeforeAssign); if (node) { report(node); diff --git a/lib/rules/prefer-reflect.js b/lib/rules/prefer-reflect.js index b2b0b9abda8..103574428b3 100644 --- a/lib/rules/prefer-reflect.js +++ b/lib/rules/prefer-reflect.js @@ -45,7 +45,7 @@ module.exports = { }, create: function(context) { - let existingNames = { + const existingNames = { apply: "Function.prototype.apply", call: "Function.prototype.call", defineProperty: "Object.defineProperty", @@ -57,7 +57,7 @@ module.exports = { preventExtensions: "Object.preventExtensions" }; - let reflectSubsitutes = { + const reflectSubsitutes = { apply: "Reflect.apply", call: "Reflect.apply", defineProperty: "Reflect.defineProperty", @@ -69,7 +69,7 @@ module.exports = { preventExtensions: "Reflect.preventExtensions" }; - let exceptions = (context.options[0] || {}).exceptions || []; + const exceptions = (context.options[0] || {}).exceptions || []; /** * Reports the Reflect violation based on the `existing` and `substitute` @@ -87,19 +87,19 @@ module.exports = { return { CallExpression: function(node) { - let methodName = (node.callee.property || {}).name; - let isReflectCall = (node.callee.object || {}).name === "Reflect"; - let hasReflectSubsitute = reflectSubsitutes.hasOwnProperty(methodName); - let userConfiguredException = exceptions.indexOf(methodName) !== -1; + const methodName = (node.callee.property || {}).name; + const isReflectCall = (node.callee.object || {}).name === "Reflect"; + const hasReflectSubsitute = reflectSubsitutes.hasOwnProperty(methodName); + const userConfiguredException = exceptions.indexOf(methodName) !== -1; if (hasReflectSubsitute && !isReflectCall && !userConfiguredException) { report(node, existingNames[methodName], reflectSubsitutes[methodName]); } }, UnaryExpression: function(node) { - let isDeleteOperator = node.operator === "delete"; - let targetsIdentifier = node.argument.type === "Identifier"; - let userConfiguredException = exceptions.indexOf("delete") !== -1; + const isDeleteOperator = node.operator === "delete"; + const targetsIdentifier = node.argument.type === "Identifier"; + const userConfiguredException = exceptions.indexOf("delete") !== -1; if (isDeleteOperator && !targetsIdentifier && !userConfiguredException) { report(node, "the delete keyword", "Reflect.deleteProperty"); diff --git a/lib/rules/prefer-rest-params.js b/lib/rules/prefer-rest-params.js index 5a9164ed7f4..5cbe4b1e79f 100644 --- a/lib/rules/prefer-rest-params.js +++ b/lib/rules/prefer-rest-params.js @@ -15,10 +15,10 @@ * @returns {escope.Variable} The found variable object. */ function getVariableOfArguments(scope) { - let variables = scope.variables; + const variables = scope.variables; for (let i = 0; i < variables.length; ++i) { - let variable = variables[i]; + const variable = variables[i]; if (variable.name === "arguments") { @@ -68,7 +68,7 @@ module.exports = { * @returns {void} */ function checkForArguments() { - let argumentsVar = getVariableOfArguments(context.getScope()); + const argumentsVar = getVariableOfArguments(context.getScope()); if (argumentsVar) { argumentsVar.references.forEach(report); diff --git a/lib/rules/prefer-spread.js b/lib/rules/prefer-spread.js index 58fc85ca907..2ad0dad4dff 100644 --- a/lib/rules/prefer-spread.js +++ b/lib/rules/prefer-spread.js @@ -5,7 +5,7 @@ "use strict"; -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Helpers @@ -35,8 +35,8 @@ function isVariadicApplyCalling(node) { * @returns {boolean} the source code for the given node. */ function equalTokens(left, right, sourceCode) { - let tokensL = sourceCode.getTokens(left); - let tokensR = sourceCode.getTokens(right); + const tokensL = sourceCode.getTokens(left); + const tokensR = sourceCode.getTokens(right); if (tokensL.length !== tokensR.length) { return false; @@ -82,7 +82,7 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); return { CallExpression: function(node) { @@ -90,9 +90,9 @@ module.exports = { return; } - let applied = node.callee.object; - let expectedThis = (applied.type === "MemberExpression") ? applied.object : null; - let thisArg = node.arguments[0]; + const applied = node.callee.object; + const expectedThis = (applied.type === "MemberExpression") ? applied.object : null; + const thisArg = node.arguments[0]; if (isValidThisArg(expectedThis, thisArg, sourceCode)) { context.report(node, "use the spread operator instead of the '.apply()'."); diff --git a/lib/rules/prefer-template.js b/lib/rules/prefer-template.js index 4a0da8e197d..fa623b56eee 100644 --- a/lib/rules/prefer-template.js +++ b/lib/rules/prefer-template.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Helpers @@ -79,7 +79,7 @@ module.exports = { return; } - let topBinaryExpr = getTopConcatBinaryExpression(node.parent); + const topBinaryExpr = getTopConcatBinaryExpression(node.parent); // Checks whether or not this node had been checked already. if (done[topBinaryExpr.range[0]]) { diff --git a/lib/rules/quote-props.js b/lib/rules/quote-props.js index ec65647450c..26c527402d3 100644 --- a/lib/rules/quote-props.js +++ b/lib/rules/quote-props.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let espree = require("espree"), +const espree = require("espree"), keywords = require("../util/keywords"); //------------------------------------------------------------------------------ @@ -66,7 +66,7 @@ module.exports = { create: function(context) { - let MODE = context.options[0], + const MODE = context.options[0], KEYWORDS = context.options[1] && context.options[1].keywords, CHECK_UNNECESSARY = !context.options[1] || context.options[1].unnecessary !== false, NUMBERS = context.options[1] && context.options[1].numbers, @@ -106,9 +106,8 @@ module.exports = { * @returns {void} */ function checkUnnecessaryQuotes(node) { - let key = node.key, - isKeywordToken, - tokens; + const key = node.key; + let tokens; if (node.method || node.computed || node.shorthand) { return; @@ -125,7 +124,7 @@ module.exports = { return; } - isKeywordToken = isKeyword(tokens[0].value); + const isKeywordToken = isKeyword(tokens[0].value); if (isKeywordToken && KEYWORDS) { return; @@ -147,7 +146,7 @@ module.exports = { * @returns {void} */ function checkOmittedQuotes(node) { - let key = node.key; + const key = node.key; if (!node.method && !node.computed && !node.shorthand && !(key.type === "Literal" && typeof key.value === "string")) { context.report(node, MESSAGE_UNQUOTED, { @@ -168,8 +167,8 @@ module.exports = { necessaryQuotes = false; node.properties.forEach(function(property) { - let key = property.key, - tokens; + const key = property.key; + let tokens; if (!key || property.method || property.computed || property.shorthand) { return; diff --git a/lib/rules/quotes.js b/lib/rules/quotes.js index 18635da537f..a6fa7518ffc 100644 --- a/lib/rules/quotes.js +++ b/lib/rules/quotes.js @@ -9,13 +9,13 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Constants //------------------------------------------------------------------------------ -let QUOTE_SETTINGS = { +const QUOTE_SETTINGS = { double: { quote: "\"", alternateQuote: "'", @@ -45,8 +45,8 @@ let QUOTE_SETTINGS = { QUOTE_SETTINGS.double.convert = QUOTE_SETTINGS.single.convert = QUOTE_SETTINGS.backtick.convert = function(str) { - let newQuote = this.quote; - let oldQuote = str[0]; + const newQuote = this.quote; + const oldQuote = str[0]; if (newQuote === oldQuote) { return str; @@ -65,7 +65,7 @@ QUOTE_SETTINGS.backtick.convert = function(str) { }) + newQuote; }; -let AVOID_ESCAPE = "avoid-escape"; +const AVOID_ESCAPE = "avoid-escape"; //------------------------------------------------------------------------------ // Rule Definition @@ -109,12 +109,12 @@ module.exports = { create: function(context) { - let quoteOption = context.options[0], + const quoteOption = context.options[0], settings = QUOTE_SETTINGS[quoteOption || "double"], options = context.options[1], - avoidEscape = options && options.avoidEscape === true, allowTemplateLiterals = options && options.allowTemplateLiterals === true, sourceCode = context.getSourceCode(); + let avoidEscape = options && options.avoidEscape === true; // deprecated if (options === AVOID_ESCAPE) { @@ -154,7 +154,7 @@ module.exports = { * @private */ function isPartOfDirectivePrologue(node) { - let block = node.parent.parent; + const block = node.parent.parent; if (block.type !== "Program" && (block.type !== "BlockStatement" || !astUtils.isFunction(block.parent))) { return false; @@ -162,7 +162,7 @@ module.exports = { // Check the node is at a prologue. for (let i = 0; i < block.body.length; ++i) { - let statement = block.body[i]; + const statement = block.body[i]; if (statement === node.parent) { return true; @@ -182,7 +182,7 @@ module.exports = { * @private */ function isAllowedAsNonBacktick(node) { - let parent = node.parent; + const parent = node.parent; switch (parent.type) { @@ -209,9 +209,9 @@ module.exports = { return { Literal: function(node) { - let val = node.value, - rawVal = node.raw, - isValid; + const val = node.value, + rawVal = node.raw; + let isValid; if (settings && typeof val === "string") { isValid = (quoteOption === "backtick" && isAllowedAsNonBacktick(node)) || @@ -241,7 +241,7 @@ module.exports = { return; } - let shouldWarn = node.quasis.length === 1 && (node.quasis[0].value.cooked.indexOf("\n") === -1); + const shouldWarn = node.quasis.length === 1 && (node.quasis[0].value.cooked.indexOf("\n") === -1); if (shouldWarn) { context.report({ diff --git a/lib/rules/radix.js b/lib/rules/radix.js index 4c9cb73bebc..aab917ac212 100644 --- a/lib/rules/radix.js +++ b/lib/rules/radix.js @@ -9,13 +9,13 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let MODE_ALWAYS = "always", +const MODE_ALWAYS = "always", MODE_AS_NEEDED = "as-needed"; /** @@ -92,7 +92,7 @@ module.exports = { }, create: function(context) { - let mode = context.options[0] || MODE_ALWAYS; + const mode = context.options[0] || MODE_ALWAYS; /** * Checks the arguments of a given CallExpression node and reports it if it @@ -102,7 +102,7 @@ module.exports = { * @returns {void} */ function checkArguments(node) { - let args = node.arguments; + const args = node.arguments; switch (args.length) { case 0: @@ -139,14 +139,14 @@ module.exports = { return { "Program:exit": function() { - let scope = context.getScope(); + const scope = context.getScope(); let variable; // Check `parseInt()` variable = astUtils.getVariableByName(scope, "parseInt"); if (!isShadowed(variable)) { variable.references.forEach(function(reference) { - let node = reference.identifier; + const node = reference.identifier; if (astUtils.isCallee(node)) { checkArguments(node.parent); @@ -158,7 +158,7 @@ module.exports = { variable = astUtils.getVariableByName(scope, "Number"); if (!isShadowed(variable)) { variable.references.forEach(function(reference) { - let node = reference.identifier.parent; + const node = reference.identifier.parent; if (isParseIntMethod(node) && astUtils.isCallee(node)) { checkArguments(node.parent); diff --git a/lib/rules/require-jsdoc.js b/lib/rules/require-jsdoc.js index 1503c0ff886..b3fbcbc27a8 100644 --- a/lib/rules/require-jsdoc.js +++ b/lib/rules/require-jsdoc.js @@ -4,7 +4,7 @@ */ "use strict"; -let lodash = require("lodash"); +const lodash = require("lodash"); module.exports = { meta: { @@ -40,13 +40,13 @@ module.exports = { }, create: function(context) { - let source = context.getSourceCode(); - let DEFAULT_OPTIONS = { + const source = context.getSourceCode(); + const DEFAULT_OPTIONS = { FunctionDeclaration: true, MethodDefinition: false, ClassDeclaration: false }; - let options = lodash.assign(DEFAULT_OPTIONS, context.options[0] && context.options[0].require || {}); + const options = lodash.assign(DEFAULT_OPTIONS, context.options[0] && context.options[0].require || {}); /** * Report the error message @@ -64,7 +64,7 @@ module.exports = { */ function checkClassMethodJsDoc(node) { if (node.parent.type === "MethodDefinition") { - let jsdocComment = source.getJSDocComment(node); + const jsdocComment = source.getJSDocComment(node); if (!jsdocComment) { report(node); @@ -78,7 +78,7 @@ module.exports = { * @returns {void} */ function checkJsDoc(node) { - let jsdocComment = source.getJSDocComment(node); + const jsdocComment = source.getJSDocComment(node); if (!jsdocComment) { report(node); diff --git a/lib/rules/require-yield.js b/lib/rules/require-yield.js index a4bb292b7a9..e9d8281f696 100644 --- a/lib/rules/require-yield.js +++ b/lib/rules/require-yield.js @@ -21,7 +21,7 @@ module.exports = { }, create: function(context) { - let stack = []; + const stack = []; /** * If the node is a generator function, start counting `yield` keywords. @@ -45,7 +45,7 @@ module.exports = { return; } - let countYield = stack.pop(); + const countYield = stack.pop(); if (countYield === 0 && node.body.body.length > 0) { context.report( diff --git a/lib/rules/rest-spread-spacing.js b/lib/rules/rest-spread-spacing.js index 3be2a434210..c74c1284095 100644 --- a/lib/rules/rest-spread-spacing.js +++ b/lib/rules/rest-spread-spacing.js @@ -25,7 +25,7 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(), + const sourceCode = context.getSourceCode(), alwaysSpace = context.options[0] === "always"; //-------------------------------------------------------------------------- @@ -38,10 +38,10 @@ module.exports = { * @returns {void} */ function checkWhiteSpace(node) { - let operator = sourceCode.getFirstToken(node), + const operator = sourceCode.getFirstToken(node), nextToken = sourceCode.getTokenAfter(operator), - hasWhitespace = sourceCode.isSpaceBetweenTokens(operator, nextToken), - type; + hasWhitespace = sourceCode.isSpaceBetweenTokens(operator, nextToken); + let type; switch (node.type) { case "SpreadElement": diff --git a/lib/rules/semi-spacing.js b/lib/rules/semi-spacing.js index 261905f96fa..b7cffbf3355 100644 --- a/lib/rules/semi-spacing.js +++ b/lib/rules/semi-spacing.js @@ -5,7 +5,7 @@ "use strict"; -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -39,10 +39,10 @@ module.exports = { create: function(context) { - let config = context.options[0], - requireSpaceBefore = false, - requireSpaceAfter = true, + const config = context.options[0], sourceCode = context.getSourceCode(); + let requireSpaceBefore = false, + requireSpaceAfter = true; if (typeof config === "object") { if (config.hasOwnProperty("before")) { @@ -59,7 +59,7 @@ module.exports = { * @returns {boolean} True if the given token has leading space, false if not. */ function hasLeadingSpace(token) { - let tokenBefore = sourceCode.getTokenBefore(token); + const tokenBefore = sourceCode.getTokenBefore(token); return tokenBefore && astUtils.isTokenOnSameLine(tokenBefore, token) && sourceCode.isSpaceBetweenTokens(tokenBefore, token); } @@ -70,7 +70,7 @@ module.exports = { * @returns {boolean} True if the given token has trailing space, false if not. */ function hasTrailingSpace(token) { - let tokenAfter = sourceCode.getTokenAfter(token); + const tokenAfter = sourceCode.getTokenAfter(token); return tokenAfter && astUtils.isTokenOnSameLine(token, tokenAfter) && sourceCode.isSpaceBetweenTokens(token, tokenAfter); } @@ -81,7 +81,7 @@ module.exports = { * @returns {boolean} Whether or not the token is the last in its line. */ function isLastTokenInCurrentLine(token) { - let tokenAfter = sourceCode.getTokenAfter(token); + const tokenAfter = sourceCode.getTokenAfter(token); return !(tokenAfter && astUtils.isTokenOnSameLine(token, tokenAfter)); } @@ -92,7 +92,7 @@ module.exports = { * @returns {boolean} Whether or not the token is the first in its line. */ function isFirstTokenInCurrentLine(token) { - let tokenBefore = sourceCode.getTokenBefore(token); + const tokenBefore = sourceCode.getTokenBefore(token); return !(tokenBefore && astUtils.isTokenOnSameLine(token, tokenBefore)); } @@ -103,7 +103,7 @@ module.exports = { * @returns {boolean} Whether or not the next token of a given token is a closing parenthesis. */ function isBeforeClosingParen(token) { - let nextToken = sourceCode.getTokenAfter(token); + const nextToken = sourceCode.getTokenAfter(token); return ( nextToken && @@ -128,10 +128,8 @@ module.exports = { * @returns {void} */ function checkSemicolonSpacing(token, node) { - let location; - if (isSemicolon(token)) { - location = token.loc.start; + const location = token.loc.start; if (hasLeadingSpace(token)) { if (!requireSpaceBefore) { @@ -140,7 +138,7 @@ module.exports = { loc: location, message: "Unexpected whitespace before semicolon.", fix: function(fixer) { - let tokenBefore = sourceCode.getTokenBefore(token); + const tokenBefore = sourceCode.getTokenBefore(token); return fixer.removeRange([tokenBefore.range[1], token.range[0]]); } @@ -167,7 +165,7 @@ module.exports = { loc: location, message: "Unexpected whitespace after semicolon.", fix: function(fixer) { - let tokenAfter = sourceCode.getTokenAfter(token); + const tokenAfter = sourceCode.getTokenAfter(token); return fixer.removeRange([token.range[1], tokenAfter.range[0]]); } @@ -195,7 +193,7 @@ module.exports = { * @returns {void} */ function checkNode(node) { - let token = sourceCode.getLastToken(node); + const token = sourceCode.getLastToken(node); checkSemicolonSpacing(token, node); } diff --git a/lib/rules/semi.js b/lib/rules/semi.js index 80b1e9d0025..d495360a729 100644 --- a/lib/rules/semi.js +++ b/lib/rules/semi.js @@ -53,9 +53,9 @@ module.exports = { create: function(context) { - let OPT_OUT_PATTERN = /[\[\(\/\+\-]/; // One of [(/+- - let options = context.options[1]; - let never = context.options[0] === "never", + const OPT_OUT_PATTERN = /[\[\(\/\+\-]/; // One of [(/+- + const options = context.options[1]; + const never = context.options[0] === "never", exceptOneLine = options && options.omitLastInOneLineBlock === true, sourceCode = context.getSourceCode(); @@ -70,9 +70,9 @@ module.exports = { * @returns {void} */ function report(node, missing) { + const lastToken = sourceCode.getLastToken(node); let message, fix, - lastToken = sourceCode.getLastToken(node), loc = lastToken.loc; if (!missing) { @@ -115,22 +115,20 @@ module.exports = { * @returns {boolean} whether the semicolon is unnecessary. */ function isUnnecessarySemicolon(lastToken) { - let isDivider, isOptOutToken, lastTokenLine, nextToken, nextTokenLine; - if (!isSemicolon(lastToken)) { return false; } - nextToken = sourceCode.getTokenAfter(lastToken); + const nextToken = sourceCode.getTokenAfter(lastToken); if (!nextToken) { return true; } - lastTokenLine = lastToken.loc.end.line; - nextTokenLine = nextToken.loc.start.line; - isOptOutToken = OPT_OUT_PATTERN.test(nextToken.value); - isDivider = (nextToken.value === "}" || nextToken.value === ";"); + const lastTokenLine = lastToken.loc.end.line; + const nextTokenLine = nextToken.loc.start.line; + const isOptOutToken = OPT_OUT_PATTERN.test(nextToken.value); + const isDivider = (nextToken.value === "}" || nextToken.value === ";"); return (lastTokenLine !== nextTokenLine && !isOptOutToken) || isDivider; } @@ -141,13 +139,13 @@ module.exports = { * @returns {boolean} whether the node is in a one-liner block statement. */ function isOneLinerBlock(node) { - let nextToken = sourceCode.getTokenAfter(node); + const nextToken = sourceCode.getTokenAfter(node); if (!nextToken || nextToken.value !== "}") { return false; } - let parent = node.parent; + const parent = node.parent; return parent && parent.type === "BlockStatement" && parent.loc.start.line === parent.loc.end.line; @@ -159,7 +157,7 @@ module.exports = { * @returns {void} */ function checkForSemicolon(node) { - let lastToken = sourceCode.getLastToken(node); + const lastToken = sourceCode.getLastToken(node); if (never) { if (isUnnecessarySemicolon(lastToken)) { @@ -184,7 +182,7 @@ module.exports = { * @returns {void} */ function checkForSemicolonForVariableDeclaration(node) { - let ancestors = context.getAncestors(), + const ancestors = context.getAncestors(), parentIndex = ancestors.length - 1, parent = ancestors[parentIndex]; diff --git a/lib/rules/sort-imports.js b/lib/rules/sort-imports.js index c8d3340b0cd..9a546fbfe44 100644 --- a/lib/rules/sort-imports.js +++ b/lib/rules/sort-imports.js @@ -44,11 +44,11 @@ module.exports = { create: function(context) { - let configuration = context.options[0] || {}, + const configuration = context.options[0] || {}, ignoreCase = configuration.ignoreCase || false, ignoreMemberSort = configuration.ignoreMemberSort || false, - memberSyntaxSortOrder = configuration.memberSyntaxSortOrder || ["none", "all", "multiple", "single"], - previousDeclaration = null; + memberSyntaxSortOrder = configuration.memberSyntaxSortOrder || ["none", "all", "multiple", "single"]; + let previousDeclaration = null; /** * Gets the used member syntax style. @@ -98,10 +98,10 @@ module.exports = { return { ImportDeclaration: function(node) { if (previousDeclaration) { - let currentLocalMemberName = getFirstLocalMemberName(node), - currentMemberSyntaxGroupIndex = getMemberParameterGroupIndex(node), - previousLocalMemberName = getFirstLocalMemberName(previousDeclaration), + const currentMemberSyntaxGroupIndex = getMemberParameterGroupIndex(node), previousMemberSyntaxGroupIndex = getMemberParameterGroupIndex(previousDeclaration); + let currentLocalMemberName = getFirstLocalMemberName(node), + previousLocalMemberName = getFirstLocalMemberName(previousDeclaration); if (ignoreCase) { previousLocalMemberName = previousLocalMemberName && previousLocalMemberName.toLowerCase(); @@ -141,7 +141,7 @@ module.exports = { let previousSpecifierName = null; for (let i = 0; i < node.specifiers.length; ++i) { - let currentSpecifier = node.specifiers[i]; + const currentSpecifier = node.specifiers[i]; if (currentSpecifier.type !== "ImportSpecifier") { continue; diff --git a/lib/rules/sort-vars.js b/lib/rules/sort-vars.js index 4b8187f36a9..02711b53ed7 100644 --- a/lib/rules/sort-vars.js +++ b/lib/rules/sort-vars.js @@ -32,7 +32,7 @@ module.exports = { create: function(context) { - let configuration = context.options[0] || {}, + const configuration = context.options[0] || {}, ignoreCase = configuration.ignoreCase || false; return { diff --git a/lib/rules/space-before-blocks.js b/lib/rules/space-before-blocks.js index b695e7ac12e..b3dac2ff74b 100644 --- a/lib/rules/space-before-blocks.js +++ b/lib/rules/space-before-blocks.js @@ -5,7 +5,7 @@ "use strict"; -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -48,9 +48,9 @@ module.exports = { }, create: function(context) { - let config = context.options[0], - sourceCode = context.getSourceCode(), - checkFunctions = true, + const config = context.options[0], + sourceCode = context.getSourceCode(); + let checkFunctions = true, checkKeywords = true, checkClasses = true; @@ -81,14 +81,13 @@ module.exports = { * @returns {void} undefined. */ function checkPrecedingSpace(node) { - let precedingToken = sourceCode.getTokenBefore(node), - hasSpace, - parent, - requireSpace; + const precedingToken = sourceCode.getTokenBefore(node); + let requireSpace; if (precedingToken && !isConflicted(precedingToken) && astUtils.isTokenOnSameLine(precedingToken, node)) { - hasSpace = sourceCode.isSpaceBetweenTokens(precedingToken, node); - parent = context.getAncestors().pop(); + const hasSpace = sourceCode.isSpaceBetweenTokens(precedingToken, node); + const parent = context.getAncestors().pop(); + if (parent.type === "FunctionExpression" || parent.type === "FunctionDeclaration") { requireSpace = checkFunctions; } else if (node.type === "ClassBody") { @@ -127,13 +126,11 @@ module.exports = { * @returns {void} undefined. */ function checkSpaceBeforeCaseBlock(node) { - let cases = node.cases, - firstCase, - openingBrace; + const cases = node.cases; + let openingBrace; if (cases.length > 0) { - firstCase = cases[0]; - openingBrace = sourceCode.getTokenBefore(firstCase); + openingBrace = sourceCode.getTokenBefore(cases[0]); } else { openingBrace = sourceCode.getLastToken(node, 1); } diff --git a/lib/rules/space-before-function-paren.js b/lib/rules/space-before-function-paren.js index b43d11ed13f..7d7183adb89 100644 --- a/lib/rules/space-before-function-paren.js +++ b/lib/rules/space-before-function-paren.js @@ -43,9 +43,9 @@ module.exports = { create: function(context) { - let configuration = context.options[0], - sourceCode = context.getSourceCode(), - requireAnonymousFunctionSpacing = true, + const configuration = context.options[0], + sourceCode = context.getSourceCode(); + let requireAnonymousFunctionSpacing = true, forbidAnonymousFunctionSpacing = false, requireNamedFunctionSpacing = true, forbidNamedFunctionSpacing = false; @@ -70,13 +70,12 @@ module.exports = { * @returns {boolean} Whether the function has a name. */ function isNamedFunction(node) { - let parent; - if (node.id) { return true; } - parent = node.parent; + const parent = node.parent; + return parent.type === "MethodDefinition" || (parent.type === "Property" && ( @@ -93,10 +92,8 @@ module.exports = { * @returns {void} */ function validateSpacingBeforeParentheses(node) { - let isNamed = isNamedFunction(node), - leftToken, - rightToken, - location; + const isNamed = isNamedFunction(node); + let rightToken; if (node.generator && !isNamed) { return; @@ -106,8 +103,8 @@ module.exports = { while (rightToken.value !== "(") { rightToken = sourceCode.getTokenAfter(rightToken); } - leftToken = sourceCode.getTokenBefore(rightToken); - location = leftToken.loc.end; + const leftToken = sourceCode.getTokenBefore(rightToken); + const location = leftToken.loc.end; if (sourceCode.isSpaceBetweenTokens(leftToken, rightToken)) { if ((isNamed && forbidNamedFunctionSpacing) || (!isNamed && forbidAnonymousFunctionSpacing)) { diff --git a/lib/rules/space-in-parens.js b/lib/rules/space-in-parens.js index bd8c6eb3af8..7c913d673d8 100644 --- a/lib/rules/space-in-parens.js +++ b/lib/rules/space-in-parens.js @@ -4,7 +4,7 @@ */ "use strict"; -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Rule Definition @@ -42,13 +42,13 @@ module.exports = { create: function(context) { - let MISSING_SPACE_MESSAGE = "There must be a space inside this paren.", + const MISSING_SPACE_MESSAGE = "There must be a space inside this paren.", REJECTED_SPACE_MESSAGE = "There should be no spaces inside this paren.", ALWAYS = context.options[0] === "always", exceptionsArrayOptions = (context.options.length === 2) ? context.options[1].exceptions : [], - options = {}, - exceptions; + options = {}; + let exceptions; if (exceptionsArrayOptions.length) { options.braceException = exceptionsArrayOptions.indexOf("{}") !== -1; @@ -64,7 +64,7 @@ module.exports = { * @private */ function getExceptions() { - let openers = [], + const openers = [], closers = []; if (options.braceException) { @@ -96,7 +96,7 @@ module.exports = { //-------------------------------------------------------------------------- // Helpers //-------------------------------------------------------------------------- - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Determines if a token is one of the exceptions for the opener paren @@ -217,14 +217,12 @@ module.exports = { return { Program: function checkParenSpaces(node) { - let tokens, prevToken, nextToken; - exceptions = getExceptions(); - tokens = sourceCode.tokensAndComments; + const tokens = sourceCode.tokensAndComments; tokens.forEach(function(token, i) { - prevToken = tokens[i - 1]; - nextToken = tokens[i + 1]; + const prevToken = tokens[i - 1]; + const nextToken = tokens[i + 1]; if (token.type !== "Punctuator") { return; diff --git a/lib/rules/space-infix-ops.js b/lib/rules/space-infix-ops.js index 9f5b08773a4..88c12b439d7 100644 --- a/lib/rules/space-infix-ops.js +++ b/lib/rules/space-infix-ops.js @@ -32,16 +32,16 @@ module.exports = { }, create: function(context) { - let int32Hint = context.options[0] ? context.options[0].int32Hint === true : false; + const int32Hint = context.options[0] ? context.options[0].int32Hint === true : false; - let OPERATORS = [ + const OPERATORS = [ "*", "/", "%", "+", "-", "<<", ">>", ">>>", "<", "<=", ">", ">=", "in", "instanceof", "==", "!=", "===", "!==", "&", "^", "|", "&&", "||", "=", "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", ">>>=", "&=", "^=", "|=", "?", ":", ",", "**" ]; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Returns the first token which violates the rule @@ -51,11 +51,11 @@ module.exports = { * @private */ function getFirstNonSpacedToken(left, right) { - let op, - tokens = sourceCode.getTokensBetween(left, right, 1); + const tokens = sourceCode.getTokensBetween(left, right, 1); for (let i = 1, l = tokens.length - 1; i < l; ++i) { - op = tokens[i]; + const op = tokens[i]; + if ( op.type === "Punctuator" && OPERATORS.indexOf(op.value) >= 0 && @@ -80,8 +80,8 @@ module.exports = { loc: culpritToken.loc.start, message: "Infix operators must be spaced.", fix: function(fixer) { - let previousToken = sourceCode.getTokenBefore(culpritToken); - let afterToken = sourceCode.getTokenAfter(culpritToken); + const previousToken = sourceCode.getTokenBefore(culpritToken); + const afterToken = sourceCode.getTokenAfter(culpritToken); let fixString = ""; if (culpritToken.range[0] - previousToken.range[1] === 0) { @@ -110,7 +110,7 @@ module.exports = { return; } - let nonSpacedNode = getFirstNonSpacedToken(node.left, node.right); + const nonSpacedNode = getFirstNonSpacedToken(node.left, node.right); if (nonSpacedNode) { if (!(int32Hint && sourceCode.getText(node).substr(-2) === "|0")) { @@ -126,8 +126,8 @@ module.exports = { * @private */ function checkConditional(node) { - let nonSpacedConsequesntNode = getFirstNonSpacedToken(node.test, node.consequent); - let nonSpacedAlternateNode = getFirstNonSpacedToken(node.consequent, node.alternate); + const nonSpacedConsequesntNode = getFirstNonSpacedToken(node.test, node.consequent); + const nonSpacedAlternateNode = getFirstNonSpacedToken(node.consequent, node.alternate); if (nonSpacedConsequesntNode) { report(node, nonSpacedConsequesntNode); @@ -143,10 +143,9 @@ module.exports = { * @private */ function checkVar(node) { - let nonSpacedNode; - if (node.init) { - nonSpacedNode = getFirstNonSpacedToken(node.id, node.init); + const nonSpacedNode = getFirstNonSpacedToken(node.id, node.init); + if (nonSpacedNode) { report(node, nonSpacedNode); } diff --git a/lib/rules/space-unary-ops.js b/lib/rules/space-unary-ops.js index 77a98150b86..c5d66e65af9 100644 --- a/lib/rules/space-unary-ops.js +++ b/lib/rules/space-unary-ops.js @@ -41,9 +41,9 @@ module.exports = { }, create: function(context) { - let options = context.options && Array.isArray(context.options) && context.options[0] || { words: true, nonwords: false }; + const options = context.options && Array.isArray(context.options) && context.options[0] || { words: true, nonwords: false }; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); //-------------------------------------------------------------------------- // Helpers @@ -160,7 +160,7 @@ module.exports = { * @returns {void} */ function checkForSpacesAfterYield(node) { - let tokens = sourceCode.getFirstTokens(node, 3), + const tokens = sourceCode.getFirstTokens(node, 3), word = "yield"; if (!node.argument || node.delegate) { @@ -241,7 +241,7 @@ module.exports = { * @returns {void} */ function checkForSpaces(node) { - let tokens = sourceCode.getFirstTokens(node, 2), + const tokens = sourceCode.getFirstTokens(node, 2), firstToken = tokens[0], secondToken = tokens[1]; @@ -250,7 +250,7 @@ module.exports = { return; } - let operator = node.prefix ? tokens[0].value : tokens[1].value; + const operator = node.prefix ? tokens[0].value : tokens[1].value; if (overrideExistsForOperator(node, operator)) { if (overrideEnforcesSpaces(node, operator)) { diff --git a/lib/rules/spaced-comment.js b/lib/rules/spaced-comment.js index 7141ba1f423..666604df15e 100644 --- a/lib/rules/spaced-comment.js +++ b/lib/rules/spaced-comment.js @@ -4,7 +4,7 @@ */ "use strict"; -let lodash = require("lodash"); +const lodash = require("lodash"); //------------------------------------------------------------------------------ // Helpers @@ -16,7 +16,7 @@ let lodash = require("lodash"); * @returns {string} An escaped string. */ function escape(s) { - let isOneChar = s.length === 1; + const isOneChar = s.length === 1; s = lodash.escapeRegExp(s); return isOneChar ? s : "(?:" + s + ")"; @@ -144,7 +144,7 @@ function createAlwaysStylePattern(markers, exceptions) { * @returns {RegExp} A RegExp object for `never` mode. */ function createNeverStylePattern(markers) { - let pattern = "^(" + markers.map(escape).join("|") + ")?[ \t]+"; + const pattern = "^(" + markers.map(escape).join("|") + ")?[ \t]+"; return new RegExp(pattern); } @@ -230,20 +230,20 @@ module.exports = { create: function(context) { // Unless the first option is never, require a space - let requireSpace = context.options[0] !== "never"; + const requireSpace = context.options[0] !== "never"; /* * Parse the second options. * If markers don't include `"*"`, it's added automatically for JSDoc * comments. */ - let config = context.options[1] || {}; - let balanced = config.block && config.block.balanced; + const config = context.options[1] || {}; + const balanced = config.block && config.block.balanced; - let styleRules = ["block", "line"].reduce(function(rule, type) { - let markers = parseMarkersOption(config[type] && config[type].markers || config.markers); - let exceptions = config[type] && config[type].exceptions || config.exceptions || []; - let endNeverPattern = "[ \t]+$"; + const styleRules = ["block", "line"].reduce(function(rule, type) { + const markers = parseMarkersOption(config[type] && config[type].markers || config.markers); + const exceptions = config[type] && config[type].exceptions || config.exceptions || []; + const endNeverPattern = "[ \t]+$"; // Create RegExp object for valid patterns. rule[type] = { @@ -264,14 +264,14 @@ module.exports = { * @returns {void} */ function reportBegin(node, message, match) { - let type = node.type.toLowerCase(), + const type = node.type.toLowerCase(), commentIdentifier = type === "block" ? "/*" : "//"; context.report({ node: node, fix: function(fixer) { - let start = node.range[0], - end = start + 2; + const start = node.range[0]; + let end = start + 2; if (requireSpace) { if (match) { @@ -301,7 +301,7 @@ module.exports = { if (requireSpace) { return fixer.insertTextAfterRange([node.start, node.end - 2], " "); } else { - let end = node.end - 2, + const end = node.end - 2, start = end - match[0].length; return fixer.replaceTextRange([start, end], ""); @@ -317,7 +317,7 @@ module.exports = { * @returns {void} */ function checkCommentForSpace(node) { - let type = node.type.toLowerCase(), + const type = node.type.toLowerCase(), rule = styleRules[type], commentIdentifier = type === "block" ? "/*" : "//"; @@ -326,14 +326,14 @@ module.exports = { return; } - let beginMatch = rule.beginRegex.exec(node.value); - let endMatch = rule.endRegex.exec(node.value); + const beginMatch = rule.beginRegex.exec(node.value); + const endMatch = rule.endRegex.exec(node.value); // Checks. if (requireSpace) { if (!beginMatch) { - let hasMarker = rule.markers.exec(node.value); - let marker = hasMarker ? commentIdentifier + hasMarker[0] : commentIdentifier; + const hasMarker = rule.markers.exec(node.value); + const marker = hasMarker ? commentIdentifier + hasMarker[0] : commentIdentifier; if (rule.hasExceptions) { reportBegin(node, "Expected exception block, space or tab after '" + marker + "' in comment.", hasMarker); diff --git a/lib/rules/strict.js b/lib/rules/strict.js index 5f54b15e799..6d79b7f38f3 100644 --- a/lib/rules/strict.js +++ b/lib/rules/strict.js @@ -9,13 +9,13 @@ // Requirements //------------------------------------------------------------------------------ -let lodash = require("lodash"); +const lodash = require("lodash"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let messages = { +const messages = { function: "Use the function form of 'use strict'.", global: "Use the global form of 'use strict'.", multiple: "Multiple 'use strict' directives.", @@ -35,11 +35,10 @@ let messages = { * @returns {ASTNode[]} All of the Use Strict Directives. */ function getUseStrictDirectives(statements) { - let directives = [], - i, statement; + const directives = []; - for (i = 0; i < statements.length; i++) { - statement = statements[i]; + for (let i = 0; i < statements.length; i++) { + const statement = statements[i]; if ( statement.type === "ExpressionStatement" && @@ -96,11 +95,10 @@ module.exports = { create: function(context) { - let mode = context.options[0] || "safe", - ecmaFeatures = context.parserOptions.ecmaFeatures || {}, + const ecmaFeatures = context.parserOptions.ecmaFeatures || {}, scopes = [], - classScopes = [], - rule; + classScopes = []; + let mode = context.options[0] || "safe"; if (ecmaFeatures.impliedStrict) { mode = "implied"; @@ -152,7 +150,7 @@ module.exports = { * @returns {void} */ function enterFunctionInFunctionMode(node, useStrictDirectives) { - let isInClass = classScopes.length > 0, + const isInClass = classScopes.length > 0, isParentGlobal = scopes.length === 0 && classScopes.length === 0, isParentStrict = scopes.length > 0 && scopes[scopes.length - 1], isStrict = useStrictDirectives.length > 0; @@ -194,7 +192,7 @@ module.exports = { * @returns {void} */ function enterFunction(node) { - let isBlock = node.body.type === "BlockStatement", + const isBlock = node.body.type === "BlockStatement", useStrictDirectives = isBlock ? getUseStrictDirectives(node.body.body) : []; @@ -210,9 +208,9 @@ module.exports = { } } - rule = { + const rule = { Program: function(node) { - let useStrictDirectives = getUseStrictDirectives(node.body); + const useStrictDirectives = getUseStrictDirectives(node.body); if (node.sourceType === "module") { mode = "module"; diff --git a/lib/rules/template-curly-spacing.js b/lib/rules/template-curly-spacing.js index 36c33e53309..fb918ea4dbd 100644 --- a/lib/rules/template-curly-spacing.js +++ b/lib/rules/template-curly-spacing.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let astUtils = require("../ast-utils"); +const astUtils = require("../ast-utils"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let OPEN_PAREN = /\$\{$/; -let CLOSE_PAREN = /^\}/; +const OPEN_PAREN = /\$\{$/; +const CLOSE_PAREN = /^\}/; //------------------------------------------------------------------------------ // Rule Definition @@ -38,9 +38,9 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); - let always = context.options[0] === "always"; - let prefix = always ? "Expected" : "Unexpected"; + const sourceCode = context.getSourceCode(); + const always = context.options[0] === "always"; + const prefix = always ? "Expected" : "Unexpected"; /** * Checks spacing before `}` of a given token. @@ -48,7 +48,7 @@ module.exports = { * @returns {void} */ function checkSpacingBefore(token) { - let prevToken = sourceCode.getTokenBefore(token); + const prevToken = sourceCode.getTokenBefore(token); if (prevToken && CLOSE_PAREN.test(token.value) && @@ -77,7 +77,7 @@ module.exports = { * @returns {void} */ function checkSpacingAfter(token) { - let nextToken = sourceCode.getTokenAfter(token); + const nextToken = sourceCode.getTokenAfter(token); if (nextToken && OPEN_PAREN.test(token.value) && @@ -105,7 +105,7 @@ module.exports = { return { TemplateElement: function(node) { - let token = sourceCode.getFirstToken(node); + const token = sourceCode.getFirstToken(node); checkSpacingBefore(token); checkSpacingAfter(token); diff --git a/lib/rules/unicode-bom.js b/lib/rules/unicode-bom.js index 931d840b55c..d7f38a2dcbc 100644 --- a/lib/rules/unicode-bom.js +++ b/lib/rules/unicode-bom.js @@ -35,7 +35,7 @@ module.exports = { Program: function checkUnicodeBOM(node) { - let sourceCode = context.getSourceCode(), + const sourceCode = context.getSourceCode(), location = {column: 0, line: 1}, requireBOM = context.options[0] || "never"; diff --git a/lib/rules/valid-jsdoc.js b/lib/rules/valid-jsdoc.js index 8af117e30eb..d9575fa7ef8 100644 --- a/lib/rules/valid-jsdoc.js +++ b/lib/rules/valid-jsdoc.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let doctrine = require("doctrine"); +const doctrine = require("doctrine"); //------------------------------------------------------------------------------ // Rule Definition @@ -61,7 +61,7 @@ module.exports = { create: function(context) { - let options = context.options[0] || {}, + const options = context.options[0] || {}, prefer = options.prefer || {}, sourceCode = context.getSourceCode(), @@ -78,7 +78,7 @@ module.exports = { //-------------------------------------------------------------------------- // Using a stack to store if a function returns or not (handling nested functions) - let fns = []; + const fns = []; /** * Check if node type is a Class @@ -110,7 +110,7 @@ module.exports = { * @private */ function addReturn(node) { - let functionState = fns[fns.length - 1]; + const functionState = fns[fns.length - 1]; if (functionState && node.argument !== null) { functionState.returnPresent = true; @@ -149,7 +149,6 @@ module.exports = { */ function getCurrentExpectedTypes(type) { let currentType; - let expectedType; if (type.name) { currentType = type.name; @@ -157,7 +156,7 @@ module.exports = { currentType = type.expression.name; } - expectedType = currentType && preferType[currentType]; + const expectedType = currentType && preferType[currentType]; return { currentType: currentType, @@ -177,7 +176,7 @@ module.exports = { return; } - let typesToCheck = []; + const typesToCheck = []; let elements = []; switch (type.type) { @@ -223,14 +222,14 @@ module.exports = { * @private */ function checkJSDoc(node) { - let jsdocNode = sourceCode.getJSDocComment(node), + const jsdocNode = sourceCode.getJSDocComment(node), functionData = fns.pop(), - hasReturns = false, + params = Object.create(null); + let hasReturns = false, hasConstructor = false, isInterface = false, isOverride = false, isAbstract = false, - params = Object.create(null), jsdoc; // make sure only to validate JSDoc comments @@ -336,7 +335,7 @@ module.exports = { } // check the parameters - let jsdocParams = Object.keys(params); + const jsdocParams = Object.keys(params); if (node.params) { node.params.forEach(function(param, i) { @@ -344,7 +343,7 @@ module.exports = { param = param.left; } - let name = param.name; + const name = param.name; // TODO(nzakas): Figure out logical things to do with destructured, default, rest params if (param.type === "Identifier") { @@ -363,7 +362,7 @@ module.exports = { } if (options.matchDescription) { - let regex = new RegExp(options.matchDescription); + const regex = new RegExp(options.matchDescription); if (!regex.test(jsdoc.description)) { context.report(jsdocNode, "JSDoc description does not satisfy the regex pattern."); diff --git a/lib/rules/valid-typeof.js b/lib/rules/valid-typeof.js index dc378d9401d..532088b9701 100644 --- a/lib/rules/valid-typeof.js +++ b/lib/rules/valid-typeof.js @@ -21,7 +21,7 @@ module.exports = { create: function(context) { - let VALID_TYPES = ["symbol", "undefined", "object", "boolean", "number", "string", "function"], + const VALID_TYPES = ["symbol", "undefined", "object", "boolean", "number", "string", "function"], OPERATORS = ["==", "===", "!=", "!=="]; //-------------------------------------------------------------------------- @@ -31,13 +31,11 @@ module.exports = { return { UnaryExpression: function(node) { - let parent, sibling; - if (node.operator === "typeof") { - parent = context.getAncestors().pop(); + const parent = context.getAncestors().pop(); if (parent.type === "BinaryExpression" && OPERATORS.indexOf(parent.operator) !== -1) { - sibling = parent.left === node ? parent.right : parent.left; + const sibling = parent.left === node ? parent.right : parent.left; if (sibling.type === "Literal" && VALID_TYPES.indexOf(sibling.value) === -1) { context.report(sibling, "Invalid typeof comparison value."); diff --git a/lib/rules/vars-on-top.js b/lib/rules/vars-on-top.js index e94e4875593..43703f144f6 100644 --- a/lib/rules/vars-on-top.js +++ b/lib/rules/vars-on-top.js @@ -21,7 +21,7 @@ module.exports = { }, create: function(context) { - let errorMessage = "All 'var' declarations must be at the top of the function scope."; + const errorMessage = "All 'var' declarations must be at the top of the function scope."; //-------------------------------------------------------------------------- // Helpers @@ -70,8 +70,8 @@ module.exports = { * @returns {boolean} True if var is on top otherwise false */ function isVarOnTop(node, statements) { - let i = 0, - l = statements.length; + const l = statements.length; + let i = 0; // skip over directives for (; i < l; ++i) { @@ -125,7 +125,7 @@ module.exports = { return { VariableDeclaration: function(node) { - let ancestors = context.getAncestors(); + const ancestors = context.getAncestors(); let parent = ancestors.pop(); let grandParent = ancestors.pop(); diff --git a/lib/rules/wrap-iife.js b/lib/rules/wrap-iife.js index 78554091c99..66275a2e718 100644 --- a/lib/rules/wrap-iife.js +++ b/lib/rules/wrap-iife.js @@ -26,9 +26,9 @@ module.exports = { create: function(context) { - let style = context.options[0] || "outside"; + const style = context.options[0] || "outside"; - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Check if the node is wrapped in () @@ -37,7 +37,7 @@ module.exports = { * @private */ function wrapped(node) { - let previousToken = sourceCode.getTokenBefore(node), + const previousToken = sourceCode.getTokenBefore(node), nextToken = sourceCode.getTokenAfter(node); return previousToken && previousToken.value === "(" && @@ -48,7 +48,7 @@ module.exports = { CallExpression: function(node) { if (node.callee.type === "FunctionExpression") { - let callExpressionWrapped = wrapped(node), + const callExpressionWrapped = wrapped(node), functionExpressionWrapped = wrapped(node.callee); if (!callExpressionWrapped && !functionExpressionWrapped) { diff --git a/lib/rules/wrap-regex.js b/lib/rules/wrap-regex.js index 44750a3fbd1..a309d9ae1d0 100644 --- a/lib/rules/wrap-regex.js +++ b/lib/rules/wrap-regex.js @@ -21,21 +21,18 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); return { Literal: function(node) { - let token = sourceCode.getFirstToken(node), - nodeType = token.type, - source, - grandparent, - ancestors; + const token = sourceCode.getFirstToken(node), + nodeType = token.type; if (nodeType === "RegularExpression") { - source = sourceCode.getTokenBefore(node); - ancestors = context.getAncestors(); - grandparent = ancestors[ancestors.length - 1]; + const source = sourceCode.getTokenBefore(node); + const ancestors = context.getAncestors(); + const grandparent = ancestors[ancestors.length - 1]; if (grandparent.type === "MemberExpression" && grandparent.object === node && (!source || source.value !== "(")) { diff --git a/lib/rules/yield-star-spacing.js b/lib/rules/yield-star-spacing.js index c9ca64e0c25..6566fc7d4d5 100644 --- a/lib/rules/yield-star-spacing.js +++ b/lib/rules/yield-star-spacing.js @@ -39,9 +39,9 @@ module.exports = { }, create: function(context) { - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); - let mode = (function(option) { + const mode = (function(option) { if (!option || typeof option === "string") { return { before: { before: true, after: false }, @@ -64,11 +64,11 @@ module.exports = { */ function checkSpacing(side, leftToken, rightToken) { if (sourceCode.isSpaceBetweenTokens(leftToken, rightToken) !== mode[side]) { - let after = leftToken.value === "*"; - let spaceRequired = mode[side]; - let node = after ? leftToken : rightToken; - let type = spaceRequired ? "Missing" : "Unexpected"; - let message = type + " space " + side + " *."; + const after = leftToken.value === "*"; + const spaceRequired = mode[side]; + const node = after ? leftToken : rightToken; + const type = spaceRequired ? "Missing" : "Unexpected"; + const message = type + " space " + side + " *."; context.report({ node: node, @@ -96,10 +96,10 @@ module.exports = { return; } - let tokens = sourceCode.getFirstTokens(node, 3); - let yieldToken = tokens[0]; - let starToken = tokens[1]; - let nextToken = tokens[2]; + const tokens = sourceCode.getFirstTokens(node, 3); + const yieldToken = tokens[0]; + const starToken = tokens[1]; + const nextToken = tokens[2]; checkSpacing("before", yieldToken, starToken); checkSpacing("after", starToken, nextToken); diff --git a/lib/rules/yoda.js b/lib/rules/yoda.js index 29f0602b98d..cb8cee5e646 100644 --- a/lib/rules/yoda.js +++ b/lib/rules/yoda.js @@ -147,11 +147,11 @@ module.exports = { create: function(context) { // Default to "never" (!always) if no option - let always = (context.options[0] === "always"); - let exceptRange = (context.options[1] && context.options[1].exceptRange); - let onlyEquality = (context.options[1] && context.options[1].onlyEquality); + const always = (context.options[0] === "always"); + const exceptRange = (context.options[1] && context.options[1].exceptRange); + const onlyEquality = (context.options[1] && context.options[1].onlyEquality); - let sourceCode = context.getSourceCode(); + const sourceCode = context.getSourceCode(); /** * Determines whether node represents a range test. @@ -164,7 +164,7 @@ module.exports = { * @returns {boolean} Whether node is a range test. */ function isRangeTest(node) { - let left = node.left, + const left = node.left, right = node.right; /** diff --git a/lib/testers/event-generator-tester.js b/lib/testers/event-generator-tester.js index f77152c0bba..e4179bfb86a 100644 --- a/lib/testers/event-generator-tester.js +++ b/lib/testers/event-generator-tester.js @@ -10,7 +10,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("assert"); +const assert = require("assert"); //------------------------------------------------------------------------------ // Public Interface diff --git a/lib/testers/rule-tester.js b/lib/testers/rule-tester.js index 703129ca057..ebf4beff79f 100644 --- a/lib/testers/rule-tester.js +++ b/lib/testers/rule-tester.js @@ -40,7 +40,7 @@ // Requirements //------------------------------------------------------------------------------ -let lodash = require("lodash"), +const lodash = require("lodash"), assert = require("assert"), util = require("util"), validator = require("../config/config-validator"), @@ -58,14 +58,14 @@ let lodash = require("lodash"), * testerDefaultConfig must not be modified as it allows to reset the tester to * the initial default configuration */ -let testerDefaultConfig = { rules: {} }; +const testerDefaultConfig = { rules: {} }; let defaultConfig = { rules: {} }; /* * List every parameters possible on a test case that are not related to eslint * configuration */ -let RuleTesterParameters = [ +const RuleTesterParameters = [ "code", "filename", "options", @@ -73,9 +73,9 @@ let RuleTesterParameters = [ "errors" ]; -let validateSchema = validate(metaSchema, { verbose: true }); +const validateSchema = validate(metaSchema, { verbose: true }); -let hasOwnProperty = Function.call.bind(Object.hasOwnProperty); +const hasOwnProperty = Function.call.bind(Object.hasOwnProperty); /** * Clones a given value deeply. @@ -90,9 +90,9 @@ function cloneDeeplyExcludesParent(x) { return x.map(cloneDeeplyExcludesParent); } - let retv = {}; + const retv = {}; - for (let key in x) { + for (const key in x) { if (key !== "parent" && hasOwnProperty(x, key)) { retv[key] = cloneDeeplyExcludesParent(x[key]); } @@ -115,7 +115,7 @@ function freezeDeeply(x) { if (Array.isArray(x)) { x.forEach(freezeDeeply); } else { - for (let key in x) { + for (const key in x) { if (key !== "parent" && hasOwnProperty(x, key)) { freezeDeeply(x[key]); } @@ -211,7 +211,7 @@ RuleTester.prototype = { */ run: function(ruleName, rule, test) { - let testerConfig = this.testerConfig, + const testerConfig = this.testerConfig, result = {}; /* eslint-disable no-shadow */ @@ -225,7 +225,7 @@ RuleTester.prototype = { */ function runRuleForItem(ruleName, item) { let config = lodash.cloneDeep(testerConfig), - code, filename, schema, beforeAST, afterAST; + code, filename, beforeAST, afterAST; if (typeof item === "string") { code = item; @@ -234,7 +234,7 @@ RuleTester.prototype = { // Assumes everything on the item is a config except for the // parameters used by this tester - let itemConfig = lodash.omit(item, RuleTesterParameters); + const itemConfig = lodash.omit(item, RuleTesterParameters); // Create the config object from the tester config and this item // specific configurations. @@ -249,7 +249,7 @@ RuleTester.prototype = { } if (item.options) { - let options = item.options.concat(); + const options = item.options.concat(); options.unshift(1); config.rules[ruleName] = options; @@ -259,7 +259,7 @@ RuleTester.prototype = { eslint.defineRule(ruleName, rule); - schema = validator.getRuleOptionsSchema(ruleName); + const schema = validator.getRuleOptionsSchema(ruleName); if (schema) { validateSchema(schema); @@ -290,11 +290,11 @@ RuleTester.prototype = { }); // Freezes rule-context properties. - let originalGet = rules.get; + const originalGet = rules.get; try { rules.get = function(ruleId) { - let rule = originalGet(ruleId); + const rule = originalGet(ruleId); if (typeof rule === "function") { return function(context) { @@ -354,8 +354,8 @@ RuleTester.prototype = { * @private */ function testValidTemplate(ruleName, item) { - let result = runRuleForItem(ruleName, item); - let messages = result.messages; + const result = runRuleForItem(ruleName, item); + const messages = result.messages; assert.equal(messages.length, 0, util.format("Should have no errors but had %d: %s", messages.length, util.inspect(messages))); @@ -375,8 +375,8 @@ RuleTester.prototype = { assert.ok(item.errors || item.errors === 0, "Did not specify errors for an invalid test of " + ruleName); - let result = runRuleForItem(ruleName, item); - let messages = result.messages; + const result = runRuleForItem(ruleName, item); + const messages = result.messages; @@ -434,7 +434,7 @@ RuleTester.prototype = { } if (item.hasOwnProperty("output")) { - let fixResult = SourceCodeFixer.applyFixes(eslint.getSourceCode(), messages); + const fixResult = SourceCodeFixer.applyFixes(eslint.getSourceCode(), messages); assert.equal(fixResult.output, item.output, "Output is incorrect."); } diff --git a/lib/timing.js b/lib/timing.js index ff0dd7ffb27..19fbefb3670 100644 --- a/lib/timing.js +++ b/lib/timing.js @@ -39,10 +39,10 @@ function alignRight(str, len, ch) { // Module definition //------------------------------------------------------------------------------ -let enabled = !!process.env.TIMING; +const enabled = !!process.env.TIMING; -let HEADERS = ["Rule", "Time (ms)", "Relative"]; -let ALIGN = [alignLeft, alignRight, alignRight]; +const HEADERS = ["Rule", "Time (ms)", "Relative"]; +const ALIGN = [alignLeft, alignRight, alignRight]; /* istanbul ignore next */ /** @@ -53,9 +53,9 @@ let ALIGN = [alignLeft, alignRight, alignRight]; */ function display(data) { let total = 0; - let rows = Object.keys(data) + const rows = Object.keys(data) .map(function(key) { - let time = data[key]; + const time = data[key]; total += time; return [key, time]; @@ -72,22 +72,21 @@ function display(data) { rows.unshift(HEADERS); - let widths = []; + const widths = []; rows.forEach(function(row) { - let len = row.length, - i, - n; + const len = row.length; + + for (let i = 0; i < len; i++) { + const n = row[i].length; - for (i = 0; i < len; i++) { - n = row[i].length; if (!widths[i] || n > widths[i]) { widths[i] = n; } } }); - let table = rows.map(function(row) { + const table = rows.map(function(row) { return row.map(function(cell, index) { return ALIGN[index](cell, widths[index]); }).join(" | "); @@ -107,7 +106,7 @@ function display(data) { /* istanbul ignore next */ module.exports = (function() { - let data = Object.create(null); + const data = Object.create(null); /** * Time the run diff --git a/lib/token-store.js b/lib/token-store.js index 183c7363ec9..9cd37cd175b 100644 --- a/lib/token-store.js +++ b/lib/token-store.js @@ -9,10 +9,10 @@ //------------------------------------------------------------------------------ module.exports = function(tokens) { - let api = {}, + const api = {}, starts = Object.create(null), ends = Object.create(null), - index, length, range; + length = tokens.length; /** * Gets tokens in a given interval. @@ -21,10 +21,9 @@ module.exports = function(tokens) { * @returns {Token[]} Tokens in the interval. */ function get(start, end) { - let result = [], - i; + const result = []; - for (i = Math.max(0, start); i < end && i < length; i++) { + for (let i = Math.max(0, start); i < end && i < length; i++) { result.push(tokens[i]); } @@ -39,8 +38,8 @@ module.exports = function(tokens) { * @returns {int} Index in the tokens array of the node's last token. */ function lastTokenIndex(node) { - let end = node.range[1], - cursor = ends[end]; + const end = node.range[1]; + let cursor = ends[end]; // If the node extends beyond its last token, get the token before the // next token @@ -58,10 +57,11 @@ module.exports = function(tokens) { } // Map tokens' start and end range to the index in the tokens array - for (index = 0, length = tokens.length; index < length; index++) { - range = tokens[index].range; - starts[range[0]] = index; - ends[range[1]] = index; + for (let i = 0; i < length; i++) { + const range = tokens[i].range; + + starts[range[0]] = i; + ends[range[1]] = i; } /** @@ -73,7 +73,7 @@ module.exports = function(tokens) { * @returns {Token[]} Array of objects representing tokens. */ api.getTokensBefore = function(node, beforeCount) { - let first = starts[node.range[0]]; + const first = starts[node.range[0]]; return get(first - (beforeCount || 0), first); }; @@ -98,7 +98,7 @@ module.exports = function(tokens) { * @returns {Token[]} Array of objects representing tokens. */ api.getTokensAfter = function(node, afterCount) { - let start = lastTokenIndex(node) + 1; + const start = lastTokenIndex(node) + 1; return get(start, start + (afterCount || 0)); }; @@ -135,7 +135,7 @@ module.exports = function(tokens) { * @returns {Token[]} Array of objects representing tokens. */ api.getFirstTokens = function(node, count) { - let first = starts[node.range[0]]; + const first = starts[node.range[0]]; return get( first, @@ -160,7 +160,7 @@ module.exports = function(tokens) { * @returns {Token[]} Array of objects representing tokens. */ api.getLastTokens = function(node, count) { - let last = lastTokenIndex(node) + 1; + const last = lastTokenIndex(node) + 1; return get(Math.max(starts[node.range[0]], last - (count || 0)), last); }; diff --git a/lib/util/comment-event-generator.js b/lib/util/comment-event-generator.js index 40771790b7f..47cc68f296f 100644 --- a/lib/util/comment-event-generator.js +++ b/lib/util/comment-event-generator.js @@ -21,7 +21,7 @@ function emitComments(comments, emitter, locs, eventName) { if (comments.length > 0) { comments.forEach(function(node) { - let index = locs.indexOf(node.loc); + const index = locs.indexOf(node.loc); if (index >= 0) { locs.splice(index, 1); @@ -91,7 +91,7 @@ CommentEventGenerator.prototype = { * @returns {void} */ enterNode: function enterNode(node) { - let comments = this.sourceCode.getComments(node); + const comments = this.sourceCode.getComments(node); emitCommentsEnter(this, comments.leading); this.original.enterNode(node); @@ -104,7 +104,7 @@ CommentEventGenerator.prototype = { * @returns {void} */ leaveNode: function leaveNode(node) { - let comments = this.sourceCode.getComments(node); + const comments = this.sourceCode.getComments(node); emitCommentsExit(this, comments.trailing); this.original.leaveNode(node); diff --git a/lib/util/glob-util.js b/lib/util/glob-util.js index 30784b2bfc1..56b871a1bd8 100644 --- a/lib/util/glob-util.js +++ b/lib/util/glob-util.js @@ -8,8 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let debug = require("debug"), - fs = require("fs"), +const fs = require("fs"), path = require("path"), glob = require("glob"), shell = require("shelljs"), @@ -17,7 +16,7 @@ let debug = require("debug"), pathUtil = require("./path-util"), IgnoredPaths = require("../ignored-paths"); -debug = debug("eslint:glob-util"); +const debug = require("debug")("eslint:glob-util"); //------------------------------------------------------------------------------ // Helpers @@ -41,7 +40,7 @@ debug = debug("eslint:glob-util"); * pathname is a directory. */ function processPath(options) { - let cwd = (options && options.cwd) || process.cwd(); + const cwd = (options && options.cwd) || process.cwd(); let extensions = (options && options.extensions) || [".js"]; extensions = extensions.map(function(ext) { @@ -65,7 +64,7 @@ function processPath(options) { */ return function(pathname) { let newPath = pathname; - let resolvedPath = path.resolve(cwd, pathname); + const resolvedPath = path.resolve(cwd, pathname); if (shell.test("-d", resolvedPath)) { newPath = pathname.replace(/[\/\\]$/, "") + suffix; @@ -87,7 +86,7 @@ function processPath(options) { */ function resolveFileGlobPatterns(patterns, options) { - let processPathExtensions = processPath(options); + const processPathExtensions = processPath(options); return patterns.map(processPathExtensions); } @@ -105,12 +104,18 @@ function resolveFileGlobPatterns(patterns, options) { * @returns {string[]} Resolved absolute filenames. */ function listFilesToProcess(globPatterns, options) { - let ignoredPaths, - files = [], - added = {}, - globOptions; + const files = [], + added = {}; - let cwd = (options && options.cwd) || process.cwd(); + const cwd = (options && options.cwd) || process.cwd(); + + options = options || { ignore: true, dotfiles: true }; + const ignoredPaths = new IgnoredPaths(options); + const globOptions = { + nodir: true, + cwd: cwd, + ignore: ignoredPaths.getIgnoredFoldersGlobPatterns() + }; /** * Executes the linter on a file defined by the `filename`. Skips @@ -150,17 +155,9 @@ function listFilesToProcess(globPatterns, options) { added[filename] = true; } - options = options || { ignore: true, dotfiles: true }; - ignoredPaths = new IgnoredPaths(options); - globOptions = { - nodir: true, - cwd: cwd, - ignore: ignoredPaths.getIgnoredFoldersGlobPatterns() - }; - debug("Creating list of files to process."); globPatterns.forEach(function(pattern) { - let file = path.resolve(cwd, pattern); + const file = path.resolve(cwd, pattern); if (shell.test("-f", file)) { addFile(fs.realpathSync(file), !shell.test("-d", file)); diff --git a/lib/util/hash.js b/lib/util/hash.js index 092c56e8633..6d7ef8bf1b2 100644 --- a/lib/util/hash.js +++ b/lib/util/hash.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let murmur = require("imurmurhash"); +const murmur = require("imurmurhash"); //------------------------------------------------------------------------------ // Helpers diff --git a/lib/util/module-resolver.js b/lib/util/module-resolver.js index 964988ec6eb..1b53251461d 100644 --- a/lib/util/module-resolver.js +++ b/lib/util/module-resolver.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let lodash = require("lodash"), +const lodash = require("lodash"), Module = require("module"); //------------------------------------------------------------------------------ // Private //------------------------------------------------------------------------------ -let DEFAULT_OPTIONS = { +const DEFAULT_OPTIONS = { /* * module.paths is an array of paths to search for resolving things relative @@ -60,7 +60,7 @@ ModuleResolver.prototype = { * subsequent calls to this function. Then, move the extraLookupPath to the * top of the lookup paths list so it will be searched first. */ - let lookupPaths = this.options.lookupPaths.concat(); + const lookupPaths = this.options.lookupPaths.concat(); lookupPaths.unshift(extraLookupPath); @@ -69,7 +69,7 @@ ModuleResolver.prototype = { * lookup file paths when require() is called. So, we are hooking into the * exact same logic that Node.js uses. */ - let result = Module._findPath(name, lookupPaths); // eslint-disable-line no-underscore-dangle + const result = Module._findPath(name, lookupPaths); // eslint-disable-line no-underscore-dangle if (!result) { throw new Error("Cannot find module '" + name + "'"); diff --git a/lib/util/npm-util.js b/lib/util/npm-util.js index e888f8feb61..a099c589246 100644 --- a/lib/util/npm-util.js +++ b/lib/util/npm-util.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let fs = require("fs"), +const fs = require("fs"), path = require("path"), shell = require("shelljs"), log = require("../logging"); @@ -29,7 +29,7 @@ function findPackageJson(startDir) { let dir = path.resolve(startDir || process.cwd()); do { - let pkgfile = path.join(dir, "package.json"); + const pkgfile = path.join(dir, "package.json"); if (!fs.existsSync(pkgfile)) { dir = path.join(dir, ".."); @@ -69,7 +69,7 @@ function installSyncSaveDev(packages) { */ function check(packages, opt) { let deps = []; - let pkgJson = (opt) ? findPackageJson(opt.startDir) : findPackageJson(); + const pkgJson = (opt) ? findPackageJson(opt.startDir) : findPackageJson(); let fileJson; if (!pkgJson) { diff --git a/lib/util/path-util.js b/lib/util/path-util.js index 8add2064adc..5cec711a587 100644 --- a/lib/util/path-util.js +++ b/lib/util/path-util.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let path = require("path"); +const path = require("path"); //------------------------------------------------------------------------------ // Private @@ -21,8 +21,8 @@ let path = require("path"); * @returns {string} Converted filepath */ function convertPathToPosix(filepath) { - let normalizedFilepath = path.normalize(filepath); - let posixFilepath = normalizedFilepath.replace(/\\/g, "/"); + const normalizedFilepath = path.normalize(filepath); + const posixFilepath = normalizedFilepath.replace(/\\/g, "/"); return posixFilepath; } diff --git a/lib/util/source-code-fixer.js b/lib/util/source-code-fixer.js index d855edb206b..ebba46716d7 100644 --- a/lib/util/source-code-fixer.js +++ b/lib/util/source-code-fixer.js @@ -8,13 +8,13 @@ // Requirements //------------------------------------------------------------------------------ -let debug = require("debug")("eslint:text-fixer"); +const debug = require("debug")("eslint:text-fixer"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let BOM = "\uFEFF"; +const BOM = "\uFEFF"; /** * Compares items in a messages array by line and column. @@ -24,7 +24,7 @@ let BOM = "\uFEFF"; * @private */ function compareMessagesByLocation(a, b) { - let lineDiff = a.line - b.line; + const lineDiff = a.line - b.line; if (lineDiff === 0) { return a.column - b.column; @@ -66,10 +66,10 @@ SourceCodeFixer.applyFixes = function(sourceCode, messages) { } // clone the array - let remainingMessages = [], + const remainingMessages = [], fixes = [], - text = sourceCode.text, - lastFixPos = text.length + 1, + text = sourceCode.text; + let lastFixPos = text.length + 1, prefix = (sourceCode.hasBOM ? BOM : ""); messages.forEach(function(problem) { @@ -89,12 +89,12 @@ SourceCodeFixer.applyFixes = function(sourceCode, messages) { }); // split into array of characters for easier manipulation - let chars = text.split(""); + const chars = text.split(""); fixes.forEach(function(problem) { - let fix = problem.fix; + const fix = problem.fix; let start = fix.range[0]; - let end = fix.range[1]; + const end = fix.range[1]; let insertionText = fix.text; if (end < lastFixPos) { diff --git a/lib/util/source-code-util.js b/lib/util/source-code-util.js index f07f61192b9..e5cff0c60cd 100644 --- a/lib/util/source-code-util.js +++ b/lib/util/source-code-util.js @@ -9,14 +9,13 @@ // Requirements //------------------------------------------------------------------------------ -let lodash = require("lodash"), - debug = require("debug"), +const lodash = require("lodash"), CLIEngine = require("../cli-engine"), eslint = require("../eslint"), globUtil = require("./glob-util"), - defaultOptions = require("../../conf/cli-options"); + baseDefaultOptions = require("../../conf/cli-options"); -debug = debug("eslint:source-code-util"); +const debug = require("debug")("eslint:source-code-util"); //------------------------------------------------------------------------------ // Helpers @@ -31,16 +30,16 @@ debug = debug("eslint:source-code-util"); */ function getSourceCodeOfFile(filename, options) { debug("getting sourceCode of", filename); - let opts = lodash.assign({}, options, { rules: {}}); - let cli = new CLIEngine(opts); - let results = cli.executeOnFiles([filename]); + const opts = lodash.assign({}, options, { rules: {}}); + const cli = new CLIEngine(opts); + const results = cli.executeOnFiles([filename]); if (results && results.results[0] && results.results[0].messages[0] && results.results[0].messages[0].fatal) { - let msg = results.results[0].messages[0]; + const msg = results.results[0].messages[0]; throw new Error("(" + filename + ":" + msg.line + ":" + msg.column + ") " + msg.message); } - let sourceCode = eslint.getSourceCode(); + const sourceCode = eslint.getSourceCode(); return sourceCode; } @@ -66,15 +65,14 @@ function getSourceCodeOfFile(filename, options) { * @returns {Object} The SourceCode of all processed files. */ function getSourceCodeOfFiles(patterns, options, cb) { - let sourceCodes = {}, - filenames, - opts; + const sourceCodes = {}; + let opts; if (typeof patterns === "string") { patterns = [patterns]; } - defaultOptions = lodash.assign({}, defaultOptions, {cwd: process.cwd()}); + const defaultOptions = lodash.assign({}, baseDefaultOptions, {cwd: process.cwd()}); if (typeof options === "undefined") { opts = defaultOptions; @@ -87,14 +85,15 @@ function getSourceCodeOfFiles(patterns, options, cb) { debug("constructed options:", opts); patterns = globUtil.resolveFileGlobPatterns(patterns, opts); - filenames = globUtil.listFilesToProcess(patterns, opts).reduce(function(files, fileInfo) { + const filenames = globUtil.listFilesToProcess(patterns, opts).reduce(function(files, fileInfo) { return !fileInfo.ignored ? files.concat(fileInfo.filename) : files; }, []); + if (filenames.length === 0) { debug("Did not find any files matching pattern(s): " + patterns); } filenames.forEach(function(filename) { - let sourceCode = getSourceCodeOfFile(filename, opts); + const sourceCode = getSourceCodeOfFile(filename, opts); if (sourceCode) { debug("got sourceCode of", filename); diff --git a/lib/util/source-code.js b/lib/util/source-code.js index b8ed5841cd1..47ed5bc4831 100644 --- a/lib/util/source-code.js +++ b/lib/util/source-code.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let lodash = require("lodash"), +const lodash = require("lodash"), createTokenStore = require("../token-store.js"), Traverser = require("./traverser"); @@ -123,13 +123,13 @@ function SourceCode(text, ast) { }); // create token store methods - let tokenStore = createTokenStore(ast.tokens); + const tokenStore = createTokenStore(ast.tokens); Object.keys(tokenStore).forEach(function(methodName) { this[methodName] = tokenStore[methodName]; }, this); - let tokensAndCommentsStore = createTokenStore(this.tokensAndComments); + const tokensAndCommentsStore = createTokenStore(this.tokensAndComments); this.getTokenOrCommentBefore = tokensAndCommentsStore.getTokenBefore; this.getTokenOrCommentAfter = tokensAndCommentsStore.getTokenAfter; @@ -193,8 +193,8 @@ SourceCode.prototype = { */ getComments: function(node) { - let leadingComments = node.leadingComments || [], - trailingComments = node.trailingComments || []; + let leadingComments = node.leadingComments || []; + const trailingComments = node.trailingComments || []; /* * espree adds a "comments" array on Program nodes rather than @@ -262,8 +262,8 @@ SourceCode.prototype = { */ getNodeByRangeIndex: function(index) { let result = null, - resultParent = null, - traverser = new Traverser(); + resultParent = null; + const traverser = new Traverser(); traverser.traverse(this.ast, { enter: function(node, parent) { @@ -294,7 +294,7 @@ SourceCode.prototype = { * if there is anything other than whitespace between tokens. */ isSpaceBetweenTokens: function(first, second) { - let text = this.text.slice(first.range[1], second.range[0]); + const text = this.text.slice(first.range[1], second.range[0]); return /\s/.test(text.replace(/\/\*.*?\*\//g, "")); } diff --git a/lib/util/traverser.js b/lib/util/traverser.js index b68d0993af3..50d18b045eb 100644 --- a/lib/util/traverser.js +++ b/lib/util/traverser.js @@ -8,13 +8,13 @@ // Requirements //------------------------------------------------------------------------------ -let estraverse = require("estraverse"); +const estraverse = require("estraverse"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let KEY_BLACKLIST = [ +const KEY_BLACKLIST = [ "parent", "leadingComments", "trailingComments" @@ -27,7 +27,7 @@ let KEY_BLACKLIST = [ */ function Traverser() { - let controller = Object.create(new estraverse.Controller()), + const controller = Object.create(new estraverse.Controller()), originalTraverse = controller.traverse; // intercept call to traverse() and add the fallback key to the visitor diff --git a/packages/eslint-config-eslint/default.yml b/packages/eslint-config-eslint/default.yml index 2a742eced52..e863a0df69c 100644 --- a/packages/eslint-config-eslint/default.yml +++ b/packages/eslint-config-eslint/default.yml @@ -89,6 +89,7 @@ rules: no-with: "error" no-var: "error" one-var-declaration-per-line: "error" + prefer-const: "error" quotes: ["error", "double"] quote-props: ["error", "as-needed"] radix: "error" diff --git a/tests/lib/api.js b/tests/lib/api.js index aba28817dfd..38c3178b274 100644 --- a/tests/lib/api.js +++ b/tests/lib/api.js @@ -5,7 +5,7 @@ "use strict"; -let assert = require("chai").assert, +const assert = require("chai").assert, api = require("../../lib/api"); describe("api", function() { diff --git a/tests/lib/ast-utils.js b/tests/lib/ast-utils.js index 328ffc48282..2184d541e95 100644 --- a/tests/lib/ast-utils.js +++ b/tests/lib/ast-utils.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, sinon = require("sinon"), espree = require("espree"), astUtils = require("../../lib/ast-utils"), @@ -21,8 +21,8 @@ let assert = require("chai").assert, //------------------------------------------------------------------------------ describe("ast-utils", function() { - let filename = "filename.js", - sandbox; + const filename = "filename.js"; + let sandbox; beforeEach(function() { sandbox = sinon.sandbox.create(); @@ -176,7 +176,7 @@ describe("ast-utils", function() { * @returns {void} */ function checker(node) { - let variables = eslint.getDeclaredVariables(node); + const variables = eslint.getDeclaredVariables(node); assert.lengthOf(astUtils.getModifyingReferences(variables[0].references), 1); } @@ -195,7 +195,7 @@ describe("ast-utils", function() { * @returns {void} */ function checker(node) { - let variables = eslint.getDeclaredVariables(node); + const variables = eslint.getDeclaredVariables(node); assert.lengthOf(astUtils.getModifyingReferences(variables[0].references), 1); } @@ -213,7 +213,7 @@ describe("ast-utils", function() { * @returns {void} */ function checker(node) { - let variables = eslint.getDeclaredVariables(node); + const variables = eslint.getDeclaredVariables(node); assert.lengthOf(astUtils.getModifyingReferences(variables[0].references), 0); } @@ -232,7 +232,7 @@ describe("ast-utils", function() { * @returns {void} */ function checker(node) { - let variables = eslint.getDeclaredVariables(node); + const variables = eslint.getDeclaredVariables(node); assert.lengthOf(astUtils.getModifyingReferences(variables[0].references), 1); assert.lengthOf(astUtils.getModifyingReferences(variables[1].references), 0); @@ -251,7 +251,7 @@ describe("ast-utils", function() { * @returns {void} */ function checker(node) { - let variables = eslint.getDeclaredVariables(node); + const variables = eslint.getDeclaredVariables(node); assert.lengthOf(astUtils.getModifyingReferences(variables[0].references), 0); } @@ -321,7 +321,7 @@ describe("ast-utils", function() { }); describe("isParenthesised", function() { - let ESPREE_CONFIG = { + const ESPREE_CONFIG = { ecmaVersion: 6, comment: true, tokens: true, @@ -330,17 +330,17 @@ describe("ast-utils", function() { }; it("should return false for not parenthesised nodes", function() { - let code = "condition ? 1 : 2"; - let ast = espree.parse(code, ESPREE_CONFIG); - let sourceCode = new SourceCode(code, ast); + const code = "condition ? 1 : 2"; + const ast = espree.parse(code, ESPREE_CONFIG); + const sourceCode = new SourceCode(code, ast); assert.isFalse(astUtils.isParenthesised(sourceCode, ast.body[0].expression)); }); it("should return true for not parenthesised nodes", function() { - let code = "(condition ? 1 : 2)"; - let ast = espree.parse(code, ESPREE_CONFIG); - let sourceCode = new SourceCode(code, ast); + const code = "(condition ? 1 : 2)"; + const ast = espree.parse(code, ESPREE_CONFIG); + const sourceCode = new SourceCode(code, ast); assert.isTrue(astUtils.isParenthesised(sourceCode, ast.body[0].expression)); }); @@ -348,28 +348,28 @@ describe("ast-utils", function() { describe("isFunction", function() { it("should return true for FunctionDeclaration", function() { - let ast = espree.parse("function a() {}"); - let node = ast.body[0]; + const ast = espree.parse("function a() {}"); + const node = ast.body[0]; assert(astUtils.isFunction(node)); }); it("should return true for FunctionExpression", function() { - let ast = espree.parse("(function a() {})"); - let node = ast.body[0].expression; + const ast = espree.parse("(function a() {})"); + const node = ast.body[0].expression; assert(astUtils.isFunction(node)); }); it("should return true for AllowFunctionExpression", function() { - let ast = espree.parse("(() => {})", {ecmaVersion: 6}); - let node = ast.body[0].expression; + const ast = espree.parse("(() => {})", {ecmaVersion: 6}); + const node = ast.body[0].expression; assert(astUtils.isFunction(node)); }); it("should return false for Program, VariableDeclaration, BlockStatement", function() { - let ast = espree.parse("var a; { }"); + const ast = espree.parse("var a; { }"); assert(!astUtils.isFunction(ast)); assert(!astUtils.isFunction(ast.body[0])); @@ -379,42 +379,42 @@ describe("ast-utils", function() { describe("isLoop", function() { it("should return true for DoWhileStatement", function() { - let ast = espree.parse("do {} while (a)"); - let node = ast.body[0]; + const ast = espree.parse("do {} while (a)"); + const node = ast.body[0]; assert(astUtils.isLoop(node)); }); it("should return true for ForInStatement", function() { - let ast = espree.parse("for (var k in obj) {}"); - let node = ast.body[0]; + const ast = espree.parse("for (var k in obj) {}"); + const node = ast.body[0]; assert(astUtils.isLoop(node)); }); it("should return true for ForOfStatement", function() { - let ast = espree.parse("for (var x of list) {}", {ecmaVersion: 6}); - let node = ast.body[0]; + const ast = espree.parse("for (var x of list) {}", {ecmaVersion: 6}); + const node = ast.body[0]; assert(astUtils.isLoop(node)); }); it("should return true for ForStatement", function() { - let ast = espree.parse("for (var i = 0; i < 10; ++i) {}"); - let node = ast.body[0]; + const ast = espree.parse("for (var i = 0; i < 10; ++i) {}"); + const node = ast.body[0]; assert(astUtils.isLoop(node)); }); it("should return true for WhileStatement", function() { - let ast = espree.parse("while (a) {}"); - let node = ast.body[0]; + const ast = espree.parse("while (a) {}"); + const node = ast.body[0]; assert(astUtils.isLoop(node)); }); it("should return false for Program, VariableDeclaration, BlockStatement", function() { - let ast = espree.parse("var a; { }"); + const ast = espree.parse("var a; { }"); assert(!astUtils.isLoop(ast)); assert(!astUtils.isLoop(ast.body[0])); diff --git a/tests/lib/cli-engine.js b/tests/lib/cli-engine.js index 10aff9e0a2b..58802e8ab74 100644 --- a/tests/lib/cli-engine.js +++ b/tests/lib/cli-engine.js @@ -9,9 +9,8 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, path = require("path"), - proxyquire = require("proxyquire"), sinon = require("sinon"), leche = require("leche"), Config = require("../../lib/config"), @@ -21,7 +20,8 @@ let assert = require("chai").assert, hash = require("../../lib/util/hash"); require("shelljs/global"); -proxyquire = proxyquire.noCallThru().noPreserveCache(); + +const proxyquire = require("proxyquire").noCallThru().noPreserveCache(); /* global mkdir, rm, cp */ @@ -31,16 +31,16 @@ proxyquire = proxyquire.noCallThru().noPreserveCache(); describe("CLIEngine", function() { - let examplePluginName = "eslint-plugin-example", + const examplePluginName = "eslint-plugin-example", examplePluginNameWithNamespace = "@eslint/eslint-plugin-example", requireStubs = {}, examplePlugin = { rules: { "example-rule": require("../fixtures/rules/custom-rule"), "make-syntax-error": require("../fixtures/rules/make-syntax-error-rule") } }, - CLIEngine, examplePreprocessorName = "eslint-plugin-processor", - originalDir = process.cwd(), + originalDir = process.cwd(); + let CLIEngine, fixtureDir; /** @@ -49,7 +49,7 @@ describe("CLIEngine", function() { * @private */ function getFixturePath() { - let args = Array.prototype.slice.call(arguments); + const args = Array.prototype.slice.call(arguments); args.unshift(fixtureDir); let filepath = path.join.apply(path, args); @@ -87,7 +87,7 @@ describe("CLIEngine", function() { it("the default value of 'options.cwd' should be the current working directory.", function() { process.chdir(__dirname); try { - let engine = new CLIEngine(); + const engine = new CLIEngine(); assert.equal(engine.options.cwd, __dirname); } finally { @@ -104,7 +104,7 @@ describe("CLIEngine", function() { engine = new CLIEngine(); - let report = engine.executeOnText("var foo = 'bar';"); + const report = engine.executeOnText("var foo = 'bar';"); assert.equal(report.results.length, 1); assert.equal(report.errorCount, 5); @@ -125,7 +125,7 @@ describe("CLIEngine", function() { cwd: getFixturePath("..") }); - let report = engine.executeOnText("var foo = 'bar';"); + const report = engine.executeOnText("var foo = 'bar';"); assert.equal(report.results.length, 1); assert.equal(report.errorCount, 1); @@ -144,7 +144,7 @@ describe("CLIEngine", function() { cwd: getFixturePath() }); - let report = engine.executeOnText("var foo = 'bar';", "test.js"); + const report = engine.executeOnText("var foo = 'bar';", "test.js"); assert.equal(report.results[0].filePath, getFixturePath("test.js")); }); @@ -155,7 +155,7 @@ describe("CLIEngine", function() { cwd: getFixturePath("..") }); - let report = engine.executeOnText("var bar = foo;", "fixtures/passing.js", true); + const report = engine.executeOnText("var bar = foo;", "fixtures/passing.js", true); assert.equal(report.results.length, 1); assert.equal(report.errorCount, 0); @@ -175,7 +175,7 @@ describe("CLIEngine", function() { }); // intentional parsing error - let report = engine.executeOnText("va r bar = foo;", "fixtures/passing.js", false); + const report = engine.executeOnText("va r bar = foo;", "fixtures/passing.js", false); // should not report anything because the file is ignored assert.equal(report.results.length, 0); @@ -187,7 +187,7 @@ describe("CLIEngine", function() { cwd: getFixturePath("..") }); - let report = engine.executeOnText("var bar = foo;", "fixtures/passing.js"); + const report = engine.executeOnText("var bar = foo;", "fixtures/passing.js"); // should not report anything because there are no errors assert.equal(report.results.length, 0); @@ -205,7 +205,7 @@ describe("CLIEngine", function() { } }); - let report = engine.executeOnText("var bar = foo;", "fixtures/passing.js"); + const report = engine.executeOnText("var bar = foo;", "fixtures/passing.js"); assert.equal(report.results.length, 1); assert.equal(report.results[0].filePath, getFixturePath("passing.js")); @@ -226,7 +226,7 @@ describe("CLIEngine", function() { cwd: getFixturePath() }); - let report = engine.executeOnText("var bar = foo", "passing.js"); + const report = engine.executeOnText("var bar = foo", "passing.js"); assert.deepEqual(report, { results: [ @@ -255,7 +255,7 @@ describe("CLIEngine", function() { cwd: getFixturePath() }); - let report = engine.executeOnText("var bar = foo", "passing.js"); + const report = engine.executeOnText("var bar = foo", "passing.js"); assert.deepEqual(report, { results: [ @@ -292,7 +292,7 @@ describe("CLIEngine", function() { cwd: getFixturePath() }); - let report = engine.executeOnText("var bar = foo", "test.js"); + const report = engine.executeOnText("var bar = foo", "test.js"); assert.deepEqual(report, { results: [ @@ -330,7 +330,7 @@ describe("CLIEngine", function() { cwd: getFixturePath() }); - let report = engine.executeOnText("var bar =", "test.js"); + const report = engine.executeOnText("var bar =", "test.js"); assert.deepEqual(report, { results: [ @@ -364,8 +364,8 @@ describe("CLIEngine", function() { ignore: false }); - let report = engine.executeOnText("var bar = foo;", "node_modules/passing.js", true); - let expectedMsg = "File ignored by default. Use \"--ignore-pattern \'!node_modules/*\'\" to override."; + const report = engine.executeOnText("var bar = foo;", "node_modules/passing.js", true); + const expectedMsg = "File ignored by default. Use \"--ignore-pattern \'!node_modules/*\'\" to override."; assert.equal(report.results.length, 1); assert.equal(report.results[0].filePath, getFixturePath("node_modules/passing.js")); @@ -385,8 +385,8 @@ describe("CLIEngine", function() { ignore: false }); - let filePath = path.resolve(__dirname, "../fixtures/configurations/parser/custom.js"); - let report = engine.executeOnFiles([filePath]); + const filePath = path.resolve(__dirname, "../fixtures/configurations/parser/custom.js"); + const report = engine.executeOnFiles([filePath]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 1); @@ -402,7 +402,7 @@ describe("CLIEngine", function() { configFile: ".eslintrc.yml" }); - let report = engine.executeOnFiles(["lib/cli*.js"]); + const report = engine.executeOnFiles(["lib/cli*.js"]); assert.equal(report.results.length, 2); assert.equal(report.results[0].messages.length, 0); @@ -416,7 +416,7 @@ describe("CLIEngine", function() { configFile: ".eslintrc.yml" }); - let report = engine.executeOnFiles(["lib/cli*.js", "lib/cli.?s", "lib/{cli,cli-engine}.js"]); + const report = engine.executeOnFiles(["lib/cli*.js", "lib/cli.?s", "lib/{cli,cli-engine}.js"]); assert.equal(report.results.length, 2); assert.equal(report.results[0].messages.length, 0); @@ -431,7 +431,7 @@ describe("CLIEngine", function() { useEslintrc: false }); - let report = engine.executeOnFiles(["lib/cli.js"]); + const report = engine.executeOnFiles(["lib/cli.js"]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 0); @@ -444,7 +444,7 @@ describe("CLIEngine", function() { useEslintrc: false }); - let report = engine.executeOnFiles(["lib/cli.js"]); + const report = engine.executeOnFiles(["lib/cli.js"]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 0); @@ -457,7 +457,7 @@ describe("CLIEngine", function() { useEslintrc: false }); - let report = engine.executeOnFiles(["lib/cli.js"]); + const report = engine.executeOnFiles(["lib/cli.js"]); assert.lengthOf(report.results, 1); assert.lengthOf(report.results[0].messages, 1); @@ -471,7 +471,7 @@ describe("CLIEngine", function() { extensions: [".js2"] }); - let report = engine.executeOnFiles([getFixturePath("files/foo.js2")]); + const report = engine.executeOnFiles([getFixturePath("files/foo.js2")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 0); @@ -485,7 +485,7 @@ describe("CLIEngine", function() { cwd: getFixturePath("..") }); - let report = engine.executeOnFiles(["fixtures/files/"]); + const report = engine.executeOnFiles(["fixtures/files/"]); assert.equal(report.results.length, 2); assert.equal(report.results[0].messages.length, 0); @@ -500,7 +500,7 @@ describe("CLIEngine", function() { cwd: path.join(fixtureDir, "..") }); - let report = engine.executeOnFiles(["fixtures/files/*"]); + const report = engine.executeOnFiles(["fixtures/files/*"]); assert.equal(report.results.length, 2); assert.equal(report.results[0].messages.length, 0); @@ -513,8 +513,8 @@ describe("CLIEngine", function() { cwd: getFixturePath("cli-engine") }); - let report = engine.executeOnFiles(["node_modules/foo.js"]); - let expectedMsg = "File ignored by default. Use \"--ignore-pattern \'!node_modules/*\'\" to override."; + const report = engine.executeOnFiles(["node_modules/foo.js"]); + const expectedMsg = "File ignored by default. Use \"--ignore-pattern \'!node_modules/*\'\" to override."; assert.equal(report.results.length, 1); assert.equal(report.results[0].errorCount, 0); @@ -528,7 +528,7 @@ describe("CLIEngine", function() { cwd: getFixturePath("cli-engine") }); - let report = engine.executeOnFiles(["node_modules"]); + const report = engine.executeOnFiles(["node_modules"]); assert.equal(report.results.length, 0); }); @@ -541,7 +541,7 @@ describe("CLIEngine", function() { ignore: false }); - let report = engine.executeOnFiles(["node_modules"]); + const report = engine.executeOnFiles(["node_modules"]); assert.equal(report.results.length, 0); }); @@ -556,8 +556,8 @@ describe("CLIEngine", function() { } }); - let report = engine.executeOnFiles(["fixtures/files/.bar.js"]); - let expectedMsg = "File ignored by default. Use a negated ignore pattern (like \"--ignore-pattern \'!\'\") to override."; + const report = engine.executeOnFiles(["fixtures/files/.bar.js"]); + const expectedMsg = "File ignored by default. Use a negated ignore pattern (like \"--ignore-pattern \'!\'\") to override."; assert.equal(report.results.length, 1); assert.equal(report.results[0].errorCount, 0); @@ -576,7 +576,7 @@ describe("CLIEngine", function() { } }); - let report = engine.executeOnFiles(["fixtures/files/.bar.js"]); + const report = engine.executeOnFiles(["fixtures/files/.bar.js"]); assert.equal(report.results.length, 1); assert.equal(report.results[0].warningCount, 0); @@ -592,7 +592,7 @@ describe("CLIEngine", function() { cwd: path.join(fixtureDir, "..") }); - let report = engine.executeOnFiles(["fixtures/files/*.?s*"]); + const report = engine.executeOnFiles(["fixtures/files/*.?s*"]); assert.equal(report.results.length, 2); assert.equal(report.results[0].messages.length, 0); @@ -605,7 +605,7 @@ describe("CLIEngine", function() { cwd: getFixturePath("configurations"), configFile: getFixturePath("configurations", "quotes-error.json") }); - let report = engine.executeOnFiles([getFixturePath("single-quoted.js")]); + const report = engine.executeOnFiles([getFixturePath("single-quoted.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 1); @@ -624,7 +624,7 @@ describe("CLIEngine", function() { configFile: getFixturePath("configurations", "semi-error.json") }); - let report = engine.executeOnFiles([getFixturePath("formatters")]); + const report = engine.executeOnFiles([getFixturePath("formatters")]); assert.equal(report.results.length, 3); assert.equal(report.errorCount, 0); @@ -647,7 +647,7 @@ describe("CLIEngine", function() { cwd: path.join(fixtureDir, "..") }); - let report = engine.executeOnFiles(["fixtures/files/foo.js2"]); + const report = engine.executeOnFiles(["fixtures/files/foo.js2"]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 0); @@ -660,7 +660,7 @@ describe("CLIEngine", function() { configFile: getFixturePath("configurations", "env-browser.json") }); - let report = engine.executeOnFiles([fs.realpathSync(getFixturePath("globals-browser.js"))]); + const report = engine.executeOnFiles([fs.realpathSync(getFixturePath("globals-browser.js"))]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 0); @@ -677,7 +677,7 @@ describe("CLIEngine", function() { } }); - let report = engine.executeOnFiles([fs.realpathSync(getFixturePath("globals-browser.js"))]); + const report = engine.executeOnFiles([fs.realpathSync(getFixturePath("globals-browser.js"))]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 0); @@ -690,7 +690,7 @@ describe("CLIEngine", function() { configFile: getFixturePath("configurations", "env-node.json") }); - let report = engine.executeOnFiles([fs.realpathSync(getFixturePath("globals-node.js"))]); + const report = engine.executeOnFiles([fs.realpathSync(getFixturePath("globals-node.js"))]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 0); @@ -706,8 +706,8 @@ describe("CLIEngine", function() { } }); - let failFilePath = fs.realpathSync(getFixturePath("missing-semicolon.js")); - let passFilePath = fs.realpathSync(getFixturePath("passing.js")); + const failFilePath = fs.realpathSync(getFixturePath("missing-semicolon.js")); + const passFilePath = fs.realpathSync(getFixturePath("passing.js")); let report = engine.executeOnFiles([failFilePath]); @@ -730,7 +730,7 @@ describe("CLIEngine", function() { ignorePath: getFixturePath(".eslintignore") }); - let report = engine.executeOnFiles([getFixturePath("./")]); + const report = engine.executeOnFiles([getFixturePath("./")]); assert.equal(report.results.length, 0); }); @@ -740,7 +740,7 @@ describe("CLIEngine", function() { ignorePath: getFixturePath(".eslintignore") }); - let report = engine.executeOnFiles(["tests/fixtures/"]); + const report = engine.executeOnFiles(["tests/fixtures/"]); assert.equal(report.results.length, 0); }); @@ -750,7 +750,7 @@ describe("CLIEngine", function() { ignorePath: getFixturePath(".eslintignore") }); - let report = engine.executeOnFiles(["./tests/fixtures/"]); + const report = engine.executeOnFiles(["./tests/fixtures/"]); assert.equal(report.results.length, 0); }); @@ -766,7 +766,7 @@ describe("CLIEngine", function() { cwd: getFixturePath("cli-engine", "nested_node_modules") }); - let report = engine.executeOnFiles(["."]); + const report = engine.executeOnFiles(["."]); assert.equal(report.results.length, 1); assert.equal(report.results[0].errorCount, 0); @@ -783,7 +783,7 @@ describe("CLIEngine", function() { } }); - let report = engine.executeOnFiles(["./tests/fixtures/cli-engine/"]); + const report = engine.executeOnFiles(["./tests/fixtures/cli-engine/"]); assert.equal(report.results.length, 0); }); @@ -793,7 +793,7 @@ describe("CLIEngine", function() { ignorePattern: "tests/fixtures/single-quoted.js" }); - let report = engine.executeOnFiles(["tests/fixtures/*-quoted.js"]); + const report = engine.executeOnFiles(["tests/fixtures/*-quoted.js"]); assert.equal(report.results.length, 0); }); @@ -804,9 +804,9 @@ describe("CLIEngine", function() { cwd: getFixturePath() }); - let filePath = getFixturePath("passing.js"); + const filePath = getFixturePath("passing.js"); - let report = engine.executeOnFiles([filePath]); + const report = engine.executeOnFiles([filePath]); assert.equal(report.results.length, 1); assert.equal(report.errorCount, 0); @@ -828,9 +828,9 @@ describe("CLIEngine", function() { } }); - let filePath = fs.realpathSync(getFixturePath("undef.js")); + const filePath = fs.realpathSync(getFixturePath("undef.js")); - let report = engine.executeOnFiles([filePath]); + const report = engine.executeOnFiles([filePath]); assert.equal(report.results.length, 1); assert.equal(report.results[0].filePath, filePath); @@ -846,7 +846,7 @@ describe("CLIEngine", function() { ignore: false }); - let report = engine.executeOnFiles([getFixturePath("shebang.js")]); + const report = engine.executeOnFiles([getFixturePath("shebang.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 0); @@ -859,7 +859,7 @@ describe("CLIEngine", function() { rulesPaths: [getFixturePath("rules", "dir1")], configFile: getFixturePath("rules", "missing-rule.json") }); - let report = engine.executeOnFiles([getFixturePath("rules", "test", "test-custom-rule.js")]); + const report = engine.executeOnFiles([getFixturePath("rules", "test", "test-custom-rule.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 1); @@ -893,9 +893,9 @@ describe("CLIEngine", function() { configFile: getFixturePath("rules", "eslint.json") }); - let filePath = fs.realpathSync(getFixturePath("rules", "test", "test-custom-rule.js")); + const filePath = fs.realpathSync(getFixturePath("rules", "test", "test-custom-rule.js")); - let report = engine.executeOnFiles([filePath]); + const report = engine.executeOnFiles([filePath]); assert.equal(report.results.length, 1); assert.equal(report.results[0].filePath, filePath); @@ -905,7 +905,7 @@ describe("CLIEngine", function() { }); it("should load custom rule from the provided cwd", function() { - let cwd = path.resolve(getFixturePath("rules")); + const cwd = path.resolve(getFixturePath("rules")); engine = new CLIEngine({ ignore: false, @@ -914,9 +914,9 @@ describe("CLIEngine", function() { configFile: "eslint.json" }); - let filePath = fs.realpathSync(getFixturePath("rules", "test", "test-custom-rule.js")); + const filePath = fs.realpathSync(getFixturePath("rules", "test", "test-custom-rule.js")); - let report = engine.executeOnFiles([filePath]); + const report = engine.executeOnFiles([filePath]); assert.equal(report.results.length, 1); assert.equal(report.results[0].filePath, filePath); @@ -936,9 +936,9 @@ describe("CLIEngine", function() { configFile: getFixturePath("rules", "multi-rulesdirs.json") }); - let filePath = fs.realpathSync(getFixturePath("rules", "test-multi-rulesdirs.js")); + const filePath = fs.realpathSync(getFixturePath("rules", "test-multi-rulesdirs.js")); - let report = engine.executeOnFiles([filePath]); + const report = engine.executeOnFiles([filePath]); assert.equal(report.results.length, 1); assert.equal(report.results[0].filePath, filePath); @@ -956,9 +956,9 @@ describe("CLIEngine", function() { useEslintrc: false }); - let filePath = fs.realpathSync(getFixturePath("missing-semicolon.js")); + const filePath = fs.realpathSync(getFixturePath("missing-semicolon.js")); - let report = engine.executeOnFiles([filePath]); + const report = engine.executeOnFiles([filePath]); assert.equal(report.results.length, 1); assert.equal(report.results[0].filePath, filePath); @@ -973,9 +973,9 @@ describe("CLIEngine", function() { envs: ["node"] }); - let filePath = fs.realpathSync(getFixturePath("process-exit.js")); + const filePath = fs.realpathSync(getFixturePath("process-exit.js")); - let report = engine.executeOnFiles([filePath]); + const report = engine.executeOnFiles([filePath]); assert.equal(report.results.length, 1); assert.equal(report.results[0].filePath, filePath); @@ -990,9 +990,9 @@ describe("CLIEngine", function() { useEslintrc: false }); - let filePath = fs.realpathSync(getFixturePath("missing-semicolon.js")); + const filePath = fs.realpathSync(getFixturePath("missing-semicolon.js")); - let report = engine.executeOnFiles([filePath]); + const report = engine.executeOnFiles([filePath]); assert.equal(report.results.length, 1); assert.equal(report.results[0].filePath, filePath); @@ -1007,9 +1007,9 @@ describe("CLIEngine", function() { envs: ["node"] }); - let filePath = fs.realpathSync(getFixturePath("eslintrc", "quotes.js")); + const filePath = fs.realpathSync(getFixturePath("eslintrc", "quotes.js")); - let report = engine.executeOnFiles([filePath]); + const report = engine.executeOnFiles([filePath]); assert.equal(report.results.length, 1); assert.equal(report.results[0].filePath, filePath); @@ -1024,9 +1024,9 @@ describe("CLIEngine", function() { envs: ["node"] }); - let filePath = fs.realpathSync(getFixturePath("packagejson", "quotes.js")); + const filePath = fs.realpathSync(getFixturePath("packagejson", "quotes.js")); - let report = engine.executeOnFiles([filePath]); + const report = engine.executeOnFiles([filePath]); assert.equal(report.results.length, 1); assert.equal(report.results[0].filePath, filePath); @@ -1035,7 +1035,7 @@ describe("CLIEngine", function() { it("should not fail if an ignored file cannot be resolved", function() { - let fakeFS = leche.fake(fs), + const fakeFS = leche.fake(fs), LocalCLIEngine = proxyquire("../../lib/cli-engine", { fs: fakeFS }); @@ -1083,7 +1083,7 @@ describe("CLIEngine", function() { } }); - let report = engine.executeOnFiles([path.resolve(fixtureDir, fixtureDir + "/fixmode")]); + const report = engine.executeOnFiles([path.resolve(fixtureDir, fixtureDir + "/fixmode")]); report.results.forEach(convertCRLF); assert.deepEqual(report, { @@ -1155,7 +1155,7 @@ describe("CLIEngine", function() { useEslintrc: false }); - let report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/console-wrong-quotes.js")]); + const report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/console-wrong-quotes.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 0); @@ -1170,7 +1170,7 @@ describe("CLIEngine", function() { useEslintrc: false }); - let report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/console-wrong-quotes-node.js")]); + const report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/console-wrong-quotes-node.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 0); @@ -1183,7 +1183,7 @@ describe("CLIEngine", function() { cwd: path.join(fixtureDir, "..") }); - let report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/process-exit.js")]); + const report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/process-exit.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 0); @@ -1196,7 +1196,7 @@ describe("CLIEngine", function() { cwd: path.join(fixtureDir, "..") }); - let report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/process-exit.js")]); + const report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/process-exit.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 0); @@ -1209,7 +1209,7 @@ describe("CLIEngine", function() { cwd: path.join(fixtureDir, "..") }); - let report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/console-wrong-quotes.js")]); + const report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/console-wrong-quotes.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 1); @@ -1224,7 +1224,7 @@ describe("CLIEngine", function() { cwd: path.join(fixtureDir, "..") }); - let report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/subbroken/console-wrong-quotes.js")]); + const report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/subbroken/console-wrong-quotes.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 1); @@ -1239,7 +1239,7 @@ describe("CLIEngine", function() { cwd: path.join(fixtureDir, "..") }); - let report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/subbroken/subsubbroken/console-wrong-quotes.js")]); + const report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/subbroken/subsubbroken/console-wrong-quotes.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 1); @@ -1254,7 +1254,7 @@ describe("CLIEngine", function() { cwd: path.join(fixtureDir, "..") }); - let report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/packagejson/subdir/wrong-quotes.js")]); + const report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/packagejson/subdir/wrong-quotes.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 1); @@ -1269,7 +1269,7 @@ describe("CLIEngine", function() { cwd: path.join(fixtureDir, "..") }); - let report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/packagejson/subdir/subsubdir/wrong-quotes.js")]); + const report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/packagejson/subdir/subsubdir/wrong-quotes.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 0); @@ -1282,7 +1282,7 @@ describe("CLIEngine", function() { cwd: path.join(fixtureDir, "..") }); - let report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/packagejson/subdir/subsubdir/subsubsubdir/wrong-quotes.js")]); + const report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/packagejson/subdir/subsubdir/subsubsubdir/wrong-quotes.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 1); @@ -1297,7 +1297,7 @@ describe("CLIEngine", function() { cwd: path.join(fixtureDir, "..") }); - let report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/packagejson/wrong-quotes.js")]); + const report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/packagejson/wrong-quotes.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 1); @@ -1313,7 +1313,7 @@ describe("CLIEngine", function() { configFile: fixtureDir + "/config-hierarchy/broken/add-conf.yaml" }); - let report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/console-wrong-quotes.js")]); + const report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/console-wrong-quotes.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 2); @@ -1331,7 +1331,7 @@ describe("CLIEngine", function() { configFile: fixtureDir + "/config-hierarchy/broken/override-conf.yaml" }); - let report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/console-wrong-quotes.js")]); + const report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/console-wrong-quotes.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 0); @@ -1345,7 +1345,7 @@ describe("CLIEngine", function() { configFile: fixtureDir + "/config-hierarchy/broken/add-conf.yaml" }); - let report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/subbroken/console-wrong-quotes.js")]); + const report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/subbroken/console-wrong-quotes.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 2); @@ -1363,7 +1363,7 @@ describe("CLIEngine", function() { configFile: getFixturePath("config-hierarchy/broken/override-conf.yaml") }); - let report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/subbroken/console-wrong-quotes.js")]); + const report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/subbroken/console-wrong-quotes.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 1); @@ -1379,7 +1379,7 @@ describe("CLIEngine", function() { configFile: fixtureDir + "/config-hierarchy/broken/override-conf.yaml" }); - let report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/console-wrong-quotes.js")]); + const report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/console-wrong-quotes.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 0); @@ -1396,7 +1396,7 @@ describe("CLIEngine", function() { } }); - let report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/console-wrong-quotes.js")]); + const report = engine.executeOnFiles([fs.realpathSync(fixtureDir + "/config-hierarchy/broken/console-wrong-quotes.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 1); @@ -1415,7 +1415,7 @@ describe("CLIEngine", function() { } }); - let report = engine.executeOnFiles([getFixturePath("config-hierarchy/broken/console-wrong-quotes.js")]); + const report = engine.executeOnFiles([getFixturePath("config-hierarchy/broken/console-wrong-quotes.js")]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 1); @@ -1433,7 +1433,7 @@ describe("CLIEngine", function() { useEslintrc: false }); - let report = engine.executeOnFiles([fs.realpathSync(getFixturePath("rules", "test/test-custom-rule.js"))]); + const report = engine.executeOnFiles([fs.realpathSync(getFixturePath("rules", "test/test-custom-rule.js"))]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 2); @@ -1447,7 +1447,7 @@ describe("CLIEngine", function() { useEslintrc: false }); - let report = engine.executeOnFiles([fs.realpathSync(getFixturePath("rules", "test", "test-custom-rule.js"))]); + const report = engine.executeOnFiles([fs.realpathSync(getFixturePath("rules", "test", "test-custom-rule.js"))]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 2); @@ -1461,7 +1461,7 @@ describe("CLIEngine", function() { useEslintrc: false }); - let report = engine.executeOnFiles([fs.realpathSync(getFixturePath("rules", "test", "test-custom-rule.js"))]); + const report = engine.executeOnFiles([fs.realpathSync(getFixturePath("rules", "test", "test-custom-rule.js"))]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 2); @@ -1475,7 +1475,7 @@ describe("CLIEngine", function() { useEslintrc: false }); - let report = engine.executeOnFiles([fs.realpathSync(getFixturePath("rules", "test", "test-custom-rule.js"))]); + const report = engine.executeOnFiles([fs.realpathSync(getFixturePath("rules", "test", "test-custom-rule.js"))]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 2); @@ -1490,7 +1490,7 @@ describe("CLIEngine", function() { rules: { "example/example-rule": 1 } }); - let report = engine.executeOnFiles([fs.realpathSync(getFixturePath("rules", "test", "test-custom-rule.js"))]); + const report = engine.executeOnFiles([fs.realpathSync(getFixturePath("rules", "test", "test-custom-rule.js"))]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 2); @@ -1507,7 +1507,7 @@ describe("CLIEngine", function() { engine.addPlugin("eslint-plugin-test", { rules: { "example-rule": require("../fixtures/rules/custom-rule") } }); - let report = engine.executeOnFiles([fs.realpathSync(getFixturePath("rules", "test", "test-custom-rule.js"))]); + const report = engine.executeOnFiles([fs.realpathSync(getFixturePath("rules", "test", "test-custom-rule.js"))]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 2); @@ -1586,7 +1586,7 @@ describe("CLIEngine", function() { ignore: false }); - let file = getFixturePath("cache/src", "test-file.js"); + const file = getFixturePath("cache/src", "test-file.js"); engine.executeOnFiles([file]); @@ -1613,7 +1613,7 @@ describe("CLIEngine", function() { ignore: false }); - let file = getFixturePath("cache/src", "test-file.js"); + const file = getFixturePath("cache/src", "test-file.js"); engine.executeOnFiles([file]); @@ -1623,7 +1623,7 @@ describe("CLIEngine", function() { }); it("should create the cache file inside cwd when no cacheLocation provided", function() { - let cwd = path.resolve(getFixturePath("cli-engine")); + const cwd = path.resolve(getFixturePath("cli-engine")); engine = new CLIEngine({ useEslintrc: false, @@ -1636,7 +1636,7 @@ describe("CLIEngine", function() { ignore: false }); - let file = getFixturePath("cli-engine", "console.js"); + const file = getFixturePath("cli-engine", "console.js"); engine.executeOnFiles([file]); @@ -1665,7 +1665,7 @@ describe("CLIEngine", function() { file = fs.realpathSync(file); - let result = engine.executeOnFiles([file]); + const result = engine.executeOnFiles([file]); assert.equal(result.errorCount + result.warningCount, 0, "the file passed without errors or warnings"); assert.equal(spy.getCall(0).args[0], file, "the module read the file because is considered changed"); @@ -1690,7 +1690,7 @@ describe("CLIEngine", function() { // create a new spy spy = sandbox.spy(fs, "readFileSync"); - let cachedResult = engine.executeOnFiles([file]); + const cachedResult = engine.executeOnFiles([file]); assert.equal(spy.getCall(0).args[0], file, "the module read the file because is considered changed because the config changed"); assert.equal(cachedResult.errorCount, 1, "since configuration changed the cache was not used an one error was reported"); @@ -1720,7 +1720,7 @@ describe("CLIEngine", function() { file = fs.realpathSync(file); - let result = engine.executeOnFiles([file]); + const result = engine.executeOnFiles([file]); assert.equal(spy.getCall(0).args[0], file, "the module read the file because is considered changed"); assert.isTrue(fs.existsSync(path.resolve(".eslintcache")), "the cache for eslint was created"); @@ -1744,7 +1744,7 @@ describe("CLIEngine", function() { // create a new spy spy = sandbox.spy(fs, "readFileSync"); - let cachedResult = engine.executeOnFiles([file]); + const cachedResult = engine.executeOnFiles([file]); assert.deepEqual(result, cachedResult, "the result is the same regardless of using cache or not"); @@ -1754,8 +1754,8 @@ describe("CLIEngine", function() { it("should remember the files from a previous run and do not operate on then if not changed", function() { - let cacheFile = getFixturePath(".eslintcache"); - let cliEngineOptions = { + const cacheFile = getFixturePath(".eslintcache"); + const cliEngineOptions = { useEslintrc: false, // specifying cache true the cache will be created @@ -1791,7 +1791,7 @@ describe("CLIEngine", function() { it("should not store in the cache a file that failed the test", function() { - let cacheFile = getFixturePath(".eslintcache"); + const cacheFile = getFixturePath(".eslintcache"); assert.isFalse(fs.existsSync(cacheFile), "the cache for eslint does not exist"); @@ -1809,26 +1809,26 @@ describe("CLIEngine", function() { extensions: ["js"] }); - let badFile = fs.realpathSync(getFixturePath("cache/src", "fail-file.js")); - let goodFile = fs.realpathSync(getFixturePath("cache/src", "test-file.js")); + const badFile = fs.realpathSync(getFixturePath("cache/src", "fail-file.js")); + const goodFile = fs.realpathSync(getFixturePath("cache/src", "test-file.js")); - let result = engine.executeOnFiles([badFile, goodFile]); + const result = engine.executeOnFiles([badFile, goodFile]); assert.isTrue(fs.existsSync(cacheFile), "the cache for eslint was created"); - let cache = JSON.parse(fs.readFileSync(cacheFile)); + const cache = JSON.parse(fs.readFileSync(cacheFile)); assert.isTrue(typeof cache[goodFile] === "object", "the entry for the good file is in the cache"); assert.isTrue(typeof cache[badFile] === "undefined", "the entry for the bad file is not in the cache"); - let cachedResult = engine.executeOnFiles([badFile, goodFile]); + const cachedResult = engine.executeOnFiles([badFile, goodFile]); assert.deepEqual(result, cachedResult, "result is the same with or without cache"); }); it("should not delete cache when executing on text", function() { - let cacheFile = getFixturePath(".eslintcache"); + const cacheFile = getFixturePath(".eslintcache"); engine = new CLIEngine({ cwd: path.join(fixtureDir, ".."), @@ -1849,7 +1849,7 @@ describe("CLIEngine", function() { }); it("should not delete cache when executing on text with a provided filename", function() { - let cacheFile = getFixturePath(".eslintcache"); + const cacheFile = getFixturePath(".eslintcache"); engine = new CLIEngine({ cwd: path.join(fixtureDir, ".."), @@ -1870,7 +1870,7 @@ describe("CLIEngine", function() { }); it("should not delete cache when executing on files with --cache flag", function() { - let cacheFile = getFixturePath(".eslintcache"); + const cacheFile = getFixturePath(".eslintcache"); engine = new CLIEngine({ cwd: path.join(fixtureDir, ".."), @@ -1884,7 +1884,7 @@ describe("CLIEngine", function() { extensions: ["js"] }); - let file = getFixturePath("cli-engine", "console.js"); + const file = getFixturePath("cli-engine", "console.js"); assert.isTrue(fs.existsSync(cacheFile), "the cache for eslint exists"); @@ -1894,7 +1894,7 @@ describe("CLIEngine", function() { }); it("should delete cache when executing on files without --cache flag", function() { - let cacheFile = getFixturePath(".eslintcache"); + const cacheFile = getFixturePath(".eslintcache"); engine = new CLIEngine({ cwd: path.join(fixtureDir, ".."), @@ -1907,7 +1907,7 @@ describe("CLIEngine", function() { extensions: ["js"] }); - let file = getFixturePath("cli-engine", "console.js"); + const file = getFixturePath("cli-engine", "console.js"); assert.isTrue(fs.existsSync(cacheFile), "the cache for eslint exists"); @@ -1918,7 +1918,7 @@ describe("CLIEngine", function() { describe("cacheFile", function() { it("should use the specified cache file", function() { - let customCacheFile = path.resolve(".cache/custom-cache"); + const customCacheFile = path.resolve(".cache/custom-cache"); assert.isFalse(fs.existsSync(customCacheFile), "the cache for eslint does not exist"); @@ -1938,20 +1938,20 @@ describe("CLIEngine", function() { cwd: path.join(fixtureDir, "..") }); - let badFile = fs.realpathSync(getFixturePath("cache/src", "fail-file.js")); - let goodFile = fs.realpathSync(getFixturePath("cache/src", "test-file.js")); + const badFile = fs.realpathSync(getFixturePath("cache/src", "fail-file.js")); + const goodFile = fs.realpathSync(getFixturePath("cache/src", "test-file.js")); - let result = engine.executeOnFiles([badFile, goodFile]); + const result = engine.executeOnFiles([badFile, goodFile]); assert.isTrue(fs.existsSync(customCacheFile), "the cache for eslint was created"); - let cache = JSON.parse(fs.readFileSync(customCacheFile)); + const cache = JSON.parse(fs.readFileSync(customCacheFile)); assert.isTrue(typeof cache[goodFile] === "object", "the entry for the good file is in the cache"); assert.isTrue(typeof cache[badFile] === "undefined", "the entry for the bad file is not in the cache"); - let cachedResult = engine.executeOnFiles([badFile, goodFile]); + const cachedResult = engine.executeOnFiles([badFile, goodFile]); assert.deepEqual(result, cachedResult, "result is the same with or without cache"); }); @@ -1967,7 +1967,7 @@ describe("CLIEngine", function() { cwd: path.join(fixtureDir, "..") }); - let report = engine.executeOnFiles([fs.realpathSync(getFixturePath("processors", "test", "test-processor.txt"))]); + const report = engine.executeOnFiles([fs.realpathSync(getFixturePath("processors", "test", "test-processor.txt"))]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 2); @@ -1997,7 +1997,7 @@ describe("CLIEngine", function() { } }); - let report = engine.executeOnFiles([fs.realpathSync(getFixturePath("processors", "test", "test-processor.txt"))]); + const report = engine.executeOnFiles([fs.realpathSync(getFixturePath("processors", "test", "test-processor.txt"))]); assert.equal(report.results.length, 1); assert.equal(report.results[0].messages.length, 2); @@ -2010,7 +2010,7 @@ describe("CLIEngine", function() { cwd: path.join(fixtureDir, "..") }); - let report = engine.executeOnFiles([getFixturePath("processors", "test", "test-processor.txt")]); + const report = engine.executeOnFiles([getFixturePath("processors", "test", "test-processor.txt")]); assert.equal(report.results[0].messages[0].message, "'b' is defined but never used."); assert.equal(report.results[0].messages[0].ruleId, "post-processed"); @@ -2041,7 +2041,7 @@ describe("CLIEngine", function() { } }); - let report = engine.executeOnFiles([getFixturePath("processors", "test", "test-processor.txt")]); + const report = engine.executeOnFiles([getFixturePath("processors", "test", "test-processor.txt")]); assert.equal(report.results[0].messages[0].message, "'b' is defined but never used."); assert.equal(report.results[0].messages[0].ruleId, "post-processed"); @@ -2054,7 +2054,7 @@ describe("CLIEngine", function() { ignore: false }); - let report = engine.executeOnText("function a() {console.log(\"Test\");}", "tests/fixtures/processors/test/test-processor.txt"); + const report = engine.executeOnText("function a() {console.log(\"Test\");}", "tests/fixtures/processors/test/test-processor.txt"); assert.equal(report.results[0].messages[0].message, "'b' is defined but never used."); assert.equal(report.results[0].messages[0].ruleId, "post-processed"); @@ -2085,7 +2085,7 @@ describe("CLIEngine", function() { } }); - let report = engine.executeOnText("function a() {console.log(\"Test\");}", "tests/fixtures/processors/test/test-processor.txt"); + const report = engine.executeOnText("function a() {console.log(\"Test\");}", "tests/fixtures/processors/test/test-processor.txt"); assert.equal(report.results[0].messages[0].message, "'b' is defined but never used."); assert.equal(report.results[0].messages[0].ruleId, "post-processed"); @@ -2097,13 +2097,13 @@ describe("CLIEngine", function() { it("should return the info from Config#getConfig when called", function() { - let engine = new CLIEngine({ + const engine = new CLIEngine({ configFile: getFixturePath("configurations", "quotes-error.json") }); - let configHelper = new Config(engine.options); + const configHelper = new Config(engine.options); - let filePath = getFixturePath("single-quoted.js"); + const filePath = getFixturePath("single-quoted.js"); assert.deepEqual( engine.getConfigForFile(filePath), @@ -2115,14 +2115,14 @@ describe("CLIEngine", function() { it("should return the config when run from within a subdir", function() { - let engine = new CLIEngine({ + const engine = new CLIEngine({ cwd: getFixturePath("config-hierarchy", "root-true", "parent", "root", "subdir") }); - let configHelper = new Config(engine.options); + const configHelper = new Config(engine.options); - let filePath = getFixturePath("config-hierarchy", "root-true", "parent", "root", ".eslintrc"); - let config = engine.getConfigForFile("./.eslintrc"); + const filePath = getFixturePath("config-hierarchy", "root-true", "parent", "root", ".eslintrc"); + const config = engine.getConfigForFile("./.eslintrc"); assert.deepEqual( config, @@ -2146,7 +2146,7 @@ describe("CLIEngine", function() { }); it("should check if the given path is ignored", function() { - let engine = new CLIEngine({ + const engine = new CLIEngine({ ignorePath: getFixturePath(".eslintignore2"), cwd: getFixturePath() }); @@ -2156,7 +2156,7 @@ describe("CLIEngine", function() { }); it("should return false if ignoring is disabled", function() { - let engine = new CLIEngine({ + const engine = new CLIEngine({ ignore: false, ignorePath: getFixturePath(".eslintignore2"), cwd: getFixturePath() @@ -2167,7 +2167,7 @@ describe("CLIEngine", function() { // https://github.com/eslint/eslint/issues/5547 it("should return true for default ignores even if ignoring is disabled", function() { - let engine = new CLIEngine({ + const engine = new CLIEngine({ ignore: false, cwd: getFixturePath("cli-engine") }); @@ -2180,28 +2180,28 @@ describe("CLIEngine", function() { describe("getFormatter()", function() { it("should return a function when a bundled formatter is requested", function() { - let engine = new CLIEngine(), + const engine = new CLIEngine(), formatter = engine.getFormatter("compact"); assert.isFunction(formatter); }); it("should return a function when no argument is passed", function() { - let engine = new CLIEngine(), + const engine = new CLIEngine(), formatter = engine.getFormatter(); assert.isFunction(formatter); }); it("should return a function when a custom formatter is requested", function() { - let engine = new CLIEngine(), + const engine = new CLIEngine(), formatter = engine.getFormatter(getFixturePath("formatters", "simple.js")); assert.isFunction(formatter); }); it("should return a function when a custom formatter is requested, also if the path has backslashes", function() { - let engine = new CLIEngine({ + const engine = new CLIEngine({ cwd: path.join(fixtureDir, "..") }), formatter = engine.getFormatter(".\\fixtures\\formatters\\simple.js"); @@ -2210,7 +2210,7 @@ describe("CLIEngine", function() { }); it("should return null when a customer formatter doesn't exist", function() { - let engine = new CLIEngine(), + const engine = new CLIEngine(), formatterPath = getFixturePath("formatters", "doesntexist.js"); assert.throws(function() { @@ -2219,7 +2219,7 @@ describe("CLIEngine", function() { }); it("should return null when a built-in formatter doesn't exist", function() { - let engine = new CLIEngine(); + const engine = new CLIEngine(); assert.throws(function() { engine.getFormatter("special"); @@ -2227,7 +2227,7 @@ describe("CLIEngine", function() { }); it("should throw if the required formatter exists but has an error", function() { - let engine = new CLIEngine(), + const engine = new CLIEngine(), formatterPath = getFixturePath("formatters", "broken.js"); assert.throws(function() { @@ -2236,20 +2236,20 @@ describe("CLIEngine", function() { }); it("should return null when a non-string formatter name is passed", function() { - let engine = new CLIEngine(), + const engine = new CLIEngine(), formatter = engine.getFormatter(5); assert.isNull(formatter); }); it("should return a function when called as a static function on CLIEngine", function() { - let formatter = CLIEngine.getFormatter(); + const formatter = CLIEngine.getFormatter(); assert.isFunction(formatter); }); it("should return a function when called as a static function on CLIEngine and a custom formatter is requested", function() { - let formatter = CLIEngine.getFormatter(getFixturePath("formatters", "simple.js")); + const formatter = CLIEngine.getFormatter(getFixturePath("formatters", "simple.js")); assert.isFunction(formatter); }); @@ -2260,10 +2260,10 @@ describe("CLIEngine", function() { it("should report 5 error messages when looking for errors only", function() { process.chdir(originalDir); - let engine = new CLIEngine(); + const engine = new CLIEngine(); - let report = engine.executeOnText("var foo = 'bar';"); - let errorResults = CLIEngine.getErrorResults(report.results); + const report = engine.executeOnText("var foo = 'bar';"); + const errorResults = CLIEngine.getErrorResults(report.results); assert.lengthOf(errorResults[0].messages, 5); assert.equal(errorResults[0].errorCount, 5); @@ -2282,22 +2282,22 @@ describe("CLIEngine", function() { it("should report a warningCount of 0 when looking for errors only", function() { process.chdir(originalDir); - let engine = new CLIEngine(); + const engine = new CLIEngine(); - let report = engine.executeOnText("var foo = 'bar';"); - let errorResults = CLIEngine.getErrorResults(report.results); + const report = engine.executeOnText("var foo = 'bar';"); + const errorResults = CLIEngine.getErrorResults(report.results); assert.equal(errorResults[0].warningCount, 0); }); it("should return 0 error or warning messages even when the file has warnings", function() { - let engine = new CLIEngine({ + const engine = new CLIEngine({ ignorePath: path.join(fixtureDir, ".eslintignore"), cwd: path.join(fixtureDir, "..") }); - let report = engine.executeOnText("var bar = foo;", "fixtures/passing.js", true); - let errorReport = CLIEngine.getErrorResults(report.results); + const report = engine.executeOnText("var bar = foo;", "fixtures/passing.js", true); + const errorReport = CLIEngine.getErrorResults(report.results); assert.lengthOf(errorReport, 0); assert.lengthOf(report.results, 1); @@ -2310,14 +2310,14 @@ describe("CLIEngine", function() { describe("outputFixes()", function() { - let sandbox = sinon.sandbox.create(); + const sandbox = sinon.sandbox.create(); afterEach(function() { sandbox.verifyAndRestore(); }); it("should call fs.writeFileSync() for each result with output", function() { - let fakeFS = leche.fake(fs), + const fakeFS = leche.fake(fs), localCLIEngine = proxyquire("../../lib/cli-engine", { fs: fakeFS }), @@ -2335,7 +2335,7 @@ describe("CLIEngine", function() { }; fakeFS.writeFileSync = function() {}; - let spy = sandbox.spy(fakeFS, "writeFileSync"); + const spy = sandbox.spy(fakeFS, "writeFileSync"); localCLIEngine.outputFixes(report); @@ -2346,7 +2346,7 @@ describe("CLIEngine", function() { }); it("should call fs.writeFileSync() for each result with output and not at all for a result without output", function() { - let fakeFS = leche.fake(fs), + const fakeFS = leche.fake(fs), localCLIEngine = proxyquire("../../lib/cli-engine", { fs: fakeFS }), @@ -2367,7 +2367,7 @@ describe("CLIEngine", function() { }; fakeFS.writeFileSync = function() {}; - let spy = sandbox.spy(fakeFS, "writeFileSync"); + const spy = sandbox.spy(fakeFS, "writeFileSync"); localCLIEngine.outputFixes(report); @@ -2388,9 +2388,9 @@ describe("CLIEngine", function() { ], function(input, expected) { it("should correctly resolve " + input + " to " + expected, function() { - let engine = new CLIEngine(); + const engine = new CLIEngine(); - let result = engine.resolveFileGlobPatterns([input]); + const result = engine.resolveFileGlobPatterns([input]); assert.equal(result[0], expected); @@ -2402,10 +2402,10 @@ describe("CLIEngine", function() { describe("when evaluating code with comments to change config when allowInlineConfig is disabled", function() { it("should report a violation for disabling rules", function() { - let code = [ + const code = [ "alert('test'); // eslint-disable-line no-alert" ].join("\n"); - let config = { + const config = { envs: ["browser"], ignore: true, allowInlineConfig: false, @@ -2418,20 +2418,20 @@ describe("CLIEngine", function() { } }; - let eslintCLI = new CLIEngine(config); + const eslintCLI = new CLIEngine(config); - let report = eslintCLI.executeOnText(code); - let messages = report.results[0].messages; + const report = eslintCLI.executeOnText(code); + const messages = report.results[0].messages; assert.equal(messages.length, 1); assert.equal(messages[0].ruleId, "no-alert"); }); it("should not report a violation by default", function() { - let code = [ + const code = [ "alert('test'); // eslint-disable-line no-alert" ].join("\n"); - let config = { + const config = { envs: ["browser"], ignore: true, @@ -2445,10 +2445,10 @@ describe("CLIEngine", function() { } }; - let eslintCLI = new CLIEngine(config); + const eslintCLI = new CLIEngine(config); - let report = eslintCLI.executeOnText(code); - let messages = report.results[0].messages; + const report = eslintCLI.executeOnText(code); + const messages = report.results[0].messages; assert.equal(messages.length, 0); }); diff --git a/tests/lib/cli.js b/tests/lib/cli.js index eb4d1323b57..648863a78ae 100644 --- a/tests/lib/cli.js +++ b/tests/lib/cli.js @@ -12,17 +12,16 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, CLIEngine = require("../../lib/cli-engine"), path = require("path"), sinon = require("sinon"), leche = require("leche"), fs = require("fs"), os = require("os"), - sh = require("shelljs"), - proxyquire = require("proxyquire"); + sh = require("shelljs"); -proxyquire = proxyquire.noCallThru().noPreserveCache(); +const proxyquire = require("proxyquire").noCallThru().noPreserveCache(); //------------------------------------------------------------------------------ // Tests @@ -31,11 +30,11 @@ proxyquire = proxyquire.noCallThru().noPreserveCache(); describe("cli", function() { let fixtureDir; - let log = { + const log = { info: sinon.spy(), error: sinon.spy() }; - let cli = proxyquire("../../lib/cli", { + const cli = proxyquire("../../lib/cli", { "./logging": log }); @@ -46,18 +45,16 @@ describe("cli", function() { * @returns {void} */ function verifyCLIEngineOpts(cmd, opts) { - let sandbox = sinon.sandbox.create(), - localCLI, - fakeCLIEngine; + const sandbox = sinon.sandbox.create(); // create a fake CLIEngine to test with - fakeCLIEngine = sandbox.mock().withExactArgs(sinon.match(opts)); + const fakeCLIEngine = sandbox.mock().withExactArgs(sinon.match(opts)); fakeCLIEngine.prototype = leche.fake(CLIEngine.prototype); sandbox.stub(fakeCLIEngine.prototype, "executeOnFiles").returns({}); sandbox.stub(fakeCLIEngine.prototype, "getFormatter").returns(sinon.spy()); - localCLI = proxyquire("../../lib/cli", { + const localCLI = proxyquire("../../lib/cli", { "./cli-engine": fakeCLIEngine, "./logging": log }); @@ -74,7 +71,7 @@ describe("cli", function() { * @private */ function getFixturePath() { - let args = Array.prototype.slice.call(arguments); + const args = Array.prototype.slice.call(arguments); args.unshift(fixtureDir); return path.join.apply(path, args); @@ -98,22 +95,22 @@ describe("cli", function() { describe("execute()", function() { it("should return error when text with incorrect quotes is passed as argument", function() { - let configFile = getFixturePath("configurations", "quotes-error.json"); - let result = cli.execute("-c " + configFile, "var foo = 'bar';"); + const configFile = getFixturePath("configurations", "quotes-error.json"); + const result = cli.execute("-c " + configFile, "var foo = 'bar';"); assert.equal(result, 1); }); it("should return no error when --ext .js2 is specified", function() { - let filePath = getFixturePath("files"); - let result = cli.execute("--ext .js2 " + filePath); + const filePath = getFixturePath("files"); + const result = cli.execute("--ext .js2 " + filePath); assert.equal(result, 0); }); it("should exit with console error when passed unsupported arguments", function() { - let filePath = getFixturePath("files"); - let result = cli.execute("--blah --another " + filePath); + const filePath = getFixturePath("files"); + const result = cli.execute("--blah --another " + filePath); assert.equal(result, 1); }); @@ -122,8 +119,8 @@ describe("cli", function() { describe("when given a config file", function() { it("should load the specified config file", function() { - let configPath = getFixturePath(".eslintrc"); - let filePath = getFixturePath("passing.js"); + const configPath = getFixturePath(".eslintrc"); + const filePath = getFixturePath("passing.js"); assert.doesNotThrow(function() { cli.execute("--config " + configPath + " " + filePath); @@ -132,7 +129,7 @@ describe("cli", function() { }); describe("when there is a local config file", function() { - let code = "lib/cli.js"; + const code = "lib/cli.js"; it("should load the local config file", function() { @@ -151,11 +148,11 @@ describe("cli", function() { describe("when given a config with rules with options and severity level set to error", function() { it("should exit with an error status (1)", function() { - let configPath = getFixturePath("configurations", "quotes-error.json"); - let filePath = getFixturePath("single-quoted.js"); - let code = "--no-ignore --config " + configPath + " " + filePath; + const configPath = getFixturePath("configurations", "quotes-error.json"); + const filePath = getFixturePath("single-quoted.js"); + const code = "--no-ignore --config " + configPath + " " + filePath; - let exitStatus = cli.execute(code); + const exitStatus = cli.execute(code); assert.equal(exitStatus, 1); }); @@ -163,9 +160,9 @@ describe("cli", function() { describe("when given a config file and a directory of files", function() { it("should load and execute without error", function() { - let configPath = getFixturePath("configurations", "semi-error.json"); - let filePath = getFixturePath("formatters"); - let code = "--config " + configPath + " " + filePath; + const configPath = getFixturePath("configurations", "semi-error.json"); + const filePath = getFixturePath("formatters"); + const code = "--config " + configPath + " " + filePath; let exitStatus; @@ -179,11 +176,11 @@ describe("cli", function() { describe("when given a config with environment set to browser", function() { it("should execute without any errors", function() { - let configPath = getFixturePath("configurations", "env-browser.json"); - let filePath = getFixturePath("globals-browser.js"); - let code = "--config " + configPath + " " + filePath; + const configPath = getFixturePath("configurations", "env-browser.json"); + const filePath = getFixturePath("globals-browser.js"); + const code = "--config " + configPath + " " + filePath; - let exit = cli.execute(code); + const exit = cli.execute(code); assert.equal(exit, 0); }); @@ -191,11 +188,11 @@ describe("cli", function() { describe("when given a config with environment set to Node.js", function() { it("should execute without any errors", function() { - let configPath = getFixturePath("configurations", "env-node.json"); - let filePath = getFixturePath("globals-node.js"); - let code = "--config " + configPath + " " + filePath; + const configPath = getFixturePath("configurations", "env-node.json"); + const filePath = getFixturePath("globals-node.js"); + const code = "--config " + configPath + " " + filePath; - let exit = cli.execute(code); + const exit = cli.execute(code); assert.equal(exit, 0); }); @@ -203,11 +200,11 @@ describe("cli", function() { describe("when given a config with environment set to Nashorn", function() { it("should execute without any errors", function() { - let configPath = getFixturePath("configurations", "env-nashorn.json"); - let filePath = getFixturePath("globals-nashorn.js"); - let code = "--config " + configPath + " " + filePath; + const configPath = getFixturePath("configurations", "env-nashorn.json"); + const filePath = getFixturePath("globals-nashorn.js"); + const code = "--config " + configPath + " " + filePath; - let exit = cli.execute(code); + const exit = cli.execute(code); assert.equal(exit, 0); }); @@ -215,11 +212,11 @@ describe("cli", function() { describe("when given a config with environment set to WebExtensions", function() { it("should execute without any errors", function() { - let configPath = getFixturePath("configurations", "env-webextensions.json"); - let filePath = getFixturePath("globals-webextensions.js"); - let code = "--config " + configPath + " " + filePath; + const configPath = getFixturePath("configurations", "env-webextensions.json"); + const filePath = getFixturePath("globals-webextensions.js"); + const code = "--config " + configPath + " " + filePath; - let exit = cli.execute(code); + const exit = cli.execute(code); assert.equal(exit, 0); }); @@ -227,8 +224,8 @@ describe("cli", function() { describe("when given a valid built-in formatter name", function() { it("should execute without any errors", function() { - let filePath = getFixturePath("passing.js"); - let exit = cli.execute("-f checkstyle " + filePath); + const filePath = getFixturePath("passing.js"); + const exit = cli.execute("-f checkstyle " + filePath); assert.equal(exit, 0); }); @@ -236,8 +233,8 @@ describe("cli", function() { describe("when given an invalid built-in formatter name", function() { it("should execute with error", function() { - let filePath = getFixturePath("passing.js"); - let exit = cli.execute("-f fakeformatter " + filePath); + const filePath = getFixturePath("passing.js"); + const exit = cli.execute("-f fakeformatter " + filePath); assert.equal(exit, 1); }); @@ -245,9 +242,9 @@ describe("cli", function() { describe("when given a valid formatter path", function() { it("should execute without any errors", function() { - let formatterPath = getFixturePath("formatters", "simple.js"); - let filePath = getFixturePath("passing.js"); - let exit = cli.execute("-f " + formatterPath + " " + filePath); + const formatterPath = getFixturePath("formatters", "simple.js"); + const filePath = getFixturePath("passing.js"); + const exit = cli.execute("-f " + formatterPath + " " + filePath); assert.equal(exit, 0); }); @@ -255,9 +252,9 @@ describe("cli", function() { describe("when given an invalid formatter path", function() { it("should execute with error", function() { - let formatterPath = getFixturePath("formatters", "file-does-not-exist.js"); - let filePath = getFixturePath("passing.js"); - let exit = cli.execute("-f " + formatterPath + " " + filePath); + const formatterPath = getFixturePath("formatters", "file-does-not-exist.js"); + const filePath = getFixturePath("passing.js"); + const exit = cli.execute("-f " + formatterPath + " " + filePath); assert.equal(exit, 1); }); @@ -265,10 +262,10 @@ describe("cli", function() { describe("when executing a file with a lint error", function() { it("should exit with error", function() { - let filePath = getFixturePath("undef.js"); - let code = "--no-ignore --config --rule no-undef:2 " + filePath; + const filePath = getFixturePath("undef.js"); + const code = "--no-ignore --config --rule no-undef:2 " + filePath; - let exit = cli.execute(code); + const exit = cli.execute(code); assert.equal(exit, 1); }); @@ -276,8 +273,8 @@ describe("cli", function() { describe("when executing a file with a syntax error", function() { it("should exit with error", function() { - let filePath = getFixturePath("syntax-error.js"); - let exit = cli.execute("--no-ignore " + filePath); + const filePath = getFixturePath("syntax-error.js"); + const exit = cli.execute("--no-ignore " + filePath); assert.equal(exit, 1); }); @@ -285,8 +282,8 @@ describe("cli", function() { describe("when calling execute more than once", function() { it("should not print the results from previous execution", function() { - let filePath = getFixturePath("missing-semicolon.js"); - let passingPath = getFixturePath("passing.js"); + const filePath = getFixturePath("missing-semicolon.js"); + const passingPath = getFixturePath("passing.js"); cli.execute("--no-ignore --rule semi:2 " + filePath); @@ -318,9 +315,9 @@ describe("cli", function() { describe("when given a directory with eslint excluded files in the directory", function() { it("should not process any files", function() { - let ignorePath = getFixturePath(".eslintignore"); - let filePath = getFixturePath("."); - let exit = cli.execute("--ignore-path " + ignorePath + " " + filePath); + const ignorePath = getFixturePath(".eslintignore"); + const filePath = getFixturePath("."); + const exit = cli.execute("--ignore-path " + ignorePath + " " + filePath); assert.isTrue(log.info.notCalled); assert.equal(exit, 0); @@ -330,9 +327,9 @@ describe("cli", function() { describe("when given a file in excluded files list", function() { it("should not process the file", function() { - let ignorePath = getFixturePath(".eslintignore"); - let filePath = getFixturePath("passing.js"); - let exit = cli.execute("--ignore-path " + ignorePath + " " + filePath); + const ignorePath = getFixturePath(".eslintignore"); + const filePath = getFixturePath("passing.js"); + const exit = cli.execute("--ignore-path " + ignorePath + " " + filePath); // a warning about the ignored file assert.isTrue(log.info.called); @@ -340,9 +337,9 @@ describe("cli", function() { }); it("should process the file when forced", function() { - let ignorePath = getFixturePath(".eslintignore"); - let filePath = getFixturePath("passing.js"); - let exit = cli.execute("--ignore-path " + ignorePath + " --no-ignore " + filePath); + const ignorePath = getFixturePath(".eslintignore"); + const filePath = getFixturePath("passing.js"); + const exit = cli.execute("--ignore-path " + ignorePath + " --no-ignore " + filePath); // no warnings assert.isFalse(log.info.called); @@ -352,9 +349,9 @@ describe("cli", function() { describe("when given a pattern to ignore", function() { it("should not process any files", function() { - let ignoredFile = getFixturePath("cli/syntax-error.js"); - let filePath = getFixturePath("cli/passing.js"); - let exit = cli.execute("--ignore-pattern cli/ " + ignoredFile + " " + filePath); + const ignoredFile = getFixturePath("cli/syntax-error.js"); + const filePath = getFixturePath("cli/passing.js"); + const exit = cli.execute("--ignore-pattern cli/ " + ignoredFile + " " + filePath); // warnings about the ignored files assert.isTrue(log.info.called); @@ -364,13 +361,13 @@ describe("cli", function() { describe("when given patterns to ignore", function() { it("should not process any matching files", function() { - let ignorePaths = ["a", "b"]; + const ignorePaths = ["a", "b"]; - let cmd = ignorePaths.map(function(ignorePath) { + const cmd = ignorePaths.map(function(ignorePath) { return "--ignore-pattern " + ignorePath; }).concat(".").join(" "); - let opts = { + const opts = { ignorePattern: ignorePaths }; @@ -381,8 +378,8 @@ describe("cli", function() { describe("when executing a file with a shebang", function() { it("should execute without error", function() { - let filePath = getFixturePath("shebang.js"); - let exit = cli.execute("--no-ignore " + filePath); + const filePath = getFixturePath("shebang.js"); + const exit = cli.execute("--no-ignore " + filePath); assert.equal(exit, 0); }); @@ -391,23 +388,23 @@ describe("cli", function() { describe("when loading a custom rule", function() { it("should return an error when rule isn't found", function() { - let rulesPath = getFixturePath("rules", "wrong"); - let configPath = getFixturePath("rules", "eslint.json"); - let filePath = getFixturePath("rules", "test", "test-custom-rule.js"); - let code = "--rulesdir " + rulesPath + " --config " + configPath + " --no-ignore " + filePath; + const rulesPath = getFixturePath("rules", "wrong"); + const configPath = getFixturePath("rules", "eslint.json"); + const filePath = getFixturePath("rules", "test", "test-custom-rule.js"); + const code = "--rulesdir " + rulesPath + " --config " + configPath + " --no-ignore " + filePath; assert.throws(function() { - let exit = cli.execute(code); + const exit = cli.execute(code); assert.equal(exit, 1); }, /Error while loading rule 'custom-rule': Cannot read property/); }); it("should return a warning when rule is matched", function() { - let rulesPath = getFixturePath("rules"); - let configPath = getFixturePath("rules", "eslint.json"); - let filePath = getFixturePath("rules", "test", "test-custom-rule.js"); - let code = "--rulesdir " + rulesPath + " --config " + configPath + " --no-ignore " + filePath; + const rulesPath = getFixturePath("rules"); + const configPath = getFixturePath("rules", "eslint.json"); + const filePath = getFixturePath("rules", "test", "test-custom-rule.js"); + const code = "--rulesdir " + rulesPath + " --config " + configPath + " --no-ignore " + filePath; cli.execute(code); @@ -416,14 +413,14 @@ describe("cli", function() { }); it("should return warnings from multiple rules in different directories", function() { - let rulesPath = getFixturePath("rules", "dir1"); - let rulesPath2 = getFixturePath("rules", "dir2"); - let configPath = getFixturePath("rules", "multi-rulesdirs.json"); - let filePath = getFixturePath("rules", "test-multi-rulesdirs.js"); - let code = "--rulesdir " + rulesPath + " --rulesdir " + rulesPath2 + " --config " + configPath + " --no-ignore " + filePath; - let exit = cli.execute(code); + const rulesPath = getFixturePath("rules", "dir1"); + const rulesPath2 = getFixturePath("rules", "dir2"); + const configPath = getFixturePath("rules", "multi-rulesdirs.json"); + const filePath = getFixturePath("rules", "test-multi-rulesdirs.js"); + const code = "--rulesdir " + rulesPath + " --rulesdir " + rulesPath2 + " --config " + configPath + " --no-ignore " + filePath; + const exit = cli.execute(code); - let call = log.info.getCall(0); + const call = log.info.getCall(0); assert.isTrue(log.info.calledOnce); assert.isTrue(call.args[0].indexOf("String!") > -1); @@ -438,8 +435,8 @@ describe("cli", function() { describe("when executing with no-eslintrc flag", function() { it("should ignore a local config file", function() { - let filePath = getFixturePath("eslintrc", "quotes.js"); - let exit = cli.execute("--no-eslintrc --no-ignore " + filePath); + const filePath = getFixturePath("eslintrc", "quotes.js"); + const exit = cli.execute("--no-eslintrc --no-ignore " + filePath); assert.isTrue(log.info.notCalled); assert.equal(exit, 0); @@ -448,8 +445,8 @@ describe("cli", function() { describe("when executing without no-eslintrc flag", function() { it("should load a local config file", function() { - let filePath = getFixturePath("eslintrc", "quotes.js"); - let exit = cli.execute("--no-ignore " + filePath); + const filePath = getFixturePath("eslintrc", "quotes.js"); + const exit = cli.execute("--no-ignore " + filePath); assert.isTrue(log.info.calledOnce); assert.equal(exit, 1); @@ -458,7 +455,7 @@ describe("cli", function() { describe("when executing without env flag", function() { it("should not define environment-specific globals", function() { - let files = [ + const files = [ getFixturePath("globals-browser.js"), getFixturePath("globals-node.js") ]; @@ -471,24 +468,24 @@ describe("cli", function() { describe("when executing with global flag", function() { it("should default defined variables to read-only", function() { - let filePath = getFixturePath("undef.js"); - let exit = cli.execute("--global baz,bat --no-ignore --rule no-global-assign:2 " + filePath); + const filePath = getFixturePath("undef.js"); + const exit = cli.execute("--global baz,bat --no-ignore --rule no-global-assign:2 " + filePath); assert.isTrue(log.info.calledOnce); assert.equal(exit, 1); }); it("should allow defining writable global variables", function() { - let filePath = getFixturePath("undef.js"); - let exit = cli.execute("--global baz:false,bat:true --no-ignore " + filePath); + const filePath = getFixturePath("undef.js"); + const exit = cli.execute("--global baz:false,bat:true --no-ignore " + filePath); assert.isTrue(log.info.notCalled); assert.equal(exit, 0); }); it("should allow defining variables with multiple flags", function() { - let filePath = getFixturePath("undef.js"); - let exit = cli.execute("--global baz --global bat:true --no-ignore " + filePath); + const filePath = getFixturePath("undef.js"); + const exit = cli.execute("--global baz --global bat:true --no-ignore " + filePath); assert.isTrue(log.info.notCalled); assert.equal(exit, 0); @@ -497,12 +494,9 @@ describe("cli", function() { describe("when supplied with rule flag and severity level set to error", function() { it("should exit with an error status (2)", function() { - let filePath = getFixturePath("single-quoted.js"); - let code = "--no-ignore --rule 'quotes: [2, double]' " + filePath; - - let exitStatus; - - exitStatus = cli.execute(code); + const filePath = getFixturePath("single-quoted.js"); + const code = "--no-ignore --rule 'quotes: [2, double]' " + filePath; + const exitStatus = cli.execute(code); assert.equal(exitStatus, 1); }); @@ -511,22 +505,22 @@ describe("cli", function() { describe("when the quiet option is enabled", function() { it("should only print error", function() { - let filePath = getFixturePath("single-quoted.js"); - let cliArgs = "--no-ignore --quiet -f compact --rule 'quotes: [2, double]' --rule 'no-unused-vars: 1' " + filePath, - formattedOutput; + const filePath = getFixturePath("single-quoted.js"); + const cliArgs = "--no-ignore --quiet -f compact --rule 'quotes: [2, double]' --rule 'no-unused-vars: 1' " + filePath; cli.execute(cliArgs); sinon.assert.calledOnce(log.info); - formattedOutput = log.info.firstCall.args[0]; + const formattedOutput = log.info.firstCall.args[0]; + assert.include(formattedOutput, "Error"); assert.notInclude(formattedOutput, "Warning"); }); it("should print nothing if there are no errors", function() { - let filePath = getFixturePath("single-quoted.js"); - let cliArgs = "--quiet -f compact --rule 'quotes: [1, double]' --rule 'no-unused-vars: 1' " + filePath; + const filePath = getFixturePath("single-quoted.js"); + const cliArgs = "--quiet -f compact --rule 'quotes: [1, double]' --rule 'no-unused-vars: 1' " + filePath; cli.execute(cliArgs); @@ -541,8 +535,8 @@ describe("cli", function() { }); it("should write the file and create dirs if they don't exist", function() { - let filePath = getFixturePath("single-quoted.js"); - let code = "--no-ignore --rule 'quotes: [1, double]' --o tests/output/eslint-output.txt " + filePath; + const filePath = getFixturePath("single-quoted.js"); + const code = "--no-ignore --rule 'quotes: [1, double]' --o tests/output/eslint-output.txt " + filePath; cli.execute(code); @@ -551,13 +545,12 @@ describe("cli", function() { }); it("should return an error if the path is a directory", function() { - let filePath = getFixturePath("single-quoted.js"); - let code = "--no-ignore --rule 'quotes: [1, double]' --o tests/output " + filePath; - let exit; + const filePath = getFixturePath("single-quoted.js"); + const code = "--no-ignore --rule 'quotes: [1, double]' --o tests/output " + filePath; fs.mkdirSync("tests/output"); - exit = cli.execute(code); + const exit = cli.execute(code); assert.equal(exit, 1); assert.isTrue(log.info.notCalled); @@ -565,13 +558,12 @@ describe("cli", function() { }); it("should return an error if the path could not be written to", function() { - let filePath = getFixturePath("single-quoted.js"); - let code = "--no-ignore --rule 'quotes: [1, double]' --o tests/output/eslint-output.txt " + filePath; - let exit; + const filePath = getFixturePath("single-quoted.js"); + const code = "--no-ignore --rule 'quotes: [1, double]' --o tests/output/eslint-output.txt " + filePath; fs.writeFileSync("tests/output", "foo"); - exit = cli.execute(code); + const exit = cli.execute(code); assert.equal(exit, 1); assert.isTrue(log.info.notCalled); @@ -582,7 +574,7 @@ describe("cli", function() { describe("when supplied with a plugin", function() { it("should pass plugins to CLIEngine", function() { - let examplePluginName = "eslint-plugin-example"; + const examplePluginName = "eslint-plugin-example"; verifyCLIEngineOpts("--no-ignore --plugin " + examplePluginName + " foo.js", { plugins: [examplePluginName] @@ -593,15 +585,15 @@ describe("cli", function() { describe("when given an parser name", function() { it("should exit with error if parser is invalid", function() { - let filePath = getFixturePath("passing.js"); - let exit = cli.execute("--no-ignore --parser test111 " + filePath); + const filePath = getFixturePath("passing.js"); + const exit = cli.execute("--no-ignore --parser test111 " + filePath); assert.equal(exit, 1); }); it("should exit with no error if parser is valid", function() { - let filePath = getFixturePath("passing.js"); - let exit = cli.execute("--no-ignore --parser espree " + filePath); + const filePath = getFixturePath("passing.js"); + const exit = cli.execute("--no-ignore --parser espree " + filePath); assert.equal(exit, 0); }); @@ -609,37 +601,37 @@ describe("cli", function() { describe("when given parser options", function() { it("should exit with error if parser options are invalid", function() { - let filePath = getFixturePath("passing.js"); - let exit = cli.execute("--no-ignore --parser-options test111 " + filePath); + const filePath = getFixturePath("passing.js"); + const exit = cli.execute("--no-ignore --parser-options test111 " + filePath); assert.equal(exit, 1); }); it("should exit with no error if parser is valid", function() { - let filePath = getFixturePath("passing.js"); - let exit = cli.execute("--no-ignore --parser-options=ecmaVersion:6 " + filePath); + const filePath = getFixturePath("passing.js"); + const exit = cli.execute("--no-ignore --parser-options=ecmaVersion:6 " + filePath); assert.equal(exit, 0); }); it("should exit with an error on ecmaVersion 7 feature in ecmaVersion 6", function() { - let filePath = getFixturePath("passing-es7.js"); - let exit = cli.execute("--no-ignore --parser-options=ecmaVersion:6 " + filePath); + const filePath = getFixturePath("passing-es7.js"); + const exit = cli.execute("--no-ignore --parser-options=ecmaVersion:6 " + filePath); assert.equal(exit, 1); }); it("should exit with no error on ecmaVersion 7 feature in ecmaVersion 7", function() { - let filePath = getFixturePath("passing-es7.js"); - let exit = cli.execute("--no-ignore --parser-options=ecmaVersion:7 " + filePath); + const filePath = getFixturePath("passing-es7.js"); + const exit = cli.execute("--no-ignore --parser-options=ecmaVersion:7 " + filePath); assert.equal(exit, 0); }); it("should exit with no error on ecmaVersion 7 feature with config ecmaVersion 6 and command line ecmaVersion 7", function() { - let configPath = getFixturePath("configurations", "es6.json"); - let filePath = getFixturePath("passing-es7.js"); - let exit = cli.execute("--no-ignore --config " + configPath + " --parser-options=ecmaVersion:7 " + filePath); + const configPath = getFixturePath("configurations", "es6.json"); + const filePath = getFixturePath("passing-es7.js"); + const exit = cli.execute("--no-ignore --config " + configPath + " --parser-options=ecmaVersion:7 " + filePath); assert.equal(exit, 0); }); @@ -647,19 +639,15 @@ describe("cli", function() { describe("when given the max-warnings flag", function() { it("should not change exit code if warning count under threshold", function() { - let filePath = getFixturePath("max-warnings"), - exitCode; - - exitCode = cli.execute("--no-ignore --max-warnings 10 " + filePath); + const filePath = getFixturePath("max-warnings"); + const exitCode = cli.execute("--no-ignore --max-warnings 10 " + filePath); assert.equal(exitCode, 0); }); it("should exit with exit code 1 if warning count exceeds threshold", function() { - let filePath = getFixturePath("max-warnings"), - exitCode; - - exitCode = cli.execute("--no-ignore --max-warnings 5 " + filePath); + const filePath = getFixturePath("max-warnings"); + const exitCode = cli.execute("--no-ignore --max-warnings 5 " + filePath); assert.equal(exitCode, 1); assert.ok(log.error.calledOnce); @@ -667,19 +655,15 @@ describe("cli", function() { }); it("should not change exit code if warning count equals threshold", function() { - let filePath = getFixturePath("max-warnings"), - exitCode; - - exitCode = cli.execute("--no-ignore --max-warnings 6 " + filePath); + const filePath = getFixturePath("max-warnings"); + const exitCode = cli.execute("--no-ignore --max-warnings 6 " + filePath); assert.equal(exitCode, 0); }); it("should not change exit code if flag is not specified and there are warnings", function() { - let filePath = getFixturePath("max-warnings"), - exitCode; - - exitCode = cli.execute(filePath); + const filePath = getFixturePath("max-warnings"); + const exitCode = cli.execute(filePath); assert.equal(exitCode, 0); }); @@ -687,8 +671,8 @@ describe("cli", function() { describe("when passed --no-inline-config", function() { - let sandbox = sinon.sandbox.create(), - localCLI; + const sandbox = sinon.sandbox.create(); + let localCLI; afterEach(function() { sandbox.verifyAndRestore(); @@ -697,7 +681,7 @@ describe("cli", function() { it("should pass allowInlineConfig:true to CLIEngine when --no-inline-config is used", function() { // create a fake CLIEngine to test with - let fakeCLIEngine = sandbox.mock().withExactArgs(sinon.match({ allowInlineConfig: false })); + const fakeCLIEngine = sandbox.mock().withExactArgs(sinon.match({ allowInlineConfig: false })); fakeCLIEngine.prototype = leche.fake(CLIEngine.prototype); sandbox.stub(fakeCLIEngine.prototype, "executeOnFiles").returns({ @@ -730,7 +714,7 @@ describe("cli", function() { it("should not error and allowInlineConfig should be true by default", function() { // create a fake CLIEngine to test with - let fakeCLIEngine = sandbox.mock().withExactArgs(sinon.match({ allowInlineConfig: true })); + const fakeCLIEngine = sandbox.mock().withExactArgs(sinon.match({ allowInlineConfig: true })); fakeCLIEngine.prototype = leche.fake(CLIEngine.prototype); sandbox.stub(fakeCLIEngine.prototype, "executeOnFiles").returns({ @@ -748,7 +732,7 @@ describe("cli", function() { "./logging": log }); - let exitCode = localCLI.execute("."); + const exitCode = localCLI.execute("."); assert.equal(exitCode, 0); @@ -758,8 +742,8 @@ describe("cli", function() { describe("when passed --fix", function() { - let sandbox = sinon.sandbox.create(), - localCLI; + const sandbox = sinon.sandbox.create(); + let localCLI; afterEach(function() { sandbox.verifyAndRestore(); @@ -768,7 +752,7 @@ describe("cli", function() { it("should pass fix:true to CLIEngine when executing on files", function() { // create a fake CLIEngine to test with - let fakeCLIEngine = sandbox.mock().withExactArgs(sinon.match({ fix: true })); + const fakeCLIEngine = sandbox.mock().withExactArgs(sinon.match({ fix: true })); fakeCLIEngine.prototype = leche.fake(CLIEngine.prototype); sandbox.stub(fakeCLIEngine.prototype, "executeOnFiles").returns({ @@ -786,7 +770,7 @@ describe("cli", function() { "./logging": log }); - let exitCode = localCLI.execute("--fix ."); + const exitCode = localCLI.execute("--fix ."); assert.equal(exitCode, 0); @@ -794,7 +778,7 @@ describe("cli", function() { it("should rewrite files when in fix mode", function() { - let report = { + const report = { errorCount: 1, warningCount: 0, results: [{ @@ -810,7 +794,7 @@ describe("cli", function() { }; // create a fake CLIEngine to test with - let fakeCLIEngine = sandbox.mock().withExactArgs(sinon.match({ fix: true })); + const fakeCLIEngine = sandbox.mock().withExactArgs(sinon.match({ fix: true })); fakeCLIEngine.prototype = leche.fake(CLIEngine.prototype); sandbox.stub(fakeCLIEngine.prototype, "executeOnFiles").returns(report); @@ -824,7 +808,7 @@ describe("cli", function() { "./logging": log }); - let exitCode = localCLI.execute("--fix ."); + const exitCode = localCLI.execute("--fix ."); assert.equal(exitCode, 1); @@ -832,7 +816,7 @@ describe("cli", function() { it("should rewrite files when in fix mode and quiet mode", function() { - let report = { + const report = { errorCount: 0, warningCount: 1, results: [{ @@ -848,7 +832,7 @@ describe("cli", function() { }; // create a fake CLIEngine to test with - let fakeCLIEngine = sandbox.mock().withExactArgs(sinon.match({ fix: true })); + const fakeCLIEngine = sandbox.mock().withExactArgs(sinon.match({ fix: true })); fakeCLIEngine.prototype = leche.fake(CLIEngine.prototype); sandbox.stub(fakeCLIEngine.prototype, "executeOnFiles").returns(report); @@ -863,7 +847,7 @@ describe("cli", function() { "./logging": log }); - let exitCode = localCLI.execute("--fix --quiet ."); + const exitCode = localCLI.execute("--fix --quiet ."); assert.equal(exitCode, 0); @@ -872,14 +856,14 @@ describe("cli", function() { it("should not call CLIEngine and return 1 when executing on text", function() { // create a fake CLIEngine to test with - let fakeCLIEngine = sandbox.mock().never(); + const fakeCLIEngine = sandbox.mock().never(); localCLI = proxyquire("../../lib/cli", { "./cli-engine": fakeCLIEngine, "./logging": log }); - let exitCode = localCLI.execute("--fix .", "foo = bar;"); + const exitCode = localCLI.execute("--fix .", "foo = bar;"); assert.equal(exitCode, 1); }); @@ -888,19 +872,19 @@ describe("cli", function() { describe("when passing --print-config", function() { it("should print out the configuration", function() { - let filePath = getFixturePath("files"); + const filePath = getFixturePath("files"); - let exitCode = cli.execute("--print-config " + filePath); + const exitCode = cli.execute("--print-config " + filePath); assert.isTrue(log.info.calledOnce); assert.equal(exitCode, 0); }); it("should require a single positional file argument", function() { - let filePath1 = getFixturePath("files", "bar.js"); - let filePath2 = getFixturePath("files", "foo.js"); + const filePath1 = getFixturePath("files", "bar.js"); + const filePath2 = getFixturePath("files", "foo.js"); - let exitCode = cli.execute("--print-config " + filePath1 + " " + filePath2); + const exitCode = cli.execute("--print-config " + filePath1 + " " + filePath2); assert.isTrue(log.info.notCalled); assert.isTrue(log.error.calledOnce); @@ -908,7 +892,7 @@ describe("cli", function() { }); it("should error out when executing on text", function() { - let exitCode = cli.execute("--print-config", "foo = bar;"); + const exitCode = cli.execute("--print-config", "foo = bar;"); assert.isTrue(log.info.notCalled); assert.isTrue(log.error.calledOnce); diff --git a/tests/lib/code-path-analysis/code-path-analyzer.js b/tests/lib/code-path-analysis/code-path-analyzer.js index 1363995a3b0..187a46229c0 100644 --- a/tests/lib/code-path-analysis/code-path-analyzer.js +++ b/tests/lib/code-path-analysis/code-path-analyzer.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("assert"), +const assert = require("assert"), EventEmitter = require("events").EventEmitter, fs = require("fs"), path = require("path"), @@ -25,8 +25,8 @@ let assert = require("assert"), // Helpers //------------------------------------------------------------------------------ -let expectedPattern = /\/\*expected\s+((?:.|[\r\n])+?)\s*\*\//g; -let lineEndingPattern = /\r?\n/g; +const expectedPattern = /\/\*expected\s+((?:.|[\r\n])+?)\s*\*\//g; +const lineEndingPattern = /\r?\n/g; /** * Extracts the content of `/*expected` comments from a given source code. @@ -38,7 +38,7 @@ let lineEndingPattern = /\r?\n/g; function getExpectedDotArrows(source) { expectedPattern.lastIndex = 0; - let retv = []; + const retv = []; let m; while ((m = expectedPattern.exec(source)) !== null) { @@ -567,14 +567,14 @@ describe("CodePathAnalyzer", function() { }); describe("completed code paths are correct", function() { - let testDataDir = path.join(__dirname, "../../fixtures/code-path-analysis/"); - let testDataFiles = fs.readdirSync(testDataDir); + const testDataDir = path.join(__dirname, "../../fixtures/code-path-analysis/"); + const testDataFiles = fs.readdirSync(testDataDir); testDataFiles.forEach(function(file) { it(file, function() { - let source = fs.readFileSync(path.join(testDataDir, file), {encoding: "utf8"}); - let expected = getExpectedDotArrows(source); - let actual = []; + const source = fs.readFileSync(path.join(testDataDir, file), {encoding: "utf8"}); + const expected = getExpectedDotArrows(source); + const actual = []; assert(expected.length > 0, "/*expected */ comments not found."); @@ -585,7 +585,7 @@ describe("CodePathAnalyzer", function() { } }; }); - let messages = eslint.verify(source, {rules: {test: 2}, env: {es6: true}}); + const messages = eslint.verify(source, {rules: {test: 2}, env: {es6: true}}); assert.equal(messages.length, 0); assert.equal(actual.length, expected.length, "a count of code paths is wrong."); diff --git a/tests/lib/code-path-analysis/code-path.js b/tests/lib/code-path-analysis/code-path.js index 2b22a88c1f0..4dcfd5c2221 100644 --- a/tests/lib/code-path-analysis/code-path.js +++ b/tests/lib/code-path-analysis/code-path.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("assert"), +const assert = require("assert"), eslint = require("../../../lib/eslint"); //------------------------------------------------------------------------------ @@ -23,7 +23,7 @@ let assert = require("assert"), * @returns {CodePath[]} A list of created code paths. */ function parseCodePaths(code) { - let retv = []; + const retv = []; eslint.reset(); eslint.defineRule("test", function() { @@ -49,7 +49,7 @@ function parseCodePaths(code) { * @returns {string[]} The list of segment's ids in the order traversed. */ function getOrderOfTraversing(codePath, options, callback) { - let retv = []; + const retv = []; codePath.traverseSegments(options, function(segment, controller) { retv.push(segment.id); @@ -70,8 +70,8 @@ describe("CodePathAnalyzer", function() { describe(".traverseSegments()", function() { describe("should traverse segments from the first to the end:", function() { it("simple", function() { - let codePath = parseCodePaths("foo(); bar(); baz();")[0]; - let order = getOrderOfTraversing(codePath); + const codePath = parseCodePaths("foo(); bar(); baz();")[0]; + const order = getOrderOfTraversing(codePath); assert.deepEqual(order, ["s1_1"]); @@ -87,8 +87,8 @@ describe("CodePathAnalyzer", function() { }); it("if", function() { - let codePath = parseCodePaths("if (a) foo(); else bar(); baz();")[0]; - let order = getOrderOfTraversing(codePath); + const codePath = parseCodePaths("if (a) foo(); else bar(); baz();")[0]; + const order = getOrderOfTraversing(codePath); assert.deepEqual(order, ["s1_1", "s1_2", "s1_3", "s1_4"]); @@ -108,8 +108,8 @@ describe("CodePathAnalyzer", function() { }); it("switch", function() { - let codePath = parseCodePaths("switch (a) { case 0: foo(); break; case 1: bar(); } baz();")[0]; - let order = getOrderOfTraversing(codePath); + const codePath = parseCodePaths("switch (a) { case 0: foo(); break; case 1: bar(); } baz();")[0]; + const order = getOrderOfTraversing(codePath); assert.deepEqual(order, ["s1_1", "s1_2", "s1_4", "s1_5", "s1_6"]); @@ -133,8 +133,8 @@ describe("CodePathAnalyzer", function() { }); it("while", function() { - let codePath = parseCodePaths("while (a) foo(); bar();")[0]; - let order = getOrderOfTraversing(codePath); + const codePath = parseCodePaths("while (a) foo(); bar();")[0]; + const order = getOrderOfTraversing(codePath); assert.deepEqual(order, ["s1_1", "s1_2", "s1_3", "s1_4"]); @@ -153,8 +153,8 @@ describe("CodePathAnalyzer", function() { }); it("for", function() { - let codePath = parseCodePaths("for (var i = 0; i < 10; ++i) foo(i); bar();")[0]; - let order = getOrderOfTraversing(codePath); + const codePath = parseCodePaths("for (var i = 0; i < 10; ++i) foo(i); bar();")[0]; + const order = getOrderOfTraversing(codePath); assert.deepEqual(order, ["s1_1", "s1_2", "s1_3", "s1_4", "s1_5"]); @@ -174,8 +174,8 @@ describe("CodePathAnalyzer", function() { }); it("for-in", function() { - let codePath = parseCodePaths("for (var key in obj) foo(key); bar();")[0]; - let order = getOrderOfTraversing(codePath); + const codePath = parseCodePaths("for (var key in obj) foo(key); bar();")[0]; + const order = getOrderOfTraversing(codePath); assert.deepEqual(order, ["s1_1", "s1_3", "s1_2", "s1_4", "s1_5"]); @@ -197,8 +197,8 @@ describe("CodePathAnalyzer", function() { }); it("try-catch", function() { - let codePath = parseCodePaths("try { foo(); } catch (e) { bar(); } baz();")[0]; - let order = getOrderOfTraversing(codePath); + const codePath = parseCodePaths("try { foo(); } catch (e) { bar(); } baz();")[0]; + const order = getOrderOfTraversing(codePath); assert.deepEqual(order, ["s1_1", "s1_2", "s1_3", "s1_4"]); @@ -220,8 +220,8 @@ describe("CodePathAnalyzer", function() { }); it("should traverse segments from `options.first` to `options.last`.", function() { - let codePath = parseCodePaths("if (a) { if (b) { foo(); } bar(); } else { out1(); } out2();")[0]; - let order = getOrderOfTraversing(codePath, { + const codePath = parseCodePaths("if (a) { if (b) { foo(); } bar(); } else { out1(); } out2();")[0]; + const order = getOrderOfTraversing(codePath, { first: codePath.initialSegment.nextSegments[0], last: codePath.initialSegment.nextSegments[0].nextSegments[1] }); @@ -248,8 +248,8 @@ describe("CodePathAnalyzer", function() { }); it("should stop immediately when 'controller.break()' was called.", function() { - let codePath = parseCodePaths("if (a) { if (b) { foo(); } bar(); } else { out1(); } out2();")[0]; - let order = getOrderOfTraversing(codePath, null, function(segment, controller) { + const codePath = parseCodePaths("if (a) { if (b) { foo(); } bar(); } else { out1(); } out2();")[0]; + const order = getOrderOfTraversing(codePath, null, function(segment, controller) { if (segment.id === "s1_2") { controller.break(); } @@ -277,8 +277,8 @@ describe("CodePathAnalyzer", function() { }); it("should skip the current branch when 'controller.skip()' was called.", function() { - let codePath = parseCodePaths("if (a) { if (b) { foo(); } bar(); } else { out1(); } out2();")[0]; - let order = getOrderOfTraversing(codePath, null, function(segment, controller) { + const codePath = parseCodePaths("if (a) { if (b) { foo(); } bar(); } else { out1(); } out2();")[0]; + const order = getOrderOfTraversing(codePath, null, function(segment, controller) { if (segment.id === "s1_2") { controller.skip(); } diff --git a/tests/lib/config.js b/tests/lib/config.js index f86ffec32a0..d9e41387cbc 100644 --- a/tests/lib/config.js +++ b/tests/lib/config.js @@ -9,20 +9,20 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, path = require("path"), fs = require("fs"), os = require("os"), Config = require("../../lib/config"), environments = require("../../conf/environments"), sinon = require("sinon"), - proxyquire = require("proxyquire"), mockFs = require("mock-fs"); -let DIRECTORY_CONFIG_HIERARCHY = require("../fixtures/config-hierarchy/file-structure.json"); +const DIRECTORY_CONFIG_HIERARCHY = require("../fixtures/config-hierarchy/file-structure.json"); require("shelljs/global"); -proxyquire = proxyquire.noCallThru().noPreserveCache(); + +const proxyquire = require("proxyquire").noCallThru().noPreserveCache(); /* global mkdir, rm, cp */ @@ -37,10 +37,10 @@ proxyquire = proxyquire.noCallThru().noPreserveCache(); function createStubbedConfigWithPlugins(plugins) { // stub out plugins - let StubbedPlugins = proxyquire("../../lib/config/plugins", plugins); + const StubbedPlugins = proxyquire("../../lib/config/plugins", plugins); // stub out config file to use stubbed plugins - let StubbedConfigFile = proxyquire("../../lib/config/config-file", { + const StubbedConfigFile = proxyquire("../../lib/config/config-file", { "./plugins": StubbedPlugins }); @@ -96,7 +96,7 @@ describe("Config", function() { * @private */ function getFixturePath() { - let args = Array.prototype.slice.call(arguments); + const args = Array.prototype.slice.call(arguments); args.unshift("config-hierarchy"); args.unshift(fixtureDir); @@ -137,7 +137,7 @@ describe("Config", function() { // https://github.com/eslint/eslint/issues/2380 it("should not modify baseConfig when format is specified", function() { - let customBaseConfig = { foo: "bar" }, + const customBaseConfig = { foo: "bar" }, configHelper = new Config({ baseConfig: customBaseConfig, format: "foo" }); // at one point, customBaseConfig.format would end up equal to "foo"...that's bad @@ -154,7 +154,7 @@ describe("Config", function() { * @private */ function getFakeFixturePath() { - let args = Array.prototype.slice.call(arguments); + const args = Array.prototype.slice.call(arguments); args.unshift("config-hierarchy"); args.unshift("fixtures"); @@ -178,7 +178,7 @@ describe("Config", function() { }); it("should return the path when an .eslintrc file is found", function() { - let configHelper = new Config(), + const configHelper = new Config(), expected = getFakeFixturePath("broken", ".eslintrc"), actual = configHelper.findLocalConfigFiles(getFakeFixturePath("broken"))[0]; @@ -186,7 +186,7 @@ describe("Config", function() { }); it("should return an empty array when an .eslintrc file is not found", function() { - let configHelper = new Config(), + const configHelper = new Config(), actual = configHelper.findLocalConfigFiles(getFakeFixturePath()); assert.isArray(actual); @@ -194,7 +194,7 @@ describe("Config", function() { }); it("should return package.json only when no other config files are found", function() { - let configHelper = new Config(), + const configHelper = new Config(), expected0 = getFakeFixturePath("packagejson", "subdir", "package.json"), expected1 = getFakeFixturePath("packagejson", ".eslintrc"), actual = configHelper.findLocalConfigFiles(getFakeFixturePath("packagejson", "subdir")); @@ -206,7 +206,7 @@ describe("Config", function() { }); it("should return the only one config file even if there are multiple found", function() { - let configHelper = new Config(), + const configHelper = new Config(), expected = getFakeFixturePath("broken", ".eslintrc"), // The first element of the array is the .eslintrc in the same directory. @@ -217,7 +217,7 @@ describe("Config", function() { }); it("should return all possible files when multiple are found", function() { - let configHelper = new Config(), + const configHelper = new Config(), expected = [ getFakeFixturePath("fileexts/subdir/subsubdir/", ".eslintrc.json"), getFakeFixturePath("fileexts/subdir/", ".eslintrc.yml"), @@ -230,7 +230,7 @@ describe("Config", function() { }); it("should return an empty array when a package.json file is not found", function() { - let configHelper = new Config(), + const configHelper = new Config(), actual = configHelper.findLocalConfigFiles(getFakeFixturePath()); assert.isArray(actual); @@ -241,7 +241,7 @@ describe("Config", function() { describe("getConfig()", function() { it("should return the project config when called in current working directory", function() { - let configHelper = new Config({cwd: process.cwd()}), + const configHelper = new Config({cwd: process.cwd()}), actual = configHelper.getConfig(); assert.equal(actual.rules.strict[1], "global"); @@ -249,11 +249,11 @@ describe("Config", function() { it("should not retain configs from previous directories when called multiple times", function() { - let firstpath = path.resolve(__dirname, "..", "fixtures", "configurations", "single-quotes", "subdir", ".eslintrc"); - let secondpath = path.resolve(__dirname, "..", "fixtures", "configurations", "single-quotes", ".eslintrc"); + const firstpath = path.resolve(__dirname, "..", "fixtures", "configurations", "single-quotes", "subdir", ".eslintrc"); + const secondpath = path.resolve(__dirname, "..", "fixtures", "configurations", "single-quotes", ".eslintrc"); - let configHelper = new Config({cwd: process.cwd()}), - config; + const configHelper = new Config({cwd: process.cwd()}); + let config; config = configHelper.getConfig(firstpath); assert.equal(config.rules["no-new"], 0); @@ -263,12 +263,12 @@ describe("Config", function() { }); it("should throw an error when an invalid path is given", function() { - let configPath = path.resolve(__dirname, "..", "fixtures", "configurations", "foobaz", ".eslintrc"); - let homePath = "does-not-exist"; + const configPath = path.resolve(__dirname, "..", "fixtures", "configurations", "foobaz", ".eslintrc"); + const homePath = "does-not-exist"; - let StubbedConfig = proxyquire("../../lib/config", { "user-home": homePath }); + const StubbedConfig = proxyquire("../../lib/config", { "user-home": homePath }); - let configHelper = new StubbedConfig({cwd: process.cwd()}); + const configHelper = new StubbedConfig({cwd: process.cwd()}); sandbox.stub(fs, "readdirSync").throws(new Error()); @@ -278,8 +278,8 @@ describe("Config", function() { }); it("should throw error when a configuration file doesn't exist", function() { - let configPath = path.resolve(__dirname, "..", "fixtures", "configurations", ".eslintrc"); - let configHelper = new Config({cwd: process.cwd()}); + const configPath = path.resolve(__dirname, "..", "fixtures", "configurations", ".eslintrc"); + const configHelper = new Config({cwd: process.cwd()}); sandbox.stub(fs, "readFileSync").throws(new Error()); @@ -290,8 +290,8 @@ describe("Config", function() { }); it("should throw error when a configuration file is not require-able", function() { - let configPath = ".eslintrc"; - let configHelper = new Config({cwd: process.cwd()}); + const configPath = ".eslintrc"; + const configHelper = new Config({cwd: process.cwd()}); sandbox.stub(fs, "readFileSync").throws(new Error()); @@ -302,14 +302,14 @@ describe("Config", function() { }); it("should cache config when the same directory is passed twice", function() { - let configPath = path.resolve(__dirname, "..", "fixtures", "configurations", "single-quotes", ".eslintrc"); - let configHelper = new Config({cwd: process.cwd()}); + const configPath = path.resolve(__dirname, "..", "fixtures", "configurations", "single-quotes", ".eslintrc"); + const configHelper = new Config({cwd: process.cwd()}); sandbox.spy(configHelper, "findLocalConfigFiles"); // If cached this should be called only once configHelper.getConfig(configPath); - let callcount = configHelper.findLocalConfigFiles.callcount; + const callcount = configHelper.findLocalConfigFiles.callcount; configHelper.getConfig(configPath); @@ -318,7 +318,7 @@ describe("Config", function() { // make sure JS-style comments don't throw an error it("should load the config file when there are JS-style comments in the text", function() { - let configPath = path.resolve(__dirname, "..", "fixtures", "configurations", "comments.json"), + const configPath = path.resolve(__dirname, "..", "fixtures", "configurations", "comments.json"), configHelper = new Config({configFile: configPath}), semi = configHelper.useSpecificConfig.rules.semi, strict = configHelper.useSpecificConfig.rules.strict; @@ -329,7 +329,7 @@ describe("Config", function() { // make sure YAML files work correctly it("should load the config file when a YAML file is used", function() { - let configPath = path.resolve(__dirname, "..", "fixtures", "configurations", "env-browser.yaml"), + const configPath = path.resolve(__dirname, "..", "fixtures", "configurations", "env-browser.yaml"), configHelper = new Config({configFile: configPath}), noAlert = configHelper.useSpecificConfig.rules["no-alert"], noUndef = configHelper.useSpecificConfig.rules["no-undef"]; @@ -339,7 +339,7 @@ describe("Config", function() { }); it("should contain the correct value for parser when a custom parser is specified", function() { - let configPath = path.resolve(__dirname, "../fixtures/configurations/parser/.eslintrc.json"), + const configPath = path.resolve(__dirname, "../fixtures/configurations/parser/.eslintrc.json"), configHelper = new Config({ cwd: process.cwd() }), config = configHelper.getConfig(configPath); @@ -350,7 +350,7 @@ describe("Config", function() { // https://github.com/eslint/eslint/issues/3915 it("should correctly merge environment settings", function() { - let configHelper = new Config({ useEslintrc: true, cwd: process.cwd() }), + const configHelper = new Config({ useEslintrc: true, cwd: process.cwd() }), file = getFixturePath("envs", "sub", "foo.js"), expected = { rules: {}, @@ -371,7 +371,7 @@ describe("Config", function() { // Default configuration - blank it("should return a blank config when using no .eslintrc", function() { - let configHelper = new Config({ useEslintrc: false }), + const configHelper = new Config({ useEslintrc: false }), file = getFixturePath("broken", "console-wrong-quotes.js"), expected = { rules: {}, @@ -384,7 +384,7 @@ describe("Config", function() { }); it("should return a blank config when baseConfig is set to false and no .eslintrc", function() { - let configHelper = new Config({ baseConfig: false, useEslintrc: false }), + const configHelper = new Config({ baseConfig: false, useEslintrc: false }), file = getFixturePath("broken", "console-wrong-quotes.js"), expected = { rules: {}, @@ -399,7 +399,7 @@ describe("Config", function() { // No default configuration it("should return an empty config when not using .eslintrc", function() { - let configHelper = new Config({ useEslintrc: false }), + const configHelper = new Config({ useEslintrc: false }), file = getFixturePath("broken", "console-wrong-quotes.js"), actual = configHelper.getConfig(file); @@ -409,7 +409,7 @@ describe("Config", function() { it("should return a modified config when baseConfig is set to an object and no .eslintrc", function() { - let configHelper = new Config({ + const configHelper = new Config({ baseConfig: { env: { node: true @@ -435,9 +435,9 @@ describe("Config", function() { }); it("should return a modified config without plugin rules enabled when baseConfig is set to an object with plugin and no .eslintrc", function() { - let customRule = require("../fixtures/rules/custom-rule"); - let examplePluginName = "eslint-plugin-example"; - let requireStubs = {}; + const customRule = require("../fixtures/rules/custom-rule"); + const examplePluginName = "eslint-plugin-example"; + const requireStubs = {}; requireStubs[examplePluginName] = { rules: { "example-rule": customRule }, @@ -446,8 +446,8 @@ describe("Config", function() { rulesConfig: { "example-rule": 1 } }; - let StubbedConfig = proxyquire("../../lib/config", requireStubs); - let configHelper = new StubbedConfig({ + const StubbedConfig = proxyquire("../../lib/config", requireStubs); + const configHelper = new StubbedConfig({ baseConfig: { env: { node: true @@ -476,7 +476,7 @@ describe("Config", function() { // Project configuration - second level .eslintrc it("should merge configs when local .eslintrc overrides parent .eslintrc", function() { - let configHelper = new Config({cwd: process.cwd()}), + const configHelper = new Config({cwd: process.cwd()}), file = getFixturePath("broken", "subbroken", "console-wrong-quotes.js"), expected = { env: { @@ -497,7 +497,7 @@ describe("Config", function() { // Project configuration - third level .eslintrc it("should merge configs when local .eslintrc overrides parent and grandparent .eslintrc", function() { - let configHelper = new Config({cwd: process.cwd()}), + const configHelper = new Config({cwd: process.cwd()}), file = getFixturePath("broken", "subbroken", "subsubbroken", "console-wrong-quotes.js"), expected = { env: { @@ -517,7 +517,7 @@ describe("Config", function() { // Project configuration - root set in second level .eslintrc it("should not return configurations in parents of config with root:true", function() { - let configHelper = new Config({cwd: process.cwd()}), + const configHelper = new Config({cwd: process.cwd()}), file = getFixturePath("root-true", "parent", "root", "wrong-semi.js"), expected = { rules: { @@ -531,7 +531,7 @@ describe("Config", function() { // Project configuration - root set in second level .eslintrc it("should return project config when called with a relative path from a subdir", function() { - let configHelper = new Config({cwd: getFixturePath("root-true", "parent", "root", "subdir")}), + const configHelper = new Config({cwd: getFixturePath("root-true", "parent", "root", "subdir")}), dir = ".", expected = { rules: { @@ -546,7 +546,7 @@ describe("Config", function() { // Command line configuration - --config with first level .eslintrc it("should merge command line config when config file adds to local .eslintrc", function() { - let configHelper = new Config({ + const configHelper = new Config({ configFile: getFixturePath("broken", "add-conf.yaml"), cwd: process.cwd() }), @@ -570,7 +570,7 @@ describe("Config", function() { // Command line configuration - --config with first level .eslintrc it("should merge command line config when config file overrides local .eslintrc", function() { - let configHelper = new Config({ + const configHelper = new Config({ configFile: getFixturePath("broken", "override-conf.yaml"), cwd: process.cwd() }), @@ -593,7 +593,7 @@ describe("Config", function() { // Command line configuration - --config with second level .eslintrc it("should merge command line config when config file adds to local and parent .eslintrc", function() { - let configHelper = new Config({ + const configHelper = new Config({ configFile: getFixturePath("broken", "add-conf.yaml"), cwd: process.cwd() }), @@ -618,7 +618,7 @@ describe("Config", function() { // Command line configuration - --config with second level .eslintrc it("should merge command line config when config file overrides local and parent .eslintrc", function() { - let configHelper = new Config({ + const configHelper = new Config({ configFile: getFixturePath("broken", "override-conf.yaml"), cwd: process.cwd() }), @@ -642,7 +642,7 @@ describe("Config", function() { // Command line configuration - --rule with --config and first level .eslintrc it("should merge command line config and rule when rule and config file overrides local .eslintrc", function() { - let configHelper = new Config({ + const configHelper = new Config({ configFile: getFixturePath("broken", "override-conf.yaml"), rules: { quotes: [1, "double"] @@ -669,12 +669,12 @@ describe("Config", function() { it("should merge command line plugin with local .eslintrc", function() { // stub out Config to use stub config file - let StubbedConfig = createStubbedConfigWithPlugins({ + const StubbedConfig = createStubbedConfigWithPlugins({ "eslint-plugin-example": {}, "eslint-plugin-another-plugin": {} }); - let configHelper = new StubbedConfig({ + const configHelper = new StubbedConfig({ plugins: [ "another-plugin" ], cwd: process.cwd() }), @@ -693,7 +693,7 @@ describe("Config", function() { it("should merge multiple different config file formats", function() { - let configHelper = new Config({cwd: process.cwd()}), + const configHelper = new Config({cwd: process.cwd()}), file = getFixturePath("fileexts/subdir/subsubdir/foo.js"), expected = { env: { @@ -712,38 +712,32 @@ describe("Config", function() { it("should load user config globals", function() { - let expected, - actual, - configPath = path.resolve(__dirname, "..", "fixtures", "globals", "conf.yaml"), + const configPath = path.resolve(__dirname, "..", "fixtures", "globals", "conf.yaml"), configHelper = new Config({ configFile: configPath, useEslintrc: false }); - expected = { + const expected = { globals: { foo: true } }; - actual = configHelper.getConfig(configPath); + const actual = configHelper.getConfig(configPath); assertConfigsEqual(actual, expected); }); it("should not load disabled environments", function() { - let config, configPath, configHelper; - - configPath = path.resolve(__dirname, "..", "fixtures", "environments", "disable.yaml"); + const configPath = path.resolve(__dirname, "..", "fixtures", "environments", "disable.yaml"); - configHelper = new Config({ configFile: configPath, useEslintrc: false }); + const configHelper = new Config({ configFile: configPath, useEslintrc: false }); - config = configHelper.getConfig(configPath); + const config = configHelper.getConfig(configPath); assert.isUndefined(config.globals.window); }); it("should error on fake environments", function() { - let configPath; - - configPath = path.resolve(__dirname, "..", "fixtures", "environments", "fake.yaml"); + const configPath = path.resolve(__dirname, "..", "fixtures", "environments", "fake.yaml"); assert.throw(function() { new Config({ configFile: configPath, useEslintrc: false, cwd: process.cwd() }); // eslint-disable-line no-new @@ -751,7 +745,7 @@ describe("Config", function() { }); it("should gracefully handle empty files", function() { - let configPath = path.resolve(__dirname, "..", "fixtures", "configurations", "env-node.json"), + const configPath = path.resolve(__dirname, "..", "fixtures", "configurations", "env-node.json"), configHelper = new Config({configFile: configPath, cwd: process.cwd()}); configHelper.getConfig(path.resolve(__dirname, "..", "fixtures", "configurations", "empty", "empty.json")); @@ -759,10 +753,10 @@ describe("Config", function() { // Meaningful stack-traces it("should include references to where an `extends` configuration was loaded from", function() { - let configPath = path.resolve(__dirname, "..", "fixtures", "config-extends", "error.json"); + const configPath = path.resolve(__dirname, "..", "fixtures", "config-extends", "error.json"); assert.throws(function() { - let configHelper = new Config({ useEslintrc: false, configFile: configPath }); + const configHelper = new Config({ useEslintrc: false, configFile: configPath }); configHelper.getConfig(configPath); }, /Referenced from:.*?error\.json/); @@ -770,7 +764,7 @@ describe("Config", function() { // Keep order with the last array element taking highest precedence it("should make the last element in an array take the highest precedence", function() { - let configPath = path.resolve(__dirname, "..", "fixtures", "config-extends", "array", ".eslintrc"), + const configPath = path.resolve(__dirname, "..", "fixtures", "config-extends", "array", ".eslintrc"), configHelper = new Config({ useEslintrc: false, configFile: configPath }), expected = { rules: { "no-empty": 1, "comma-dangle": 2, "no-console": 2 }, @@ -783,14 +777,14 @@ describe("Config", function() { describe("with env in a child configuration file", function() { it("should overwrite parserOptions of the parent with env of the child", function() { - let config = new Config({ cwd: process.cwd() }); - let targetPath = getFixturePath("overwrite-ecmaFeatures", "child", "foo.js"); - let expected = { + const config = new Config({ cwd: process.cwd() }); + const targetPath = getFixturePath("overwrite-ecmaFeatures", "child", "foo.js"); + const expected = { rules: {}, env: {commonjs: true}, parserOptions: {ecmaFeatures: {globalReturn: true}} }; - let actual = config.getConfig(targetPath); + const actual = config.getConfig(targetPath); assertConfigsEqual(actual, expected); }); @@ -804,7 +798,7 @@ describe("Config", function() { * @private */ function getFakeFixturePath() { - let args = Array.prototype.slice.call(arguments); + const args = Array.prototype.slice.call(arguments); args.unshift("config-hierarchy"); args.unshift("fixtures"); @@ -833,16 +827,16 @@ describe("Config", function() { }); it("should load the personal config if no local config was found", function() { - let projectPath = getFakeFixturePath("personal-config", "project-without-config"), + const projectPath = getFakeFixturePath("personal-config", "project-without-config"), homePath = getFakeFixturePath("personal-config", "home-folder"), filePath = getFakeFixturePath("personal-config", "project-without-config", "foo.js"); - let StubbedConfig = proxyquire("../../lib/config", { "user-home": homePath }); + const StubbedConfig = proxyquire("../../lib/config", { "user-home": homePath }); mockPersonalConfigFileSystem(); mockCWDResponse(projectPath); - let config = new StubbedConfig({ cwd: process.cwd() }), + const config = new StubbedConfig({ cwd: process.cwd() }), actual = config.getConfig(filePath), expected = { parserOptions: {}, @@ -858,16 +852,16 @@ describe("Config", function() { }); it("should ignore the personal config if a local config was found", function() { - let projectPath = getFakeFixturePath("personal-config", "home-folder", "project"), + const projectPath = getFakeFixturePath("personal-config", "home-folder", "project"), homePath = getFakeFixturePath("personal-config", "home-folder"), filePath = getFakeFixturePath("personal-config", "home-folder", "project", "foo.js"); - let StubbedConfig = proxyquire("../../lib/config", { "user-home": homePath }); + const StubbedConfig = proxyquire("../../lib/config", { "user-home": homePath }); mockPersonalConfigFileSystem(); mockCWDResponse(projectPath); - let config = new StubbedConfig({ cwd: process.cwd() }), + const config = new StubbedConfig({ cwd: process.cwd() }), actual = config.getConfig(filePath), expected = { parserOptions: {}, @@ -883,17 +877,17 @@ describe("Config", function() { }); it("should ignore the personal config if config is passed through cli", function() { - let configPath = getFakeFixturePath("quotes-error.json"); - let projectPath = getFakeFixturePath("personal-config", "project-without-config"), + const configPath = getFakeFixturePath("quotes-error.json"); + const projectPath = getFakeFixturePath("personal-config", "project-without-config"), homePath = getFakeFixturePath("personal-config", "home-folder"), filePath = getFakeFixturePath("personal-config", "project-without-config", "foo.js"); - let StubbedConfig = proxyquire("../../lib/config", { "user-home": homePath }); + const StubbedConfig = proxyquire("../../lib/config", { "user-home": homePath }); mockPersonalConfigFileSystem(); mockCWDResponse(projectPath); - let config = new StubbedConfig({ configFile: configPath, cwd: process.cwd() }), + const config = new StubbedConfig({ configFile: configPath, cwd: process.cwd() }), actual = config.getConfig(filePath), expected = { parserOptions: {}, @@ -909,15 +903,15 @@ describe("Config", function() { }); it("should still load the project config if the current working directory is the same as the home folder", function() { - let projectPath = getFakeFixturePath("personal-config", "project-with-config"), + const projectPath = getFakeFixturePath("personal-config", "project-with-config"), filePath = getFakeFixturePath("personal-config", "project-with-config", "subfolder", "foo.js"); - let StubbedConfig = proxyquire("../../lib/config", { "user-home": projectPath }); + const StubbedConfig = proxyquire("../../lib/config", { "user-home": projectPath }); mockPersonalConfigFileSystem(); mockCWDResponse(projectPath); - let config = new StubbedConfig({ cwd: process.cwd() }), + const config = new StubbedConfig({ cwd: process.cwd() }), actual = config.getConfig(filePath), expected = { parserOptions: {}, @@ -942,7 +936,7 @@ describe("Config", function() { * @private */ function getFakeFixturePath() { - let args = Array.prototype.slice.call(arguments); + const args = Array.prototype.slice.call(arguments); args.unshift("config-hierarchy"); args.unshift("fixtures"); @@ -971,16 +965,16 @@ describe("Config", function() { }); it("should throw an error if no local config and no personal config was found", function() { - let projectPath = getFakeFixturePath("personal-config", "project-without-config"), + const projectPath = getFakeFixturePath("personal-config", "project-without-config"), homePath = getFakeFixturePath("personal-config", "folder-does-not-exist"), filePath = getFakeFixturePath("personal-config", "project-without-config", "foo.js"); - let StubbedConfig = proxyquire("../../lib/config", { "user-home": homePath }); + const StubbedConfig = proxyquire("../../lib/config", { "user-home": homePath }); mockPersonalConfigFileSystem(); mockCWDResponse(projectPath); - let config = new StubbedConfig({ cwd: process.cwd() }); + const config = new StubbedConfig({ cwd: process.cwd() }); assert.throws(function() { config.getConfig(filePath); @@ -988,16 +982,16 @@ describe("Config", function() { }); it("should throw an error if no local config was found and ~/package.json contains no eslintConfig section", function() { - let projectPath = getFakeFixturePath("personal-config", "project-without-config"), + const projectPath = getFakeFixturePath("personal-config", "project-without-config"), homePath = getFakeFixturePath("personal-config", "home-folder-with-packagejson"), filePath = getFakeFixturePath("personal-config", "project-without-config", "foo.js"); - let StubbedConfig = proxyquire("../../lib/config", { "user-home": homePath }); + const StubbedConfig = proxyquire("../../lib/config", { "user-home": homePath }); mockPersonalConfigFileSystem(); mockCWDResponse(projectPath); - let configHelper = new StubbedConfig({ cwd: process.cwd() }); + const configHelper = new StubbedConfig({ cwd: process.cwd() }); assert.throws(function() { configHelper.getConfig(filePath); @@ -1005,16 +999,16 @@ describe("Config", function() { }); it("should not throw an error if no local config and no personal config was found but useEslintrc is false", function() { - let projectPath = getFakeFixturePath("personal-config", "project-without-config"), + const projectPath = getFakeFixturePath("personal-config", "project-without-config"), homePath = getFakeFixturePath("personal-config", "folder-does-not-exist"), filePath = getFakeFixturePath("personal-config", "project-without-config", "foo.js"); - let StubbedConfig = proxyquire("../../lib/config", { "user-home": homePath }); + const StubbedConfig = proxyquire("../../lib/config", { "user-home": homePath }); mockPersonalConfigFileSystem(); mockCWDResponse(projectPath); - let config = new StubbedConfig({ + const config = new StubbedConfig({ cwd: process.cwd(), useEslintrc: false }); @@ -1025,16 +1019,16 @@ describe("Config", function() { }); it("should not throw an error if no local config and no personal config was found but rules are specified", function() { - let projectPath = getFakeFixturePath("personal-config", "project-without-config"), + const projectPath = getFakeFixturePath("personal-config", "project-without-config"), homePath = getFakeFixturePath("personal-config", "folder-does-not-exist"), filePath = getFakeFixturePath("personal-config", "project-without-config", "foo.js"); - let StubbedConfig = proxyquire("../../lib/config", { "user-home": homePath }); + const StubbedConfig = proxyquire("../../lib/config", { "user-home": homePath }); mockPersonalConfigFileSystem(); mockCWDResponse(projectPath); - let config = new StubbedConfig({ + const config = new StubbedConfig({ cwd: process.cwd(), rules: { quotes: [2, "single"] } }); @@ -1045,16 +1039,16 @@ describe("Config", function() { }); it("should not throw an error if no local config and no personal config was found but baseConfig is specified", function() { - let projectPath = getFakeFixturePath("personal-config", "project-without-config"), + const projectPath = getFakeFixturePath("personal-config", "project-without-config"), homePath = getFakeFixturePath("personal-config", "folder-does-not-exist"), filePath = getFakeFixturePath("personal-config", "project-without-config", "foo.js"); - let StubbedConfig = proxyquire("../../lib/config", { "user-home": homePath }); + const StubbedConfig = proxyquire("../../lib/config", { "user-home": homePath }); mockPersonalConfigFileSystem(); mockCWDResponse(projectPath); - let config = new StubbedConfig({ + const config = new StubbedConfig({ cwd: process.cwd(), baseConfig: {} }); @@ -1069,13 +1063,13 @@ describe("Config", function() { describe("Plugin Environments", function() { it("should load environments from plugin", function() { - let StubbedConfig = createStubbedConfigWithPlugins({ + const StubbedConfig = createStubbedConfigWithPlugins({ "eslint-plugin-test": { environments: { example: { globals: { test: false } } } } }); - let configPath = path.resolve(__dirname, "..", "fixtures", "environments", "plugin.yaml"), + const configPath = path.resolve(__dirname, "..", "fixtures", "environments", "plugin.yaml"), configHelper = new StubbedConfig({ reset: true, configFile: configPath, useEslintrc: false }), diff --git a/tests/lib/config/autoconfig.js b/tests/lib/config/autoconfig.js index 1b640df3ccd..595c526a0d5 100644 --- a/tests/lib/config/autoconfig.js +++ b/tests/lib/config/autoconfig.js @@ -9,27 +9,27 @@ // Requirements //------------------------------------------------------------------------------ -let lodash = require("lodash"), +const lodash = require("lodash"), assert = require("chai").assert, autoconfig = require("../../../lib/config/autoconfig"), sourceCodeUtil = require("../../../lib/util/source-code-util"), - defaultOptions = require("../../../conf/cli-options"); + baseDefaultOptions = require("../../../conf/cli-options"); -defaultOptions = lodash.assign({}, defaultOptions, {cwd: process.cwd()}); +const defaultOptions = lodash.assign({}, baseDefaultOptions, {cwd: process.cwd()}); //------------------------------------------------------------------------------ // Data //------------------------------------------------------------------------------ -let SOURCE_CODE_FIXTURE_FILENAME = "./tests/fixtures/autoconfig/source.js"; -let CONFIG_COMMENTS_FILENAME = "./tests/fixtures/autoconfig/source-with-comments.js"; -let SEVERITY = 2; +const SOURCE_CODE_FIXTURE_FILENAME = "./tests/fixtures/autoconfig/source.js"; +const CONFIG_COMMENTS_FILENAME = "./tests/fixtures/autoconfig/source-with-comments.js"; +const SEVERITY = 2; //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let rulesConfig = { +const rulesConfig = { semi: [ SEVERITY, [SEVERITY, "always"], [SEVERITY, "never"] ], "semi-spacing": [ SEVERITY, [ SEVERITY, { before: true, after: true } ], @@ -46,7 +46,7 @@ let rulesConfig = { [ SEVERITY, "backtick", "avoid-escape" ] ] }; -let errorRulesConfig = { +const errorRulesConfig = { "no-unused-vars": [ SEVERITY ], "semi-spacing": [ SEVERITY, [ SEVERITY, { before: true, after: true } ], @@ -61,8 +61,8 @@ describe("autoconfig", function() { describe("Registry", function() { it("should set up a registry for rules in a provided rulesConfig", function() { - let expectedRules = Object.keys(rulesConfig); - let registry = new autoconfig.Registry(rulesConfig); + const expectedRules = Object.keys(rulesConfig); + const registry = new autoconfig.Registry(rulesConfig); assert.equal(Object.keys(registry.rules).length, 3); assert.sameMembers(Object.keys(registry.rules), expectedRules); @@ -75,14 +75,14 @@ describe("autoconfig", function() { }); it("should not have any rules if constructed without a config argument", function() { - let registry = new autoconfig.Registry(); + const registry = new autoconfig.Registry(); assert.isObject(registry.rules); assert.lengthOf(Object.keys(registry.rules), 0); }); it("should create registryItems for each rule with the proper keys", function() { - let registry = new autoconfig.Registry(rulesConfig); + const registry = new autoconfig.Registry(rulesConfig); assert.isObject(registry.rules.semi[0]); assert.isObject(registry.rules["semi-spacing"][0]); @@ -93,7 +93,7 @@ describe("autoconfig", function() { }); it("should populate the config property correctly", function() { - let registry = new autoconfig.Registry(rulesConfig); + const registry = new autoconfig.Registry(rulesConfig); assert.equal(registry.rules.quotes[0].config, SEVERITY); assert.deepEqual(registry.rules.quotes[1].config, [SEVERITY, "single"]); @@ -105,7 +105,7 @@ describe("autoconfig", function() { }); it("should assign the correct specificity", function() { - let registry = new autoconfig.Registry(rulesConfig); + const registry = new autoconfig.Registry(rulesConfig); assert.equal(registry.rules.quotes[0].specificity, 1); assert.equal(registry.rules.quotes[1].specificity, 2); @@ -113,7 +113,7 @@ describe("autoconfig", function() { }); it("should initially leave the errorCount as undefined", function() { - let registry = new autoconfig.Registry(rulesConfig); + const registry = new autoconfig.Registry(rulesConfig); assert.isUndefined(registry.rules.quotes[0].errorCount); assert.isUndefined(registry.rules.quotes[1].errorCount); @@ -123,20 +123,20 @@ describe("autoconfig", function() { describe("populateFromCoreRules()", function() { it("should add core rules to registry", function() { - let registry = new autoconfig.Registry(); + const registry = new autoconfig.Registry(); registry.populateFromCoreRules(); - let finalRuleCount = Object.keys(registry.rules).length; + const finalRuleCount = Object.keys(registry.rules).length; assert(finalRuleCount > 0); assert.include(Object.keys(registry.rules), "eqeqeq"); }); it("should not add duplicate rules", function() { - let registry = new autoconfig.Registry(rulesConfig); + const registry = new autoconfig.Registry(rulesConfig); registry.populateFromCoreRules(); - let semiCount = Object.keys(registry.rules).filter(function(ruleId) { + const semiCount = Object.keys(registry.rules).filter(function(ruleId) { return ruleId === "semi"; }).length; @@ -148,7 +148,7 @@ describe("autoconfig", function() { let ruleSets; beforeEach(function() { - let registry = new autoconfig.Registry(rulesConfig); + const registry = new autoconfig.Registry(rulesConfig); ruleSets = registry.buildRuleSets(); }); @@ -176,15 +176,15 @@ describe("autoconfig", function() { let registry; beforeEach(function() { - let config = {ignore: false}; - let sourceCode = sourceCodeUtil.getSourceCodeOfFiles(SOURCE_CODE_FIXTURE_FILENAME, config); + const config = {ignore: false}; + const sourceCode = sourceCodeUtil.getSourceCodeOfFiles(SOURCE_CODE_FIXTURE_FILENAME, config); registry = new autoconfig.Registry(rulesConfig); registry = registry.lintSourceCode(sourceCode, defaultOptions); }); it("should populate the errorCount of all registryItems", function() { - let expectedRules = ["semi", "semi-spacing", "quotes"]; + const expectedRules = ["semi", "semi-spacing", "quotes"]; assert.sameMembers(Object.keys(registry.rules), expectedRules); expectedRules.forEach(function(ruleId) { @@ -203,9 +203,9 @@ describe("autoconfig", function() { }); it("should respect inline eslint config comments (and not crash when they make linting errors)", function() { - let config = {ignore: false}; - let sourceCode = sourceCodeUtil.getSourceCodeOfFiles(CONFIG_COMMENTS_FILENAME, config); - let expectedRegistry = [ + const config = {ignore: false}; + const sourceCode = sourceCodeUtil.getSourceCodeOfFiles(CONFIG_COMMENTS_FILENAME, config); + const expectedRegistry = [ { config: 2, specificity: 1, errorCount: 3 }, { config: [ 2, "always" ], specificity: 2, errorCount: 3 }, { config: [ 2, "never" ], specificity: 2, errorCount: 3 } @@ -222,8 +222,8 @@ describe("autoconfig", function() { let registry; beforeEach(function() { - let config = {ignore: false}; - let sourceCode = sourceCodeUtil.getSourceCodeOfFiles(SOURCE_CODE_FIXTURE_FILENAME, config); + const config = {ignore: false}; + const sourceCode = sourceCodeUtil.getSourceCodeOfFiles(SOURCE_CODE_FIXTURE_FILENAME, config); registry = new autoconfig.Registry(rulesConfig); registry = registry.lintSourceCode(sourceCode, defaultOptions); @@ -250,8 +250,8 @@ describe("autoconfig", function() { let failingRegistry; beforeEach(function() { - let config = {ignore: false}; - let sourceCode = sourceCodeUtil.getSourceCodeOfFiles(SOURCE_CODE_FIXTURE_FILENAME, config); + const config = {ignore: false}; + const sourceCode = sourceCodeUtil.getSourceCodeOfFiles(SOURCE_CODE_FIXTURE_FILENAME, config); let registry = new autoconfig.Registry(errorRulesConfig); registry = registry.lintSourceCode(sourceCode, defaultOptions); @@ -259,7 +259,7 @@ describe("autoconfig", function() { }); it("should return a registry with no registryItems with an errorCount of zero", function() { - let failingRules = Object.keys(failingRegistry.rules); + const failingRules = Object.keys(failingRegistry.rules); assert.deepEqual(failingRules, ["no-unused-vars"]); assert.lengthOf(failingRegistry.rules["no-unused-vars"], 1); @@ -271,8 +271,8 @@ describe("autoconfig", function() { let createdConfig; beforeEach(function() { - let config = {ignore: false}; - let sourceCode = sourceCodeUtil.getSourceCodeOfFiles(SOURCE_CODE_FIXTURE_FILENAME, config); + const config = {ignore: false}; + const sourceCode = sourceCodeUtil.getSourceCodeOfFiles(SOURCE_CODE_FIXTURE_FILENAME, config); let registry = new autoconfig.Registry(rulesConfig); registry = registry.lintSourceCode(sourceCode, defaultOptions); @@ -285,7 +285,7 @@ describe("autoconfig", function() { }); it("should add rules which have only one registryItem to the config", function() { - let configuredRules = Object.keys(createdConfig.rules); + const configuredRules = Object.keys(createdConfig.rules); assert.deepEqual(configuredRules, ["quotes"]); }); @@ -295,15 +295,15 @@ describe("autoconfig", function() { }); it("should not care how many errors the config has", function() { - let config = {ignore: false}; - let sourceCode = sourceCodeUtil.getSourceCodeOfFiles(SOURCE_CODE_FIXTURE_FILENAME, config); + const config = {ignore: false}; + const sourceCode = sourceCodeUtil.getSourceCodeOfFiles(SOURCE_CODE_FIXTURE_FILENAME, config); let registry = new autoconfig.Registry(errorRulesConfig); registry = registry.lintSourceCode(sourceCode, defaultOptions); - let failingRegistry = registry.getFailingRulesRegistry(); + const failingRegistry = registry.getFailingRulesRegistry(); createdConfig = failingRegistry.createConfig(); - let configuredRules = Object.keys(createdConfig.rules); + const configuredRules = Object.keys(createdConfig.rules); assert.deepEqual(configuredRules, ["no-unused-vars"]); }); @@ -317,9 +317,9 @@ describe("autoconfig", function() { }); it("should return a registry where all configs have a desired specificity", function() { - let filteredRegistry1 = registry.filterBySpecificity(1); - let filteredRegistry2 = registry.filterBySpecificity(2); - let filteredRegistry3 = registry.filterBySpecificity(3); + const filteredRegistry1 = registry.filterBySpecificity(1); + const filteredRegistry2 = registry.filterBySpecificity(2); + const filteredRegistry3 = registry.filterBySpecificity(3); assert.lengthOf(filteredRegistry1.rules.semi, 1); assert.lengthOf(filteredRegistry1.rules["semi-spacing"], 1); diff --git a/tests/lib/config/config-file.js b/tests/lib/config/config-file.js index a1f3bf1d978..98749cef17e 100644 --- a/tests/lib/config/config-file.js +++ b/tests/lib/config/config-file.js @@ -8,34 +8,31 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, leche = require("leche"), sinon = require("sinon"), path = require("path"), fs = require("fs"), - temp = require("temp"), yaml = require("js-yaml"), userHome = require("user-home"), - proxyquire = require("proxyquire"), shell = require("shelljs"), environments = require("../../../conf/environments"), ConfigFile = require("../../../lib/config/config-file"); -temp = temp.track(); +const temp = require("temp").track(); +const proxyquire = require("proxyquire").noCallThru().noPreserveCache(); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -proxyquire = proxyquire.noCallThru().noPreserveCache(); - /* * Project path is the project that is including ESLint as a dependency. In the * case of these tests, it will end up the parent of the "eslint" folder. That's * fine for the purposes of testing because the tests are just relative to an * ancestor location. */ -let PROJECT_PATH = path.resolve(__dirname, "../../../../"), +const PROJECT_PATH = path.resolve(__dirname, "../../../../"), PROJECT_DEPS_PATH = path.join(PROJECT_PATH, "node_modules"); /** @@ -68,7 +65,7 @@ function readJSModule(code) { * @private */ function writeTempConfigFile(config, filename, existingTmpDir) { - let tmpFileDir = existingTmpDir || temp.mkdirSync("eslint-tests-"), + const tmpFileDir = existingTmpDir || temp.mkdirSync("eslint-tests-"), tmpFilePath = path.join(tmpFileDir, filename), tmpFileContents = JSON.stringify(config); @@ -85,7 +82,7 @@ function writeTempConfigFile(config, filename, existingTmpDir) { * @private */ function writeTempJsConfigFile(config, filename, existingTmpDir) { - let tmpFileDir = existingTmpDir || temp.mkdirSync("eslint-tests-"), + const tmpFileDir = existingTmpDir || temp.mkdirSync("eslint-tests-"), tmpFilePath = path.join(tmpFileDir, filename), tmpFileContents = "module.exports = " + JSON.stringify(config); @@ -155,9 +152,9 @@ describe("ConfigFile", function() { it("should apply extension 'foo' when specified from root directory config", function() { - let resolvedPath = path.resolve(PROJECT_PATH, "./node_modules/eslint-config-foo/index.js"); + const resolvedPath = path.resolve(PROJECT_PATH, "./node_modules/eslint-config-foo/index.js"); - let configDeps = { + const configDeps = { // Hacky: need to override isFile for each call for testing "../util/module-resolver": createStubModuleResolver({ "eslint-config-foo": resolvedPath }), @@ -170,9 +167,9 @@ describe("ConfigFile", function() { env: { browser: true } }; - let StubbedConfigFile = proxyquire("../../../lib/config/config-file", configDeps); + const StubbedConfigFile = proxyquire("../../../lib/config/config-file", configDeps); - let config = StubbedConfigFile.applyExtends({ + const config = StubbedConfigFile.applyExtends({ extends: "foo", rules: { eqeqeq: 2 } }, "/whatever"); @@ -189,11 +186,11 @@ describe("ConfigFile", function() { it("should apply all rules when extends config includes 'eslint:all'", function() { - let configDeps = { + const configDeps = { "../util/module-resolver": createStubModuleResolver({}) }; - let StubbedConfigFile = proxyquire("../../../lib/config/config-file", configDeps); - let config = StubbedConfigFile.applyExtends({ + const StubbedConfigFile = proxyquire("../../../lib/config/config-file", configDeps); + const config = StubbedConfigFile.applyExtends({ extends: "eslint:all" }, "/whatever"); @@ -204,11 +201,11 @@ describe("ConfigFile", function() { it("should throw an error when extends config is not found", function() { - let configDeps = { + const configDeps = { "../util/module-resolver": createStubModuleResolver({}) }; - let StubbedConfigFile = proxyquire("../../../lib/config/config-file", configDeps); + const StubbedConfigFile = proxyquire("../../../lib/config/config-file", configDeps); assert.throws(function() { StubbedConfigFile.applyExtends({ @@ -221,12 +218,12 @@ describe("ConfigFile", function() { it("should apply extensions recursively when specified from package", function() { - let resolvedPaths = [ + const resolvedPaths = [ path.resolve(PROJECT_PATH, "./node_modules/eslint-config-foo/index.js"), path.resolve(PROJECT_PATH, "./node_modules/eslint-config-bar/index.js") ]; - let configDeps = { + const configDeps = { "../util/module-resolver": createStubModuleResolver({ "eslint-config-foo": resolvedPaths[0], @@ -248,9 +245,9 @@ describe("ConfigFile", function() { } }; - let StubbedConfigFile = proxyquire("../../../lib/config/config-file", configDeps); + const StubbedConfigFile = proxyquire("../../../lib/config/config-file", configDeps); - let config = StubbedConfigFile.applyExtends({ + const config = StubbedConfigFile.applyExtends({ extends: "foo", rules: { eqeqeq: 2 } }, "/whatever"); @@ -270,7 +267,7 @@ describe("ConfigFile", function() { it("should apply extensions when specified from a JavaScript file", function() { - let config = ConfigFile.applyExtends({ + const config = ConfigFile.applyExtends({ extends: ".eslintrc.js", rules: { eqeqeq: 2 } }, getFixturePath("js/foo.js")); @@ -290,7 +287,7 @@ describe("ConfigFile", function() { it("should apply extensions when specified from a YAML file", function() { - let config = ConfigFile.applyExtends({ + const config = ConfigFile.applyExtends({ extends: ".eslintrc.yaml", rules: { eqeqeq: 2 } }, getFixturePath("yaml/foo.js")); @@ -309,7 +306,7 @@ describe("ConfigFile", function() { it("should apply extensions when specified from a JSON file", function() { - let config = ConfigFile.applyExtends({ + const config = ConfigFile.applyExtends({ extends: ".eslintrc.json", rules: { eqeqeq: 2 } }, getFixturePath("json/foo.js")); @@ -329,7 +326,7 @@ describe("ConfigFile", function() { it("should apply extensions when specified from a package.json file in a sibling directory", function() { - let config = ConfigFile.applyExtends({ + const config = ConfigFile.applyExtends({ extends: "../package-json/package.json", rules: { eqeqeq: 2 } }, getFixturePath("json/foo.js")); @@ -361,7 +358,7 @@ describe("ConfigFile", function() { }); it("should load information from a legacy file", function() { - let config = ConfigFile.load(getFixturePath("legacy/.eslintrc")); + const config = ConfigFile.load(getFixturePath("legacy/.eslintrc")); assert.deepEqual(config, { parserOptions: {}, @@ -374,7 +371,7 @@ describe("ConfigFile", function() { }); it("should load information from a JavaScript file", function() { - let config = ConfigFile.load(getFixturePath("js/.eslintrc.js")); + const config = ConfigFile.load(getFixturePath("js/.eslintrc.js")); assert.deepEqual(config, { parserOptions: {}, @@ -393,7 +390,7 @@ describe("ConfigFile", function() { }); it("should interpret parser module name when present in a JavaScript file", function() { - let config = ConfigFile.load(getFixturePath("js/.eslintrc.parser.js")); + const config = ConfigFile.load(getFixturePath("js/.eslintrc.parser.js")); assert.deepEqual(config, { parser: path.resolve(getFixturePath("js/node_modules/foo/index.js")), @@ -407,7 +404,7 @@ describe("ConfigFile", function() { }); it("should interpret parser path when present in a JavaScript file", function() { - let config = ConfigFile.load(getFixturePath("js/.eslintrc.parser2.js")); + const config = ConfigFile.load(getFixturePath("js/.eslintrc.parser2.js")); assert.deepEqual(config, { parser: path.resolve(getFixturePath("js/not-a-config.js")), @@ -421,7 +418,7 @@ describe("ConfigFile", function() { }); it("should not interpret parser module name or path when parser is set to default parser in a JavaScript file", function() { - let config = ConfigFile.load(getFixturePath("js/.eslintrc.parser3.js")); + const config = ConfigFile.load(getFixturePath("js/.eslintrc.parser3.js")); assert.deepEqual(config, { parser: null, @@ -435,7 +432,7 @@ describe("ConfigFile", function() { }); it("should load information from a JSON file", function() { - let config = ConfigFile.load(getFixturePath("json/.eslintrc.json")); + const config = ConfigFile.load(getFixturePath("json/.eslintrc.json")); assert.deepEqual(config, { parserOptions: {}, @@ -448,7 +445,7 @@ describe("ConfigFile", function() { }); it("should load fresh information from a JSON file", function() { - let initialConfig = { + const initialConfig = { parserOptions: {}, env: {}, globals: {}, @@ -465,8 +462,8 @@ describe("ConfigFile", function() { } }, tmpFilename = "fresh-test.json", - tmpFilePath = writeTempConfigFile(initialConfig, tmpFilename), - config = ConfigFile.load(tmpFilePath); + tmpFilePath = writeTempConfigFile(initialConfig, tmpFilename); + let config = ConfigFile.load(tmpFilePath); assert.deepEqual(config, initialConfig); writeTempConfigFile(updatedConfig, tmpFilename, path.dirname(tmpFilePath)); @@ -475,7 +472,7 @@ describe("ConfigFile", function() { }); it("should load information from a package.json file", function() { - let config = ConfigFile.load(getFixturePath("package-json/package.json")); + const config = ConfigFile.load(getFixturePath("package-json/package.json")); assert.deepEqual(config, { parserOptions: {}, @@ -492,7 +489,7 @@ describe("ConfigFile", function() { }); it("should load information from a package.json file and apply environments", function() { - let config = ConfigFile.load(getFixturePath("package-json/package.json"), true); + const config = ConfigFile.load(getFixturePath("package-json/package.json"), true); assert.deepEqual(config, { parserOptions: { ecmaVersion: 6 }, @@ -503,7 +500,7 @@ describe("ConfigFile", function() { }); it("should load fresh information from a package.json file", function() { - let initialConfig = { + const initialConfig = { eslintConfig: { parserOptions: {}, env: {}, @@ -524,8 +521,8 @@ describe("ConfigFile", function() { } }, tmpFilename = "package.json", - tmpFilePath = writeTempConfigFile(initialConfig, tmpFilename), - config = ConfigFile.load(tmpFilePath); + tmpFilePath = writeTempConfigFile(initialConfig, tmpFilename); + let config = ConfigFile.load(tmpFilePath); assert.deepEqual(config, initialConfig.eslintConfig); writeTempConfigFile(updatedConfig, tmpFilename, path.dirname(tmpFilePath)); @@ -534,7 +531,7 @@ describe("ConfigFile", function() { }); it("should load fresh information from a .eslintrc.js file", function() { - let initialConfig = { + const initialConfig = { parserOptions: {}, env: {}, globals: {}, @@ -551,8 +548,8 @@ describe("ConfigFile", function() { } }, tmpFilename = ".eslintrc.js", - tmpFilePath = writeTempJsConfigFile(initialConfig, tmpFilename), - config = ConfigFile.load(tmpFilePath); + tmpFilePath = writeTempJsConfigFile(initialConfig, tmpFilename); + let config = ConfigFile.load(tmpFilePath); assert.deepEqual(config, initialConfig); writeTempJsConfigFile(updatedConfig, tmpFilename, path.dirname(tmpFilePath)); @@ -561,7 +558,7 @@ describe("ConfigFile", function() { }); it("should load information from a YAML file", function() { - let config = ConfigFile.load(getFixturePath("yaml/.eslintrc.yaml")); + const config = ConfigFile.load(getFixturePath("yaml/.eslintrc.yaml")); assert.deepEqual(config, { parserOptions: {}, @@ -572,7 +569,7 @@ describe("ConfigFile", function() { }); it("should load information from a YAML file", function() { - let config = ConfigFile.load(getFixturePath("yaml/.eslintrc.empty.yaml")); + const config = ConfigFile.load(getFixturePath("yaml/.eslintrc.empty.yaml")); assert.deepEqual(config, { parserOptions: {}, @@ -583,7 +580,7 @@ describe("ConfigFile", function() { }); it("should load information from a YAML file and apply environments", function() { - let config = ConfigFile.load(getFixturePath("yaml/.eslintrc.yaml"), true); + const config = ConfigFile.load(getFixturePath("yaml/.eslintrc.yaml"), true); assert.deepEqual(config, { parserOptions: {}, @@ -594,7 +591,7 @@ describe("ConfigFile", function() { }); it("should load information from a YML file", function() { - let config = ConfigFile.load(getFixturePath("yml/.eslintrc.yml")); + const config = ConfigFile.load(getFixturePath("yml/.eslintrc.yml")); assert.deepEqual(config, { parserOptions: {}, @@ -605,7 +602,7 @@ describe("ConfigFile", function() { }); it("should load information from a YML file and apply environments", function() { - let config = ConfigFile.load(getFixturePath("yml/.eslintrc.yml"), true); + const config = ConfigFile.load(getFixturePath("yml/.eslintrc.yml"), true); assert.deepEqual(config, { parserOptions: {ecmaFeatures: { globalReturn: true }}, @@ -616,7 +613,7 @@ describe("ConfigFile", function() { }); it("should load information from a YML file and apply extensions", function() { - let config = ConfigFile.load(getFixturePath("extends/.eslintrc.yml"), true); + const config = ConfigFile.load(getFixturePath("extends/.eslintrc.yml"), true); assert.deepEqual(config, { extends: "../package-json/package.json", @@ -628,7 +625,7 @@ describe("ConfigFile", function() { }); it("should load information from `extends` chain.", function() { - let config = ConfigFile.load(getFixturePath("extends-chain/.eslintrc.json")); + const config = ConfigFile.load(getFixturePath("extends-chain/.eslintrc.json")); assert.deepEqual(config, { env: {}, @@ -644,7 +641,7 @@ describe("ConfigFile", function() { }); it("should load information from `extends` chain with relative path.", function() { - let config = ConfigFile.load(getFixturePath("extends-chain-2/.eslintrc.json")); + const config = ConfigFile.load(getFixturePath("extends-chain-2/.eslintrc.json")); assert.deepEqual(config, { env: {}, @@ -659,7 +656,7 @@ describe("ConfigFile", function() { }); it("should load information from `extends` chain in .eslintrc with relative path.", function() { - let config = ConfigFile.load(getFixturePath("extends-chain-2/relative.eslintrc.json")); + const config = ConfigFile.load(getFixturePath("extends-chain-2/relative.eslintrc.json")); assert.deepEqual(config, { env: {}, @@ -674,8 +671,8 @@ describe("ConfigFile", function() { }); it("should load information from `parser` in .eslintrc with relative path.", function() { - let config = ConfigFile.load(getFixturePath("extends-chain-2/parser.eslintrc.json")); - let parserPath = getFixturePath("extends-chain-2/parser.js"); + const config = ConfigFile.load(getFixturePath("extends-chain-2/parser.eslintrc.json")); + const parserPath = getFixturePath("extends-chain-2/parser.js"); assert.deepEqual(config, { env: {}, @@ -690,8 +687,8 @@ describe("ConfigFile", function() { let fixturePath = ""; before(function() { - let tempDir = temp.mkdirSync("eslint-test-chain"); - let chain2 = getFixturePath("extends-chain-2"); + const tempDir = temp.mkdirSync("eslint-test-chain"); + const chain2 = getFixturePath("extends-chain-2"); fixturePath = path.join(tempDir, "extends-chain-2"); shell.cp("-r", chain2, fixturePath); @@ -702,7 +699,7 @@ describe("ConfigFile", function() { }); it("should load information from `extends` chain in .eslintrc with relative path.", function() { - let config = ConfigFile.load(path.join(fixturePath, "relative.eslintrc.json")); + const config = ConfigFile.load(path.join(fixturePath, "relative.eslintrc.json")); assert.deepEqual(config, { env: {}, @@ -717,8 +714,8 @@ describe("ConfigFile", function() { }); it("should load information from `parser` in .eslintrc with relative path.", function() { - let config = ConfigFile.load(path.join(fixturePath, "parser.eslintrc.json")); - let parserPath = path.join(fixturePath, "parser.js"); + const config = ConfigFile.load(path.join(fixturePath, "parser.eslintrc.json")); + const parserPath = path.join(fixturePath, "parser.js"); assert.deepEqual(config, { env: {}, @@ -734,7 +731,7 @@ describe("ConfigFile", function() { it("should load information from a YML file and load plugins", function() { - let StubbedPlugins = proxyquire("../../../lib/config/plugins", { + const StubbedPlugins = proxyquire("../../../lib/config/plugins", { "eslint-plugin-test": { environments: { bar: { globals: { bar: true } } @@ -742,11 +739,11 @@ describe("ConfigFile", function() { } }); - let StubbedConfigFile = proxyquire("../../../lib/config/config-file", { + const StubbedConfigFile = proxyquire("../../../lib/config/config-file", { "./plugins": StubbedPlugins }); - let config = StubbedConfigFile.load(getFixturePath("plugins/.eslintrc.yml")); + const config = StubbedConfigFile.load(getFixturePath("plugins/.eslintrc.yml")); assert.deepEqual(config, { parserOptions: {}, @@ -762,7 +759,7 @@ describe("ConfigFile", function() { describe("even if config files have Unicode BOM,", function() { it("should read the JSON config file correctly.", function() { - let config = ConfigFile.load(getFixturePath("bom/.eslintrc.json")); + const config = ConfigFile.load(getFixturePath("bom/.eslintrc.json")); assert.deepEqual(config, { env: {}, @@ -775,7 +772,7 @@ describe("ConfigFile", function() { }); it("should read the YAML config file correctly.", function() { - let config = ConfigFile.load(getFixturePath("bom/.eslintrc.yaml")); + const config = ConfigFile.load(getFixturePath("bom/.eslintrc.yaml")); assert.deepEqual(config, { env: {}, @@ -788,7 +785,7 @@ describe("ConfigFile", function() { }); it("should read the config in package.json correctly.", function() { - let config = ConfigFile.load(getFixturePath("bom/package.json")); + const config = ConfigFile.load(getFixturePath("bom/package.json")); assert.deepEqual(config, { env: {}, @@ -817,7 +814,7 @@ describe("ConfigFile", function() { ], function(input, expected) { it("should return " + expected + " when passed " + input, function() { - let configDeps = { + const configDeps = { "eslint-config-foo": getProjectModulePath("eslint-config-foo"), "eslint-config-eslint-configfoo": getProjectModulePath("eslint-config-eslint-configfoo"), "@foo/eslint-config": getProjectModulePath("@foo/eslint-config"), @@ -825,11 +822,11 @@ describe("ConfigFile", function() { "eslint-plugin-foo": getProjectModulePath("eslint-plugin-foo") }; - let StubbedConfigFile = proxyquire("../../../lib/config/config-file", { + const StubbedConfigFile = proxyquire("../../../lib/config/config-file", { "../util/module-resolver": createStubModuleResolver(configDeps) }); - let result = StubbedConfigFile.resolve(input); + const result = StubbedConfigFile.resolve(input); assert.equal(result.filePath, expected); }); @@ -838,7 +835,7 @@ describe("ConfigFile", function() { describe("Relative to config file", function() { - let relativePath = path.resolve("./foo/bar"); + const relativePath = path.resolve("./foo/bar"); leche.withData([ [ ".eslintrc", path.resolve("./foo/bar", ".eslintrc"), relativePath ], @@ -851,7 +848,7 @@ describe("ConfigFile", function() { ], function(input, expected, relativeTo) { it("should return " + expected + " when passed " + input, function() { - let configDeps = { + const configDeps = { "eslint-config-foo": getRelativeModulePath("eslint-config-foo", relativePath), "eslint-config-eslint-configfoo": getRelativeModulePath("eslint-config-eslint-configfoo", relativePath), "@foo/eslint-config": getRelativeModulePath("@foo/eslint-config", relativePath), @@ -860,11 +857,11 @@ describe("ConfigFile", function() { "@foo/eslint-plugin-bar": getRelativeModulePath("@foo/eslint-plugin-bar", relativePath) }; - let StubbedConfigFile = proxyquire("../../../lib/config/config-file", { + const StubbedConfigFile = proxyquire("../../../lib/config/config-file", { "../util/module-resolver": createStubModuleResolver(configDeps) }); - let result = StubbedConfigFile.resolve(input, relativeTo); + const result = StubbedConfigFile.resolve(input, relativeTo); assert.equal(result.filePath, expected); }); @@ -878,15 +875,15 @@ describe("ConfigFile", function() { ], function(input, expected, relativeTo) { it("should return " + expected + " when passed " + input, function() { - let configDeps = { + const configDeps = { "eslint-config-foo/bar": expected }; - let StubbedConfigFile = proxyquire("../../../lib/config/config-file", { + const StubbedConfigFile = proxyquire("../../../lib/config/config-file", { "../util/module-resolver": createStubModuleResolver(configDeps) }); - let result = StubbedConfigFile.resolve(input, relativeTo); + const result = StubbedConfigFile.resolve(input, relativeTo); assert.equal(result.filePath, expected); }); @@ -902,27 +899,27 @@ describe("ConfigFile", function() { if (userHome) { it("should return project path when config file is in home directory", function() { - let result = ConfigFile.getBaseDir(userHome); + const result = ConfigFile.getBaseDir(userHome); assert.equal(result, PROJECT_PATH); }); } it("should return project path when config file is in an ancestor directory of the project path", function() { - let result = ConfigFile.getBaseDir(path.resolve(PROJECT_PATH, "../../")); + const result = ConfigFile.getBaseDir(path.resolve(PROJECT_PATH, "../../")); assert.equal(result, PROJECT_PATH); }); it("should return config file path when config file is in a descendant directory of the project path", function() { - let configFilePath = path.resolve(PROJECT_PATH, "./foo/bar/"), + const configFilePath = path.resolve(PROJECT_PATH, "./foo/bar/"), result = ConfigFile.getBaseDir(path.resolve(PROJECT_PATH, "./foo/bar/")); assert.equal(result, configFilePath); }); it("should return project path when config file is not an ancestor or descendant of the project path", function() { - let result = ConfigFile.getBaseDir(path.resolve("/tmp/foo")); + const result = ConfigFile.getBaseDir(path.resolve("/tmp/foo")); assert.equal(result, PROJECT_PATH); }); @@ -935,27 +932,27 @@ describe("ConfigFile", function() { if (userHome) { it("should return project path when config file is in home directory", function() { - let result = ConfigFile.getLookupPath(userHome); + const result = ConfigFile.getLookupPath(userHome); assert.equal(result, PROJECT_DEPS_PATH); }); } it("should return project path when config file is in an ancestor directory of the project path", function() { - let result = ConfigFile.getLookupPath(path.resolve(PROJECT_DEPS_PATH, "../../")); + const result = ConfigFile.getLookupPath(path.resolve(PROJECT_DEPS_PATH, "../../")); assert.equal(result, PROJECT_DEPS_PATH); }); it("should return config file path when config file is in a descendant directory of the project path", function() { - let configFilePath = path.resolve(PROJECT_DEPS_PATH, "./foo/bar/node_modules"), + const configFilePath = path.resolve(PROJECT_DEPS_PATH, "./foo/bar/node_modules"), result = ConfigFile.getLookupPath(path.resolve(PROJECT_DEPS_PATH, "./foo/bar/")); assert.equal(result, configFilePath); }); it("should return project path when config file is not an ancestor or descendant of the project path", function() { - let result = ConfigFile.getLookupPath(path.resolve("/tmp/foo")); + const result = ConfigFile.getLookupPath(path.resolve("/tmp/foo")); assert.equal(result, PROJECT_DEPS_PATH); }); @@ -972,7 +969,7 @@ describe("ConfigFile", function() { [ getFixturePath("js"), ".eslintrc.js" ] ], function(input, expected) { it("should return " + expected + " when passed " + input, function() { - let result = ConfigFile.getFilenameForDirectory(input); + const result = ConfigFile.getFilenameForDirectory(input); assert.equal(result, path.resolve(input, expected)); }); @@ -992,7 +989,7 @@ describe("ConfigFile", function() { [ "@z/eslint-config-foo", "@z/eslint-config-foo" ] ], function(input, expected) { it("should return " + expected + " when passed " + input, function() { - let result = ConfigFile.normalizePackageName(input, "eslint-config"); + const result = ConfigFile.normalizePackageName(input, "eslint-config"); assert.equal(result, expected); }); @@ -1031,7 +1028,7 @@ describe("ConfigFile", function() { ], function(fileType, filename, validate) { it("should write a file through fs when a " + fileType + " path is passed", function() { - let fakeFS = leche.fake(fs); + const fakeFS = leche.fake(fs); sandbox.mock(fakeFS).expects("writeFileSync").withExactArgs( filename, @@ -1041,7 +1038,7 @@ describe("ConfigFile", function() { "utf8" ); - let StubbedConfigFile = proxyquire("../../../lib/config/config-file", { + const StubbedConfigFile = proxyquire("../../../lib/config/config-file", { fs: fakeFS }); diff --git a/tests/lib/config/config-initializer.js b/tests/lib/config/config-initializer.js index c506a284972..3bc9bb3e23b 100644 --- a/tests/lib/config/config-initializer.js +++ b/tests/lib/config/config-initializer.js @@ -9,19 +9,17 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, fs = require("fs"), path = require("path"), os = require("os"), sinon = require("sinon"), sh = require("shelljs"), - proxyquire = require("proxyquire"), autoconfig = require("../../../lib/config/autoconfig"), npmUtil = require("../../../lib/util/npm-util"); -let originalDir = process.cwd(); - -proxyquire = proxyquire.noPreserveCache(); +const originalDir = process.cwd(); +const proxyquire = require("proxyquire").noPreserveCache(); //------------------------------------------------------------------------------ // Tests @@ -36,11 +34,11 @@ describe("configInitializer", function() { npmInstallStub, init; - let log = { + const log = { info: sinon.spy(), error: sinon.spy() }; - let requireStubs = { + const requireStubs = { "../logging": log }; @@ -50,7 +48,7 @@ describe("configInitializer", function() { * @private */ function getFixturePath() { - let args = Array.prototype.slice.call(arguments); + const args = Array.prototype.slice.call(arguments); args.unshift(fixtureDir); let filepath = path.join.apply(path, args); @@ -116,7 +114,7 @@ describe("configInitializer", function() { }); it("should create default config", function() { - let config = init.processAnswers(answers); + const config = init.processAnswers(answers); assert.deepEqual(config.rules.indent, ["error", 2]); assert.deepEqual(config.rules.quotes, ["error", "single"]); @@ -130,14 +128,14 @@ describe("configInitializer", function() { it("should disable semi", function() { answers.semi = false; - let config = init.processAnswers(answers); + const config = init.processAnswers(answers); assert.deepEqual(config.rules.semi, ["error", "never"]); }); it("should enable jsx flag", function() { answers.jsx = true; - let config = init.processAnswers(answers); + const config = init.processAnswers(answers); assert.equal(config.parserOptions.ecmaFeatures.jsx, true); }); @@ -145,7 +143,7 @@ describe("configInitializer", function() { it("should enable react plugin", function() { answers.jsx = true; answers.react = true; - let config = init.processAnswers(answers); + const config = init.processAnswers(answers); assert.equal(config.parserOptions.ecmaFeatures.jsx, true); assert.equal(config.parserOptions.ecmaFeatures.experimentalObjectRestSpread, true); @@ -154,26 +152,26 @@ describe("configInitializer", function() { it("should not enable es6", function() { answers.es6 = false; - let config = init.processAnswers(answers); + const config = init.processAnswers(answers); assert.isUndefined(config.env.es6); }); it("should extend eslint:recommended", function() { - let config = init.processAnswers(answers); + const config = init.processAnswers(answers); assert.equal(config.extends, "eslint:recommended"); }); it("should not use commonjs by default", function() { - let config = init.processAnswers(answers); + const config = init.processAnswers(answers); assert.isUndefined(config.env.commonjs); }); it("should use commonjs when set", function() { answers.commonjs = true; - let config = init.processAnswers(answers); + const config = init.processAnswers(answers); assert.isTrue(config.env.commonjs); }); @@ -181,19 +179,19 @@ describe("configInitializer", function() { describe("guide", function() { it("should support the google style guide", function() { - let config = init.getConfigForStyleGuide("google"); + const config = init.getConfigForStyleGuide("google"); assert.deepEqual(config, {extends: "google", installedESLint: true}); }); it("should support the airbnb style guide", function() { - let config = init.getConfigForStyleGuide("airbnb"); + const config = init.getConfigForStyleGuide("airbnb"); assert.deepEqual(config, {extends: "airbnb", installedESLint: true, plugins: ["react"]}); }); it("should support the standard style guide", function() { - let config = init.getConfigForStyleGuide("standard"); + const config = init.getConfigForStyleGuide("standard"); assert.deepEqual(config, {extends: "standard", installedESLint: true, plugins: ["standard", "promise"]}); }); @@ -218,12 +216,11 @@ describe("configInitializer", function() { }); describe("auto", function() { - let config, - completeSpy = sinon.spy(), - sandbox; + const completeSpy = sinon.spy(); + let config; before(function() { - let patterns = [ + const patterns = [ getFixturePath("lib"), getFixturePath("tests") ].join(" "); @@ -239,7 +236,8 @@ describe("configInitializer", function() { commonjs: false }; - sandbox = sinon.sandbox.create(); + const sandbox = sinon.sandbox.create(); + sandbox.stub(console, "log"); // necessary to replace, because of progress bar process.chdir(fixtureDir); @@ -273,7 +271,7 @@ describe("configInitializer", function() { }); it("should throw on fatal parsing error", function() { - let filename = getFixturePath("parse-error"); + const filename = getFixturePath("parse-error"); sinon.stub(autoconfig, "extendFromRecommended"); answers.patterns = filename; diff --git a/tests/lib/config/config-ops.js b/tests/lib/config/config-ops.js index 0dc27b76bed..954f25b2965 100644 --- a/tests/lib/config/config-ops.js +++ b/tests/lib/config/config-ops.js @@ -8,14 +8,13 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, lodash = require("lodash"), leche = require("leche"), environments = require("../../../conf/environments"), - ConfigOps = require("../../../lib/config/config-ops"), - proxyquire = require("proxyquire"); + ConfigOps = require("../../../lib/config/config-ops"); -proxyquire = proxyquire.noCallThru().noPreserveCache(); +const proxyquire = require("proxyquire").noCallThru().noPreserveCache(); //------------------------------------------------------------------------------ // Tests @@ -25,7 +24,7 @@ describe("ConfigOps", function() { describe("applyEnvironments()", function() { it("should apply environment settings to config without destroying original settings", function() { - let config = { + const config = { env: { node: true }, @@ -34,7 +33,7 @@ describe("ConfigOps", function() { } }; - let result = ConfigOps.applyEnvironments(config); + const result = ConfigOps.applyEnvironments(config); assert.deepEqual(result, { env: config.env, @@ -47,19 +46,19 @@ describe("ConfigOps", function() { }); it("should not apply environment settings to config without environments", function() { - let config = { + const config = { rules: { foo: 2 } }; - let result = ConfigOps.applyEnvironments(config); + const result = ConfigOps.applyEnvironments(config); assert.equal(result, config); }); it("should apply multiple environment settings to config without destroying original settings", function() { - let config = { + const config = { env: { node: true, es6: true @@ -69,7 +68,7 @@ describe("ConfigOps", function() { } }; - let result = ConfigOps.applyEnvironments(config); + const result = ConfigOps.applyEnvironments(config); assert.deepEqual(result, { env: config.env, @@ -86,7 +85,7 @@ describe("ConfigOps", function() { describe("createEnvironmentConfig()", function() { it("should return empty config if called without any config", function() { - let config = ConfigOps.createEnvironmentConfig(null); + const config = ConfigOps.createEnvironmentConfig(null); assert.deepEqual(config, { globals: {}, @@ -97,7 +96,7 @@ describe("ConfigOps", function() { }); it("should return correct config for env with no globals", function() { - let StubbedConfigOps = proxyquire("../../../lib/config/config-ops", { + const StubbedConfigOps = proxyquire("../../../lib/config/config-ops", { "./environments": { get: function() { return { @@ -109,7 +108,7 @@ describe("ConfigOps", function() { } }); - let config = StubbedConfigOps.createEnvironmentConfig({ test: true }); + const config = StubbedConfigOps.createEnvironmentConfig({ test: true }); assert.deepEqual(config, { globals: {}, @@ -124,7 +123,7 @@ describe("ConfigOps", function() { }); it("should create the correct config for Node.js environment", function() { - let config = ConfigOps.createEnvironmentConfig({ node: true }); + const config = ConfigOps.createEnvironmentConfig({ node: true }); assert.deepEqual(config, { env: { @@ -139,7 +138,7 @@ describe("ConfigOps", function() { }); it("should create the correct config for ES6 environment", function() { - let config = ConfigOps.createEnvironmentConfig({ es6: true }); + const config = ConfigOps.createEnvironmentConfig({ es6: true }); assert.deepEqual(config, { env: { @@ -154,7 +153,7 @@ describe("ConfigOps", function() { }); it("should create empty config when no environments are specified", function() { - let config = ConfigOps.createEnvironmentConfig({}); + const config = ConfigOps.createEnvironmentConfig({}); assert.deepEqual(config, { env: {}, @@ -165,7 +164,7 @@ describe("ConfigOps", function() { }); it("should create empty config when an unknown environment is specified", function() { - let config = ConfigOps.createEnvironmentConfig({ foo: true }); + const config = ConfigOps.createEnvironmentConfig({ foo: true }); assert.deepEqual(config, { env: { @@ -182,47 +181,47 @@ describe("ConfigOps", function() { describe("merge()", function() { it("should combine two objects when passed two objects with different top-level properties", function() { - let config = [ + const config = [ { env: { browser: true } }, { globals: { foo: "bar"} } ]; - let result = ConfigOps.merge(config[0], config[1]); + const result = ConfigOps.merge(config[0], config[1]); assert.equal(result.globals.foo, "bar"); assert.isTrue(result.env.browser); }); it("should combine without blowing up on null values", function() { - let config = [ + const config = [ { env: { browser: true } }, { env: { node: null } } ]; - let result = ConfigOps.merge(config[0], config[1]); + const result = ConfigOps.merge(config[0], config[1]); assert.equal(result.env.node, null); assert.isTrue(result.env.browser); }); it("should combine two objects with parser when passed two objects with different top-level properties", function() { - let config = [ + const config = [ { env: { browser: true }, parser: "espree" }, { globals: { foo: "bar"} } ]; - let result = ConfigOps.merge(config[0], config[1]); + const result = ConfigOps.merge(config[0], config[1]); assert.equal(result.parser, "espree"); }); it("should combine configs and override rules when passed configs with the same rules", function() { - let config = [ + const config = [ { rules: { "no-mixed-requires": [0, false] } }, { rules: { "no-mixed-requires": [1, true] } } ]; - let result = ConfigOps.merge(config[0], config[1]); + const result = ConfigOps.merge(config[0], config[1]); assert.isArray(result.rules["no-mixed-requires"]); assert.equal(result.rules["no-mixed-requires"][0], 1); @@ -230,12 +229,12 @@ describe("ConfigOps", function() { }); it("should combine configs when passed configs with parserOptions", function() { - let config = [ + const config = [ { parserOptions: { ecmaFeatures: { blockBindings: true } } }, { parserOptions: { ecmaFeatures: { forOf: true } } } ]; - let result = ConfigOps.merge(config[0], config[1]); + const result = ConfigOps.merge(config[0], config[1]); assert.deepEqual(result, { parserOptions: { @@ -252,12 +251,12 @@ describe("ConfigOps", function() { }); it("should override configs when passed configs with the same ecmaFeatures", function() { - let config = [ + const config = [ { parserOptions: { ecmaFeatures: { forOf: false } } }, { parserOptions: { ecmaFeatures: { forOf: true } } } ]; - let result = ConfigOps.merge(config[0], config[1]); + const result = ConfigOps.merge(config[0], config[1]); assert.deepEqual(result, { parserOptions: { @@ -270,12 +269,12 @@ describe("ConfigOps", function() { it("should combine configs and override rules when merging two configs with arrays and int", function() { - let config = [ + const config = [ { rules: { "no-mixed-requires": [0, false] } }, { rules: { "no-mixed-requires": 1 } } ]; - let result = ConfigOps.merge(config[0], config[1]); + const result = ConfigOps.merge(config[0], config[1]); assert.isArray(result.rules["no-mixed-requires"]); assert.equal(result.rules["no-mixed-requires"][0], 1); @@ -286,12 +285,12 @@ describe("ConfigOps", function() { it("should combine configs and override rules options completely", function() { - let config = [ + const config = [ { rules: { "no-mixed-requires": [1, { event: ["evt", "e"] }] } }, { rules: { "no-mixed-requires": [1, { err: ["error", "e"] }] } } ]; - let result = ConfigOps.merge(config[0], config[1]); + const result = ConfigOps.merge(config[0], config[1]); assert.isArray(result.rules["no-mixed-requires"]); assert.deepEqual(result.rules["no-mixed-requires"][1], {err: ["error", "e"]}); @@ -301,12 +300,12 @@ describe("ConfigOps", function() { it("should combine configs and override rules options without array or object", function() { - let config = [ + const config = [ { rules: { "no-mixed-requires": ["warn", "nconf", "underscore"] } }, { rules: { "no-mixed-requires": [2, "requirejs"] } } ]; - let result = ConfigOps.merge(config[0], config[1]); + const result = ConfigOps.merge(config[0], config[1]); assert.strictEqual(result.rules["no-mixed-requires"][0], 2); assert.strictEqual(result.rules["no-mixed-requires"][1], "requirejs"); @@ -317,12 +316,12 @@ describe("ConfigOps", function() { it("should combine configs and override rules options without array or object but special case", function() { - let config = [ + const config = [ { rules: { "no-mixed-requires": [1, "nconf", "underscore"] } }, { rules: { "no-mixed-requires": "error" } } ]; - let result = ConfigOps.merge(config[0], config[1]); + const result = ConfigOps.merge(config[0], config[1]); assert.strictEqual(result.rules["no-mixed-requires"][0], "error"); assert.strictEqual(result.rules["no-mixed-requires"][1], "nconf"); @@ -333,7 +332,7 @@ describe("ConfigOps", function() { it("should combine configs correctly", function() { - let config = [ + const config = [ { rules: { "no-mixed-requires": [1, { event: ["evt", "e"] }], @@ -363,7 +362,7 @@ describe("ConfigOps", function() { } ]; - let result = ConfigOps.merge(config[0], config[1]); + const result = ConfigOps.merge(config[0], config[1]); assert.deepEqual(result, { parserOptions: { @@ -430,10 +429,10 @@ describe("ConfigOps", function() { }); it("should copy deeply if there is not the destination's property", function() { - let a = {}; - let b = {foo: {bar: 1}}; + const a = {}; + const b = {foo: {bar: 1}}; - let result = ConfigOps.merge(a, b); + const result = ConfigOps.merge(a, b); assert(a.foo === void 0); assert(b.foo.bar === 1); @@ -452,11 +451,9 @@ describe("ConfigOps", function() { }); it("should combine the plugin entries when each config has different plugins", function() { - let customConfig = { plugins: ["baz"] }, + const customConfig = { plugins: ["baz"] }, expectedResult = { plugins: ["foo", "bar", "baz"] }, - result; - - result = ConfigOps.merge(baseConfig, customConfig); + result = ConfigOps.merge(baseConfig, customConfig); assert.deepEqual(result, expectedResult); assert.deepEqual(baseConfig, { plugins: ["foo", "bar"] }); @@ -464,20 +461,16 @@ describe("ConfigOps", function() { }); it("should avoid duplicate plugin entries when each config has the same plugin", function() { - let customConfig = { plugins: ["bar"] }, + const customConfig = { plugins: ["bar"] }, expectedResult = { plugins: ["foo", "bar"] }, - result; - - result = ConfigOps.merge(baseConfig, customConfig); + result = ConfigOps.merge(baseConfig, customConfig); assert.deepEqual(result, expectedResult); }); it("should create a valid config when one argument is an empty object", function() { - let customConfig = { plugins: ["foo"] }, - result; - - result = ConfigOps.merge({}, customConfig); + const customConfig = { plugins: ["foo"] }, + result = ConfigOps.merge({}, customConfig); assert.deepEqual(result, customConfig); assert.notEqual(result, customConfig); @@ -489,7 +482,7 @@ describe("ConfigOps", function() { describe("normalize()", function() { it("should convert error rule setting to 2 when rule has just a severity", function() { - let config = { + const config = { rules: { foo: "errOr", bar: "error" @@ -507,7 +500,7 @@ describe("ConfigOps", function() { }); it("should convert error rule setting to 2 when rule has array with severity", function() { - let config = { + const config = { rules: { foo: ["Error", "something"], bar: "error" @@ -525,7 +518,7 @@ describe("ConfigOps", function() { }); it("should convert warn rule setting to 1 when rule has just a severity", function() { - let config = { + const config = { rules: { foo: "waRn", bar: "warn" @@ -543,7 +536,7 @@ describe("ConfigOps", function() { }); it("should convert warn rule setting to 1 when rule has array with severity", function() { - let config = { + const config = { rules: { foo: ["Warn", "something"], bar: "warn" @@ -561,7 +554,7 @@ describe("ConfigOps", function() { }); it("should convert off rule setting to 0 when rule has just a severity", function() { - let config = { + const config = { rules: { foo: "ofF", bar: "off" @@ -579,7 +572,7 @@ describe("ConfigOps", function() { }); it("should convert off rule setting to 0 when rule has array with severity", function() { - let config = { + const config = { rules: { foo: ["Off", "something"], bar: "off" @@ -597,7 +590,7 @@ describe("ConfigOps", function() { }); it("should convert invalid rule setting to 0 when rule has just a severity", function() { - let config = { + const config = { rules: { foo: "invalid", bar: "invalid" @@ -615,7 +608,7 @@ describe("ConfigOps", function() { }); it("should convert invalid rule setting to 0 when rule has array with severity", function() { - let config = { + const config = { rules: { foo: ["invalid", "something"], bar: "invalid" @@ -635,7 +628,7 @@ describe("ConfigOps", function() { describe("normalizeToStrings()", function() { it("should convert 2 rule setting to error when rule has just a severity", function() { - let config = { + const config = { rules: { foo: 2, bar: 2 @@ -653,7 +646,7 @@ describe("ConfigOps", function() { }); it("should convert 2 rule setting to error when rule has array with severity", function() { - let config = { + const config = { rules: { foo: [2, "something"], bar: 2 @@ -671,7 +664,7 @@ describe("ConfigOps", function() { }); it("should convert 1 rule setting to warn when rule has just a severity", function() { - let config = { + const config = { rules: { foo: 1, bar: 1 @@ -689,7 +682,7 @@ describe("ConfigOps", function() { }); it("should convert 1 rule setting to warn when rule has array with severity", function() { - let config = { + const config = { rules: { foo: [1, "something"], bar: 1 @@ -707,7 +700,7 @@ describe("ConfigOps", function() { }); it("should convert 0 rule setting to off when rule has just a severity", function() { - let config = { + const config = { rules: { foo: 0, bar: 0 @@ -725,7 +718,7 @@ describe("ConfigOps", function() { }); it("should convert 0 rule setting to off when rule has array with severity", function() { - let config = { + const config = { rules: { foo: [0, "something"], bar: 0 @@ -743,7 +736,7 @@ describe("ConfigOps", function() { }); it("should convert 256 rule setting to off when rule has just a severity", function() { - let config = { + const config = { rules: { foo: 256, bar: 256 @@ -761,7 +754,7 @@ describe("ConfigOps", function() { }); it("should convert 256 rule setting to off when rule has array with severity", function() { - let config = { + const config = { rules: { foo: [256, "something"], bar: 256 @@ -794,7 +787,7 @@ describe("ConfigOps", function() { ], function(input, expected) { it("should return " + expected + "when passed " + input, function() { - let result = ConfigOps.isErrorSeverity(input); + const result = ConfigOps.isErrorSeverity(input); assert.equal(result, expected); }); diff --git a/tests/lib/config/config-rule.js b/tests/lib/config/config-rule.js index 74f48f07911..6908ebd4fbe 100644 --- a/tests/lib/config/config-rule.js +++ b/tests/lib/config/config-rule.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, ConfigRule = require("../../../lib/config/config-rule"), loadRules = require("../../../lib/load-rules"), schema = require("../../fixtures/config-rule/schemas"); @@ -18,7 +18,7 @@ let assert = require("chai").assert, // Tests //------------------------------------------------------------------------------ -let SEVERITY = 2; +const SEVERITY = 2; describe("ConfigRule", function() { @@ -73,29 +73,29 @@ describe("ConfigRule", function() { // Skip first config (severity only) actualConfigs.slice(1).forEach(function(actualConfig) { - let actualConfigOption = actualConfig[1]; // severity is first element, option is second + const actualConfigOption = actualConfig[1]; // severity is first element, option is second assert.isObject(actualConfigOption); }); }); it("should use the object property name from the schema", function() { - let propName = "enumProperty"; + const propName = "enumProperty"; assert.equal(actualConfigs.length, 3); actualConfigs.slice(1).forEach(function(actualConfig) { - let actualConfigOption = actualConfig[1]; + const actualConfigOption = actualConfig[1]; assert.property(actualConfigOption, propName); }); }); it("should have each enum as option object values", function() { - let propName = "enumProperty", + const propName = "enumProperty", actualValues = []; actualConfigs.slice(1).forEach(function(actualConfig) { - let configOption = actualConfig[1]; + const configOption = actualConfig[1]; actualValues.push(configOption[propName]); }); @@ -110,19 +110,19 @@ describe("ConfigRule", function() { }); it("should create configs for all properties in each config", function() { - let expectedProperties = ["firstEnum", "anotherEnum"]; + const expectedProperties = ["firstEnum", "anotherEnum"]; assert.equal(actualConfigs.length, 7); actualConfigs.slice(1).forEach(function(actualConfig) { - let configOption = actualConfig[1]; - let actualProperties = Object.keys(configOption); + const configOption = actualConfig[1]; + const actualProperties = Object.keys(configOption); assert.sameMembers(actualProperties, expectedProperties); }); }); it("should create configs for every possible combination", function() { - let expectedConfigs = [ + const expectedConfigs = [ { firstEnum: "always", anotherEnum: "var" }, { firstEnum: "always", anotherEnum: "let" }, { firstEnum: "always", anotherEnum: "const" }, @@ -130,7 +130,7 @@ describe("ConfigRule", function() { { firstEnum: "never", anotherEnum: "let" }, { firstEnum: "never", anotherEnum: "const" } ]; - let actualConfigOptions = actualConfigs.slice(1).map(function(actualConfig) { + const actualConfigOptions = actualConfigs.slice(1).map(function(actualConfig) { return actualConfig[1]; }); @@ -148,29 +148,29 @@ describe("ConfigRule", function() { it("should return configs with option objects", function() { assert.equal(actualConfigs.length, 3); actualConfigs.slice(1).forEach(function(actualConfig) { - let actualConfigOption = actualConfig[1]; + const actualConfigOption = actualConfig[1]; assert.isObject(actualConfigOption); }); }); it("should use the object property name from the schema", function() { - let propName = "boolProperty"; + const propName = "boolProperty"; assert.equal(actualConfigs.length, 3); actualConfigs.slice(1).forEach(function(actualConfig) { - let actualConfigOption = actualConfig[1]; + const actualConfigOption = actualConfig[1]; assert.property(actualConfigOption, propName); }); }); it("should include both true and false configs", function() { - let propName = "boolProperty", + const propName = "boolProperty", actualValues = []; actualConfigs.slice(1).forEach(function(actualConfig) { - let configOption = actualConfig[1]; + const configOption = actualConfig[1]; actualValues.push(configOption[propName]); }); @@ -185,25 +185,25 @@ describe("ConfigRule", function() { }); it("should create configs for all properties in each config", function() { - let expectedProperties = ["firstBool", "anotherBool"]; + const expectedProperties = ["firstBool", "anotherBool"]; assert.equal(actualConfigs.length, 5); actualConfigs.slice(1).forEach(function(config) { - let configOption = config[1]; - let actualProperties = Object.keys(configOption); + const configOption = config[1]; + const actualProperties = Object.keys(configOption); assert.sameMembers(actualProperties, expectedProperties); }); }); it("should create configs for every possible combination", function() { - let expectedConfigOptions = [ + const expectedConfigOptions = [ { firstBool: true, anotherBool: true }, { firstBool: true, anotherBool: false }, { firstBool: false, anotherBool: true }, { firstBool: false, anotherBool: false } ]; - let actualConfigOptions = actualConfigs.slice(1).map(function(config) { + const actualConfigOptions = actualConfigs.slice(1).map(function(config) { return config[1]; }); @@ -220,7 +220,7 @@ describe("ConfigRule", function() { it("should create configs with only the enum values", function() { assert.equal(actualConfigs[1].length, 2); assert.equal(actualConfigs[2].length, 2); - let actualOptions = [actualConfigs[1][1], actualConfigs[2][1]]; + const actualOptions = [actualConfigs[1][1], actualConfigs[2][1]]; assert.sameMembers(actualOptions, ["always", "never"]); }); @@ -240,7 +240,7 @@ describe("ConfigRule", function() { }); it("should create config only for the enum", function() { - let expectedConfigs = [2, [2, "always"], [2, "never"]]; + const expectedConfigs = [2, [2, "always"], [2, "never"]]; assert.sameDeepMembers(actualConfigs, expectedConfigs); }); @@ -271,10 +271,10 @@ describe("ConfigRule", function() { describe("createCoreRuleConfigs()", function() { - let rulesConfig = ConfigRule.createCoreRuleConfigs(); + const rulesConfig = ConfigRule.createCoreRuleConfigs(); it("should create a rulesConfig containing all core rules", function() { - let coreRules = loadRules(), + const coreRules = loadRules(), expectedRules = Object.keys(coreRules), actualRules = Object.keys(rulesConfig); diff --git a/tests/lib/config/config-validator.js b/tests/lib/config/config-validator.js index e6ee4f5b363..a6d791da43a 100644 --- a/tests/lib/config/config-validator.js +++ b/tests/lib/config/config-validator.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, eslint = require("../../../lib/eslint"), validator = require("../../../lib/config/config-validator"); @@ -80,61 +80,61 @@ describe("Validator", function() { describe("validate", function() { it("should do nothing with an empty config", function() { - let fn = validator.validate.bind(null, {}, "tests"); + const fn = validator.validate.bind(null, {}, "tests"); assert.doesNotThrow(fn); }); it("should do nothing with an empty rules object", function() { - let fn = validator.validate.bind(null, { rules: {} }, "tests"); + const fn = validator.validate.bind(null, { rules: {} }, "tests"); assert.doesNotThrow(fn); }); it("should do nothing with a valid config", function() { - let fn = validator.validate.bind(null, { rules: { "mock-rule": [2, "second"] } }, "tests"); + const fn = validator.validate.bind(null, { rules: { "mock-rule": [2, "second"] } }, "tests"); assert.doesNotThrow(fn); }); it("should do nothing with a valid config when severity is off", function() { - let fn = validator.validate.bind(null, { rules: { "mock-rule": ["off", "second"] } }, "tests"); + const fn = validator.validate.bind(null, { rules: { "mock-rule": ["off", "second"] } }, "tests"); assert.doesNotThrow(fn); }); it("should do nothing with a valid config when severity is warn", function() { - let fn = validator.validate.bind(null, { rules: { "mock-rule": ["warn", "second"] } }, "tests"); + const fn = validator.validate.bind(null, { rules: { "mock-rule": ["warn", "second"] } }, "tests"); assert.doesNotThrow(fn); }); it("should do nothing with a valid config when severity is error", function() { - let fn = validator.validate.bind(null, { rules: { "mock-rule": ["error", "second"] } }, "tests"); + const fn = validator.validate.bind(null, { rules: { "mock-rule": ["error", "second"] } }, "tests"); assert.doesNotThrow(fn); }); it("should do nothing with a valid config when severity is Off", function() { - let fn = validator.validate.bind(null, { rules: { "mock-rule": ["Off", "second"] } }, "tests"); + const fn = validator.validate.bind(null, { rules: { "mock-rule": ["Off", "second"] } }, "tests"); assert.doesNotThrow(fn); }); it("should do nothing with a valid config when severity is Warn", function() { - let fn = validator.validate.bind(null, { rules: { "mock-rule": ["Warn", "second"] } }, "tests"); + const fn = validator.validate.bind(null, { rules: { "mock-rule": ["Warn", "second"] } }, "tests"); assert.doesNotThrow(fn); }); it("should do nothing with a valid config when severity is Error", function() { - let fn = validator.validate.bind(null, { rules: { "mock-rule": ["Error", "second"] } }, "tests"); + const fn = validator.validate.bind(null, { rules: { "mock-rule": ["Error", "second"] } }, "tests"); assert.doesNotThrow(fn); }); it("should catch invalid rule options", function() { - let fn = validator.validate.bind(null, { rules: { "mock-rule": [3, "third"] } }, "tests"); + const fn = validator.validate.bind(null, { rules: { "mock-rule": [3, "third"] } }, "tests"); assert.throws(fn, "tests:\n\tConfiguration for rule \"mock-rule\" is invalid:\n\tSeverity should be one of the following: 0 = off, 1 = warn, 2 = error (you passed '3').\n\tValue \"third\" must be an enum value.\n"); }); @@ -142,7 +142,7 @@ describe("Validator", function() { it("should allow for rules with no options", function() { eslint.defineRule("mock-no-options-rule", mockNoOptionsRule); - let fn = validator.validate.bind(null, { rules: { "mock-no-options-rule": 2 } }, "tests"); + const fn = validator.validate.bind(null, { rules: { "mock-no-options-rule": 2 } }, "tests"); assert.doesNotThrow(fn); }); @@ -150,37 +150,37 @@ describe("Validator", function() { it("should not allow options for rules with no options", function() { eslint.defineRule("mock-no-options-rule", mockNoOptionsRule); - let fn = validator.validate.bind(null, { rules: { "mock-no-options-rule": [2, "extra"] } }, "tests"); + const fn = validator.validate.bind(null, { rules: { "mock-no-options-rule": [2, "extra"] } }, "tests"); assert.throws(fn, "tests:\n\tConfiguration for rule \"mock-no-options-rule\" is invalid:\n\tValue \"extra\" has more items than allowed.\n"); }); it("should throw with an array environment", function() { - let fn = validator.validate.bind(null, { env: [] }); + const fn = validator.validate.bind(null, { env: [] }); assert.throws(fn, "Environment must not be an array"); }); it("should throw with a primitive environment", function() { - let fn = validator.validate.bind(null, { env: 1 }); + const fn = validator.validate.bind(null, { env: 1 }); assert.throws(fn, "Environment must be an object"); }); it("should catch invalid environments", function() { - let fn = validator.validate.bind(null, { env: {browser: true, invalid: true } }); + const fn = validator.validate.bind(null, { env: {browser: true, invalid: true } }); assert.throws(fn, "Environment key \"invalid\" is unknown\n"); }); it("should catch disabled invalid environments", function() { - let fn = validator.validate.bind(null, { env: {browser: true, invalid: false } }); + const fn = validator.validate.bind(null, { env: {browser: true, invalid: false } }); assert.throws(fn, "Environment key \"invalid\" is unknown\n"); }); it("should do nothing with an undefined environment", function() { - let fn = validator.validate.bind(null, {}); + const fn = validator.validate.bind(null, {}); assert.doesNotThrow(fn); }); @@ -205,43 +205,43 @@ describe("Validator", function() { describe("validateRuleOptions", function() { it("should throw for incorrect warning level number", function() { - let fn = validator.validateRuleOptions.bind(null, "mock-rule", 3, "tests"); + const fn = validator.validateRuleOptions.bind(null, "mock-rule", 3, "tests"); assert.throws(fn, "tests:\n\tConfiguration for rule \"mock-rule\" is invalid:\n\tSeverity should be one of the following: 0 = off, 1 = warn, 2 = error (you passed '3').\n"); }); it("should throw for incorrect warning level string", function() { - let fn = validator.validateRuleOptions.bind(null, "mock-rule", "booya", "tests"); + const fn = validator.validateRuleOptions.bind(null, "mock-rule", "booya", "tests"); assert.throws(fn, "tests:\n\tConfiguration for rule \"mock-rule\" is invalid:\n\tSeverity should be one of the following: 0 = off, 1 = warn, 2 = error (you passed '\"booya\"').\n"); }); it("should throw for invalid-type warning level", function() { - let fn = validator.validateRuleOptions.bind(null, "mock-rule", [["error"]], "tests"); + const fn = validator.validateRuleOptions.bind(null, "mock-rule", [["error"]], "tests"); assert.throws(fn, "tests:\n\tConfiguration for rule \"mock-rule\" is invalid:\n\tSeverity should be one of the following: 0 = off, 1 = warn, 2 = error (you passed '[ \"error\" ]').\n"); }); it("should only check warning level for nonexistent rules", function() { - let fn = validator.validateRuleOptions.bind(null, "non-existent-rule", [3, "foobar"], "tests"); + const fn = validator.validateRuleOptions.bind(null, "non-existent-rule", [3, "foobar"], "tests"); assert.throws(fn, "tests:\n\tConfiguration for rule \"non-existent-rule\" is invalid:\n\tSeverity should be one of the following: 0 = off, 1 = warn, 2 = error (you passed '3').\n"); }); it("should only check warning level for plugin rules", function() { - let fn = validator.validateRuleOptions.bind(null, "plugin/rule", 3, "tests"); + const fn = validator.validateRuleOptions.bind(null, "plugin/rule", 3, "tests"); assert.throws(fn, "tests:\n\tConfiguration for rule \"plugin/rule\" is invalid:\n\tSeverity should be one of the following: 0 = off, 1 = warn, 2 = error (you passed '3').\n"); }); it("should throw for incorrect configuration values", function() { - let fn = validator.validateRuleOptions.bind(null, "mock-rule", [2, "frist"], "tests"); + const fn = validator.validateRuleOptions.bind(null, "mock-rule", [2, "frist"], "tests"); assert.throws(fn, "tests:\n\tConfiguration for rule \"mock-rule\" is invalid:\n\tValue \"frist\" must be an enum value.\n"); }); it("should throw for too many configuration values", function() { - let fn = validator.validateRuleOptions.bind(null, "mock-rule", [2, "first", "second"], "tests"); + const fn = validator.validateRuleOptions.bind(null, "mock-rule", [2, "first", "second"], "tests"); assert.throws(fn, "tests:\n\tConfiguration for rule \"mock-rule\" is invalid:\n\tValue \"first,second\" has more items than allowed.\n"); }); diff --git a/tests/lib/config/environments.js b/tests/lib/config/environments.js index f0cf0e05af3..45c7f79da77 100644 --- a/tests/lib/config/environments.js +++ b/tests/lib/config/environments.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, envs = require("../../../conf/environments"), Environments = require("../../../lib/config/environments"); @@ -42,11 +42,11 @@ describe("Environments", function() { }); it("should add an environment with the given name", function() { - let env = { globals: { foo: true }}; + const env = { globals: { foo: true }}; Environments.define("foo", env); - let result = Environments.get("foo"); + const result = Environments.get("foo"); assert.deepEqual(result, env); }); @@ -59,7 +59,7 @@ describe("Environments", function() { }); it("should import all environments from a plugin object", function() { - let plugin = { + const plugin = { environments: { foo: { globals: { foo: true } @@ -72,7 +72,7 @@ describe("Environments", function() { Environments.importPlugin(plugin, "plugin"); - let fooEnv = Environments.get("plugin/foo"), + const fooEnv = Environments.get("plugin/foo"), barEnv = Environments.get("plugin/bar"); assert.deepEqual(fooEnv, plugin.environments.foo); diff --git a/tests/lib/config/plugins.js b/tests/lib/config/plugins.js index 80fca230591..31d6be54fdb 100644 --- a/tests/lib/config/plugins.js +++ b/tests/lib/config/plugins.js @@ -8,15 +8,10 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, - Plugins = require("../../../lib/config/plugins"), - proxyquire = require("proxyquire"); +const assert = require("chai").assert, + Plugins = require("../../../lib/config/plugins"); -//------------------------------------------------------------------------------ -// Helpers -//------------------------------------------------------------------------------ - -proxyquire = proxyquire.noCallThru().noPreserveCache(); +const proxyquire = require("proxyquire").noCallThru().noPreserveCache(); //------------------------------------------------------------------------------ // Tests @@ -154,13 +149,13 @@ describe("Plugins", function() { describe("removePrefix()", function() { it("should remove common prefix when passed a plugin name with a prefix", function() { - let pluginName = Plugins.removePrefix("eslint-plugin-test"); + const pluginName = Plugins.removePrefix("eslint-plugin-test"); assert.equal(pluginName, "test"); }); it("should not modify plugin name when passed a plugin name without a prefix", function() { - let pluginName = Plugins.removePrefix("test"); + const pluginName = Plugins.removePrefix("test"); assert.equal(pluginName, "test"); }); @@ -168,7 +163,7 @@ describe("Plugins", function() { describe("getNamespace()", function() { it("should remove namepace when passed with namepace", function() { - let namespace = Plugins.getNamespace("@namepace/eslint-plugin-test"); + const namespace = Plugins.getNamespace("@namepace/eslint-plugin-test"); assert.equal(namespace, "@namepace/"); }); @@ -176,7 +171,7 @@ describe("Plugins", function() { describe("removeNamespace()", function() { it("should remove namepace when passed with namepace", function() { - let namespace = Plugins.removeNamespace("@namepace/eslint-plugin-test"); + const namespace = Plugins.removeNamespace("@namepace/eslint-plugin-test"); assert.equal(namespace, "eslint-plugin-test"); }); diff --git a/tests/lib/eslint.js b/tests/lib/eslint.js index 38d08f221d8..d2d1df47e2f 100644 --- a/tests/lib/eslint.js +++ b/tests/lib/eslint.js @@ -31,7 +31,7 @@ function compatRequire(name, windowName) { // Requirements //------------------------------------------------------------------------------ -let assert = compatRequire("chai").assert, +const assert = compatRequire("chai").assert, sinon = compatRequire("sinon"), path = compatRequire("path"), eslint = compatRequire("../../lib/eslint", "eslint"); @@ -40,7 +40,7 @@ let assert = compatRequire("chai").assert, // Constants //------------------------------------------------------------------------------ -let TEST_CODE = "var answer = 6 * 7;", +const TEST_CODE = "var answer = 6 * 7;", BROKEN_TEST_CODE = "var;"; //------------------------------------------------------------------------------ @@ -72,8 +72,8 @@ function getVariable(scope, name) { //------------------------------------------------------------------------------ describe("eslint", function() { - let filename = "filename.js", - sandbox; + const filename = "filename.js"; + let sandbox; beforeEach(function() { sandbox = sinon.sandbox.create(); @@ -85,10 +85,10 @@ describe("eslint", function() { }); describe("when using events", function() { - let code = TEST_CODE; + const code = TEST_CODE; it("an error should be thrown when an error occurs inside of an event handler", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { @@ -104,55 +104,55 @@ describe("eslint", function() { describe("getSourceLines()", function() { it("should get proper lines when using \\n as a line break", function() { - let code = "a;\nb;"; + const code = "a;\nb;"; eslint.verify(code, {}, filename, true); - let lines = eslint.getSourceLines(); + const lines = eslint.getSourceLines(); assert.equal(lines[0], "a;"); assert.equal(lines[1], "b;"); }); it("should get proper lines when using \\r\\n as a line break", function() { - let code = "a;\r\nb;"; + const code = "a;\r\nb;"; eslint.verify(code, {}, filename, true); - let lines = eslint.getSourceLines(); + const lines = eslint.getSourceLines(); assert.equal(lines[0], "a;"); assert.equal(lines[1], "b;"); }); it("should get proper lines when using \\r as a line break", function() { - let code = "a;\rb;"; + const code = "a;\rb;"; eslint.verify(code, {}, filename, true); - let lines = eslint.getSourceLines(); + const lines = eslint.getSourceLines(); assert.equal(lines[0], "a;"); assert.equal(lines[1], "b;"); }); it("should get proper lines when using \\u2028 as a line break", function() { - let code = "a;\u2028b;"; + const code = "a;\u2028b;"; eslint.verify(code, {}, filename, true); - let lines = eslint.getSourceLines(); + const lines = eslint.getSourceLines(); assert.equal(lines[0], "a;"); assert.equal(lines[1], "b;"); }); it("should get proper lines when using \\u2029 as a line break", function() { - let code = "a;\u2029b;"; + const code = "a;\u2029b;"; eslint.verify(code, {}, filename, true); - let lines = eslint.getSourceLines(); + const lines = eslint.getSourceLines(); assert.equal(lines[0], "a;"); assert.equal(lines[1], "b;"); @@ -162,13 +162,13 @@ describe("eslint", function() { }); describe("getSourceCode()", function() { - let code = TEST_CODE; + const code = TEST_CODE; it("should retrieve SourceCode object after reset", function() { eslint.reset(); eslint.verify(code, {}, filename, true); - let sourceCode = eslint.getSourceCode(); + const sourceCode = eslint.getSourceCode(); assert.isObject(sourceCode); assert.equal(sourceCode.text, code); @@ -179,7 +179,7 @@ describe("eslint", function() { eslint.reset(); eslint.verify(code, {}, filename); - let sourceCode = eslint.getSourceCode(); + const sourceCode = eslint.getSourceCode(); assert.isObject(sourceCode); assert.equal(sourceCode.text, code); @@ -189,7 +189,7 @@ describe("eslint", function() { }); describe("getSource()", function() { - let code = TEST_CODE; + const code = TEST_CODE; it("should retrieve all text when used without parameters", function() { @@ -198,12 +198,12 @@ describe("eslint", function() { * @returns {void} */ function handler() { - let source = eslint.getSource(); + const source = eslint.getSource(); assert.equal(source, TEST_CODE); } - let config = { rules: {} }, + const config = { rules: {} }, spy = sandbox.spy(handler); eslint.reset(); @@ -221,12 +221,12 @@ describe("eslint", function() { * @returns {void} */ function handler(node) { - let source = eslint.getSource(node); + const source = eslint.getSource(node); assert.equal(source, TEST_CODE); } - let config = { rules: {} }, + const config = { rules: {} }, spy = sandbox.spy(handler); eslint.reset(); @@ -244,12 +244,12 @@ describe("eslint", function() { * @returns {void} */ function handler(node) { - let source = eslint.getSource(node, 2, 0); + const source = eslint.getSource(node, 2, 0); assert.equal(source, TEST_CODE); } - let config = { rules: {} }, + const config = { rules: {} }, spy = sandbox.spy(handler); eslint.reset(); @@ -260,11 +260,11 @@ describe("eslint", function() { }); it("should retrieve all text for binary expression", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("BinaryExpression", function(node) { - let source = eslint.getSource(node); + const source = eslint.getSource(node); assert.equal(source, "6 * 7"); }); @@ -273,11 +273,11 @@ describe("eslint", function() { }); it("should retrieve all text plus two characters before for binary expression", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("BinaryExpression", function(node) { - let source = eslint.getSource(node, 2); + const source = eslint.getSource(node, 2); assert.equal(source, "= 6 * 7"); }); @@ -286,11 +286,11 @@ describe("eslint", function() { }); it("should retrieve all text plus one character after for binary expression", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("BinaryExpression", function(node) { - let source = eslint.getSource(node, 0, 1); + const source = eslint.getSource(node, 0, 1); assert.equal(source, "6 * 7;"); }); @@ -299,11 +299,11 @@ describe("eslint", function() { }); it("should retrieve all text plus two characters before and one character after for binary expression", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("BinaryExpression", function(node) { - let source = eslint.getSource(node, 2, 1); + const source = eslint.getSource(node, 2, 1); assert.equal(source, "= 6 * 7;"); }); @@ -314,15 +314,15 @@ describe("eslint", function() { }); describe("when calling getAncestors", function() { - let code = TEST_CODE; + const code = TEST_CODE; it("should retrieve all ancestors when used", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("BinaryExpression", function() { - let ancestors = eslint.getAncestors(); + const ancestors = eslint.getAncestors(); assert.equal(ancestors.length, 3); }); @@ -331,11 +331,11 @@ describe("eslint", function() { }); it("should retrieve empty ancestors for root node", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { - let ancestors = eslint.getAncestors(); + const ancestors = eslint.getAncestors(); assert.equal(ancestors.length, 0); }); @@ -345,14 +345,14 @@ describe("eslint", function() { }); describe("when calling getNodeByRangeIndex", function() { - let code = TEST_CODE; + const code = TEST_CODE; it("should retrieve a node starting at the given index", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { - let node = eslint.getNodeByRangeIndex(4); + const node = eslint.getNodeByRangeIndex(4); assert.equal(node.type, "Identifier"); }); @@ -361,11 +361,11 @@ describe("eslint", function() { }); it("should retrieve a node containing the given index", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { - let node = eslint.getNodeByRangeIndex(6); + const node = eslint.getNodeByRangeIndex(6); assert.equal(node.type, "Identifier"); }); @@ -374,11 +374,11 @@ describe("eslint", function() { }); it("should retrieve a node that is exactly the given index", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { - let node = eslint.getNodeByRangeIndex(13); + const node = eslint.getNodeByRangeIndex(13); assert.equal(node.type, "Literal"); assert.equal(node.value, 6); @@ -388,11 +388,11 @@ describe("eslint", function() { }); it("should retrieve a node ending with the given index", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { - let node = eslint.getNodeByRangeIndex(9); + const node = eslint.getNodeByRangeIndex(9); assert.equal(node.type, "Identifier"); }); @@ -401,7 +401,7 @@ describe("eslint", function() { }); it("should retrieve the deepest node containing the given index", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { @@ -416,7 +416,7 @@ describe("eslint", function() { }); it("should return null if the index is outside the range of any node", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { @@ -431,11 +431,11 @@ describe("eslint", function() { }); it("should attach the node's parent", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { - let node = eslint.getNodeByRangeIndex(14); + const node = eslint.getNodeByRangeIndex(14); assert.property(node, "parent"); assert.equal(node.parent.type, "VariableDeclarator"); @@ -445,7 +445,7 @@ describe("eslint", function() { }); it("should not modify the node when attaching the parent", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { @@ -467,14 +467,14 @@ describe("eslint", function() { describe("when calling getScope", function() { - let code = "function foo() { q: for(;;) { break q; } } function bar () { var q = t; } var baz = (() => { return 1; });"; + const code = "function foo() { q: for(;;) { break q; } } function bar () { var q = t; } var baz = (() => { return 1; });"; it("should retrieve the global scope correctly from a Program", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { - let scope = eslint.getScope(); + const scope = eslint.getScope(); assert.equal(scope.type, "global"); }); @@ -483,11 +483,11 @@ describe("eslint", function() { }); it("should retrieve the function scope correctly from a FunctionDeclaration", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("FunctionDeclaration", function() { - let scope = eslint.getScope(); + const scope = eslint.getScope(); assert.equal(scope.type, "function"); }); @@ -496,11 +496,11 @@ describe("eslint", function() { }); it("should retrieve the function scope correctly from a LabeledStatement", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("LabeledStatement", function() { - let scope = eslint.getScope(); + const scope = eslint.getScope(); assert.equal(scope.type, "function"); assert.equal(scope.block.id.name, "foo"); @@ -510,11 +510,11 @@ describe("eslint", function() { }); it("should retrieve the function scope correctly from within an ArrowFunctionExpression", function() { - let config = { rules: {}, ecmaFeatures: { arrowFunctions: true } }; + const config = { rules: {}, ecmaFeatures: { arrowFunctions: true } }; eslint.reset(); eslint.on("ReturnStatement", function() { - let scope = eslint.getScope(); + const scope = eslint.getScope(); assert.equal(scope.type, "function"); assert.equal(scope.block.type, "ArrowFunctionExpression"); @@ -524,11 +524,11 @@ describe("eslint", function() { }); it("should retrieve the function scope correctly from within an SwitchStatement", function() { - let config = { rules: {}, parserOptions: { ecmaVersion: 6 } }; + const config = { rules: {}, parserOptions: { ecmaVersion: 6 } }; eslint.reset(); eslint.on("SwitchStatement", function() { - let scope = eslint.getScope(); + const scope = eslint.getScope(); assert.equal(scope.type, "switch"); assert.equal(scope.block.type, "SwitchStatement"); @@ -538,11 +538,11 @@ describe("eslint", function() { }); it("should retrieve the function scope correctly from within a BlockStatement", function() { - let config = { rules: {}, parserOptions: { ecmaVersion: 6 } }; + const config = { rules: {}, parserOptions: { ecmaVersion: 6 } }; eslint.reset(); eslint.on("BlockStatement", function() { - let scope = eslint.getScope(); + const scope = eslint.getScope(); assert.equal(scope.type, "block"); assert.equal(scope.block.type, "BlockStatement"); @@ -552,11 +552,11 @@ describe("eslint", function() { }); it("should retrieve the function scope correctly from within a nested block statement", function() { - let config = { rules: {}, parserOptions: { ecmaVersion: 6 } }; + const config = { rules: {}, parserOptions: { ecmaVersion: 6 } }; eslint.reset(); eslint.on("BlockStatement", function() { - let scope = eslint.getScope(); + const scope = eslint.getScope(); assert.equal(scope.type, "block"); assert.equal(scope.block.type, "BlockStatement"); @@ -566,11 +566,11 @@ describe("eslint", function() { }); it("should retrieve the function scope correctly from within a FunctionDeclaration", function() { - let config = { rules: {}, parserOptions: { ecmaVersion: 6 } }; + const config = { rules: {}, parserOptions: { ecmaVersion: 6 } }; eslint.reset(); eslint.on("FunctionDeclaration", function() { - let scope = eslint.getScope(); + const scope = eslint.getScope(); assert.equal(scope.type, "function"); assert.equal(scope.block.type, "FunctionDeclaration"); @@ -580,11 +580,11 @@ describe("eslint", function() { }); it("should retrieve the function scope correctly from within a FunctionExpression", function() { - let config = { rules: {}, parserOptions: { ecmaVersion: 6 } }; + const config = { rules: {}, parserOptions: { ecmaVersion: 6 } }; eslint.reset(); eslint.on("FunctionExpression", function() { - let scope = eslint.getScope(); + const scope = eslint.getScope(); assert.equal(scope.type, "function"); assert.equal(scope.block.type, "FunctionExpression"); @@ -594,11 +594,11 @@ describe("eslint", function() { }); it("should retrieve the catch scope correctly from within a CatchClause", function() { - let config = { rules: {}, parserOptions: { ecmaVersion: 6 } }; + const config = { rules: {}, parserOptions: { ecmaVersion: 6 } }; eslint.reset(); eslint.on("CatchClause", function() { - let scope = eslint.getScope(); + const scope = eslint.getScope(); assert.equal(scope.type, "catch"); assert.equal(scope.block.type, "CatchClause"); @@ -608,11 +608,11 @@ describe("eslint", function() { }); it("should retrieve module scope correctly from an ES6 module", function() { - let config = { rules: {}, parserOptions: { sourceType: "module" } }; + const config = { rules: {}, parserOptions: { sourceType: "module" } }; eslint.reset(); eslint.on("AssignmentExpression", function() { - let scope = eslint.getScope(); + const scope = eslint.getScope(); assert.equal(scope.type, "module"); }); @@ -621,11 +621,11 @@ describe("eslint", function() { }); it("should retrieve function scope correctly when globalReturn is true", function() { - let config = { rules: {}, parserOptions: { ecmaFeatures: { globalReturn: true } } }; + const config = { rules: {}, parserOptions: { ecmaFeatures: { globalReturn: true } } }; eslint.reset(); eslint.on("AssignmentExpression", function() { - let scope = eslint.getScope(); + const scope = eslint.getScope(); assert.equal(scope.type, "function"); }); @@ -636,15 +636,13 @@ describe("eslint", function() { describe("marking variables as used", function() { it("should mark variables in current scope as used", function() { - let code = "var a = 1, b = 2;"; + const code = "var a = 1, b = 2;"; eslint.reset(); eslint.on("Program:exit", function() { - let scope; - eslint.markVariableAsUsed("a"); - scope = eslint.getScope(); + const scope = eslint.getScope(); assert.isTrue(getVariable(scope, "a").eslintUsed); assert.notOk(getVariable(scope, "b").eslintUsed); @@ -653,15 +651,13 @@ describe("eslint", function() { eslint.verify(code, {}, filename, true); }); it("should mark variables in function args as used", function() { - let code = "function abc(a, b) { return 1; }"; + const code = "function abc(a, b) { return 1; }"; eslint.reset(); eslint.on("ReturnStatement", function() { - let scope; - eslint.markVariableAsUsed("a"); - scope = eslint.getScope(); + const scope = eslint.getScope(); assert.isTrue(getVariable(scope, "a").eslintUsed); assert.notOk(getVariable(scope, "b").eslintUsed); @@ -670,14 +666,14 @@ describe("eslint", function() { eslint.verify(code, {}, filename, true); }); it("should mark variables in higher scopes as used", function() { - let code = "var a, b; function abc() { return 1; }"; + const code = "var a, b; function abc() { return 1; }"; eslint.reset(); eslint.on("ReturnStatement", function() { eslint.markVariableAsUsed("a"); }); eslint.on("Program:exit", function() { - let scope = eslint.getScope(); + const scope = eslint.getScope(); assert.isTrue(getVariable(scope, "a").eslintUsed); assert.notOk(getVariable(scope, "b").eslintUsed); @@ -687,11 +683,11 @@ describe("eslint", function() { }); it("should mark variables in Node.js environment as used", function() { - let code = "var a = 1, b = 2;"; + const code = "var a = 1, b = 2;"; eslint.reset(); eslint.on("Program:exit", function() { - let globalScope = eslint.getScope(), + const globalScope = eslint.getScope(), childScope = globalScope.childScopes[0]; eslint.markVariableAsUsed("a"); @@ -704,11 +700,11 @@ describe("eslint", function() { }); it("should mark variables in modules as used", function() { - let code = "var a = 1, b = 2;"; + const code = "var a = 1, b = 2;"; eslint.reset(); eslint.on("Program:exit", function() { - let globalScope = eslint.getScope(), + const globalScope = eslint.getScope(), childScope = globalScope.childScopes[0]; eslint.markVariableAsUsed("a"); @@ -735,7 +731,7 @@ describe("eslint", function() { eslint.report("test-rule", 2, node, node.loc.end, "hello {{dynamic}}", {dynamic: node.type}); }); - let messages = eslint.verify("0", config, "", true); + const messages = eslint.verify("0", config, "", true); assert.deepEqual(messages[0], { severity: 2, @@ -753,7 +749,7 @@ describe("eslint", function() { eslint.report("test-rule", 2, node, {line: 42, column: 13}, "hello world"); }); - let messages = eslint.verify("0", config, "", true); + const messages = eslint.verify("0", config, "", true); assert.deepEqual(messages[0], { severity: 2, @@ -807,7 +803,7 @@ describe("eslint", function() { }); it("should throw an error if fix is passed but meta has no `fixable` property", function() { - let meta = { + const meta = { docs: {}, schema: [] }; @@ -836,7 +832,7 @@ describe("eslint", function() { eslint.report("test-rule", 2, node, "my message {{name}}{{0}}", {0: "!", name: "testing"}); }); - let messages = eslint.verify("0", config, "", true); + const messages = eslint.verify("0", config, "", true); assert.deepEqual(messages[0], { severity: 2, @@ -854,7 +850,7 @@ describe("eslint", function() { eslint.report("test-rule", 2, node, "my message {{1}}{{0}}", ["!", "testing"]); }); - let messages = eslint.verify("0", config, "", true); + const messages = eslint.verify("0", config, "", true); assert.deepEqual(messages[0], { severity: 2, @@ -872,7 +868,7 @@ describe("eslint", function() { eslint.report("test-rule", 2, node, "my message {{1}}{{0}}", ["!", "testing"], { range: [1, 1], text: "" }); }); - let messages = eslint.verify("0", config, "", true); + const messages = eslint.verify("0", config, "", true); assert.deepEqual(messages[0], { severity: 2, @@ -900,7 +896,7 @@ describe("eslint", function() { config.rules["test-rule"] = 1; - let messages = eslint.verify("0", config); + const messages = eslint.verify("0", config); assert.equal(messages[0].message, "message yay!"); }); @@ -917,7 +913,7 @@ describe("eslint", function() { config.rules["test-rule"] = 1; - let messages = eslint.verify("0", config); + const messages = eslint.verify("0", config); assert.equal(messages[0].message, "message {{code}}"); }); @@ -936,7 +932,7 @@ describe("eslint", function() { config.rules["test-rule"] = 1; - let messages = eslint.verify("0", config); + const messages = eslint.verify("0", config); assert.equal(messages[0].message, "message yay!"); }); @@ -953,7 +949,7 @@ describe("eslint", function() { config.rules["test-rule"] = 1; - let messages = eslint.verify("0", config); + const messages = eslint.verify("0", config); assert.equal(messages[0].message, "message {{parameter}}"); }); @@ -970,7 +966,7 @@ describe("eslint", function() { config.rules["test-rule"] = "warn"; - let messages = eslint.verify("0", config); + const messages = eslint.verify("0", config); assert.equal(messages[0].severity, 1); assert.equal(messages[0].message, "message {{parameter}}"); @@ -990,7 +986,7 @@ describe("eslint", function() { config.rules["test-rule"] = 1; - let messages = eslint.verify("0", config); + const messages = eslint.verify("0", config); assert.equal(messages[0].message, "message yay!"); }); @@ -1009,7 +1005,7 @@ describe("eslint", function() { config.rules["test-rule"] = 1; - let messages = eslint.verify("0", config); + const messages = eslint.verify("0", config); assert.equal(messages[0].message, "message yay!"); }); @@ -1028,7 +1024,7 @@ describe("eslint", function() { config.rules["test-rule"] = 1; - let messages = eslint.verify("0", config); + const messages = eslint.verify("0", config); assert.equal(messages[0].message, "message yay!"); }); @@ -1047,7 +1043,7 @@ describe("eslint", function() { config.rules["test-rule"] = 1; - let messages = eslint.verify("0", config); + const messages = eslint.verify("0", config); assert.equal(messages[0].message, "message yay!"); }); @@ -1057,7 +1053,7 @@ describe("eslint", function() { eslint.report("test-rule", 2, node, { line: 42, column: 23 }, "my message {{1}}{{0}}", ["!", "testing"], { range: [1, 1], text: "" }); }); - let messages = eslint.verify("0", config, "", true); + const messages = eslint.verify("0", config, "", true); assert.deepEqual(messages[0], { severity: 2, @@ -1081,7 +1077,7 @@ describe("eslint", function() { ); }); - let messages = eslint.verify("0", config, "", true); + const messages = eslint.verify("0", config, "", true); assert.strictEqual(messages[0].endLine, void 0); assert.strictEqual(messages[0].endColumn, void 0); @@ -1098,7 +1094,7 @@ describe("eslint", function() { ); }); - let messages = eslint.verify("0", config, "", true); + const messages = eslint.verify("0", config, "", true); assert.strictEqual(messages[0].endLine, 1); assert.strictEqual(messages[0].endColumn, 2); @@ -1115,7 +1111,7 @@ describe("eslint", function() { ); }); - let messages = eslint.verify("0", config, "", true); + const messages = eslint.verify("0", config, "", true); assert.strictEqual(messages[0].endLine, void 0); assert.strictEqual(messages[0].endColumn, void 0); @@ -1124,13 +1120,13 @@ describe("eslint", function() { }); describe("when evaluating code", function() { - let code = TEST_CODE; + const code = TEST_CODE; it("events for each node type should fire", function() { - let config = { rules: {} }; + const config = { rules: {} }; // spies for various AST node types - let spyLiteral = sinon.spy(), + const spyLiteral = sinon.spy(), spyVariableDeclarator = sinon.spy(), spyVariableDeclaration = sinon.spy(), spyIdentifier = sinon.spy(), @@ -1143,7 +1139,7 @@ describe("eslint", function() { eslint.on("Identifier", spyIdentifier); eslint.on("BinaryExpression", spyBinaryExpression); - let messages = eslint.verify(code, config, filename, true); + const messages = eslint.verify(code, config, filename, true); assert.equal(messages.length, 0); sinon.assert.calledOnce(spyVariableDeclaration); @@ -1155,7 +1151,7 @@ describe("eslint", function() { }); describe("when config has shared settings for rules", function() { - let code = "test-rule"; + const code = "test-rule"; it("should pass settings to all rules", function() { eslint.reset(); @@ -1167,11 +1163,11 @@ describe("eslint", function() { }; }); - let config = { rules: {}, settings: { info: "Hello" } }; + const config = { rules: {}, settings: { info: "Hello" } }; config.rules[code] = 1; - let messages = eslint.verify("0", config, filename); + const messages = eslint.verify("0", config, filename); assert.equal(messages.length, 1); assert.equal(messages[0].message, "Hello"); @@ -1189,11 +1185,11 @@ describe("eslint", function() { }; }); - let config = { rules: {} }; + const config = { rules: {} }; config.rules[code] = 1; - let messages = eslint.verify("0", config, filename); + const messages = eslint.verify("0", config, filename); assert.equal(messages.length, 0); }); @@ -1203,7 +1199,7 @@ describe("eslint", function() { it("should pass ecmaFeatures to all rules when provided on config", function() { - let parserOptions = { + const parserOptions = { ecmaFeatures: { jsx: true, globalReturn: true @@ -1215,21 +1211,21 @@ describe("eslint", function() { sinon.match({parserOptions: parserOptions}) ).returns({})); - let config = { rules: { "test-rule": 2 }, parserOptions: parserOptions }; + const config = { rules: { "test-rule": 2 }, parserOptions: parserOptions }; eslint.verify("0", config, filename); }); it("should pass parserOptions to all rules when default parserOptions is used", function() { - let parserOptions = {}; + const parserOptions = {}; eslint.reset(); eslint.defineRule("test-rule", sandbox.mock().withArgs( sinon.match({parserOptions: parserOptions}) ).returns({})); - let config = { rules: { "test-rule": 2 } }; + const config = { rules: { "test-rule": 2 } }; eslint.verify("0", config, filename); }); @@ -1242,14 +1238,14 @@ describe("eslint", function() { if (typeof window === "undefined") { it("should pass parser as parserPath to all rules when provided on config", function() { - let alternateParser = "esprima-fb"; + const alternateParser = "esprima-fb"; eslint.reset(); eslint.defineRule("test-rule", sandbox.mock().withArgs( sinon.match({parserPath: alternateParser}) ).returns({})); - let config = { rules: { "test-rule": 2 }, parser: alternateParser }; + const config = { rules: { "test-rule": 2 }, parser: alternateParser }; eslint.verify("0", config, filename); }); @@ -1257,14 +1253,14 @@ describe("eslint", function() { it("should pass parser as parserPath to all rules when default parser is used", function() { - let DEFAULT_PARSER = eslint.defaults().parser; + const DEFAULT_PARSER = eslint.defaults().parser; eslint.reset(); eslint.defineRule("test-rule", sandbox.mock().withArgs( sinon.match({parserPath: DEFAULT_PARSER}) ).returns({})); - let config = { rules: { "test-rule": 2 } }; + const config = { rules: { "test-rule": 2 } }; eslint.verify("0", config, filename); }); @@ -1273,29 +1269,29 @@ describe("eslint", function() { describe("when passing in configuration values for rules", function() { - let code = "var answer = 6 * 7"; + const code = "var answer = 6 * 7"; it("should be configurable by only setting the integer value", function() { - let rule = "semi", + const rule = "semi", config = { rules: {} }; config.rules[rule] = 1; eslint.reset(); - let messages = eslint.verify(code, config, filename, true); + const messages = eslint.verify(code, config, filename, true); assert.equal(messages.length, 1); assert.equal(messages[0].ruleId, rule); }); it("should be configurable by only setting the string value", function() { - let rule = "semi", + const rule = "semi", config = { rules: {} }; config.rules[rule] = "warn"; eslint.reset(); - let messages = eslint.verify(code, config, filename, true); + const messages = eslint.verify(code, config, filename, true); assert.equal(messages.length, 1); assert.equal(messages[0].severity, 1); @@ -1303,26 +1299,26 @@ describe("eslint", function() { }); it("should be configurable by passing in values as an array", function() { - let rule = "semi", + const rule = "semi", config = { rules: {} }; config.rules[rule] = [1]; eslint.reset(); - let messages = eslint.verify(code, config, filename, true); + const messages = eslint.verify(code, config, filename, true); assert.equal(messages.length, 1); assert.equal(messages[0].ruleId, rule); }); it("should be configurable by passing in string value as an array", function() { - let rule = "semi", + const rule = "semi", config = { rules: {} }; config.rules[rule] = ["warn"]; eslint.reset(); - let messages = eslint.verify(code, config, filename, true); + const messages = eslint.verify(code, config, filename, true); assert.equal(messages.length, 1); assert.equal(messages[0].severity, 1); @@ -1330,36 +1326,36 @@ describe("eslint", function() { }); it("should not be configurable by setting other value", function() { - let rule = "semi", + const rule = "semi", config = { rules: {} }; config.rules[rule] = "1"; eslint.reset(); - let messages = eslint.verify(code, config, filename, true); + const messages = eslint.verify(code, config, filename, true); assert.equal(messages.length, 0); }); it("should process empty config", function() { - let config = {}; + const config = {}; eslint.reset(); - let messages = eslint.verify(code, config, filename, true); + const messages = eslint.verify(code, config, filename, true); assert.equal(messages.length, 0); }); }); describe("after calling reset()", function() { - let code = TEST_CODE; + const code = TEST_CODE; it("previously registered event handlers should not be called", function() { - let config = { rules: {} }; + const config = { rules: {} }; // spies for various AST node types - let spyLiteral = sinon.spy(), + const spyLiteral = sinon.spy(), spyVariableDeclarator = sinon.spy(), spyVariableDeclaration = sinon.spy(), spyIdentifier = sinon.spy(), @@ -1373,7 +1369,7 @@ describe("eslint", function() { eslint.on("BinaryExpression", spyBinaryExpression); eslint.reset(); - let messages = eslint.verify(code, config, filename, true); + const messages = eslint.verify(code, config, filename, true); assert.equal(messages.length, 0); sinon.assert.notCalled(spyVariableDeclaration); @@ -1384,10 +1380,10 @@ describe("eslint", function() { }); it("text should not be available", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); - let messages = eslint.verify(code, config, filename, true); + const messages = eslint.verify(code, config, filename, true); eslint.reset(); @@ -1396,10 +1392,10 @@ describe("eslint", function() { }); it("source for nodes should not be available", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); - let messages = eslint.verify(code, config, filename, true); + const messages = eslint.verify(code, config, filename, true); eslint.reset(); @@ -1409,15 +1405,15 @@ describe("eslint", function() { }); describe("when evaluating code containing /*global */ and /*globals */ blocks", function() { - let code = "/*global a b:true c:false*/ function foo() {} /*globals d:true*/"; + const code = "/*global a b:true c:false*/ function foo() {} /*globals d:true*/"; it("variables should be available in global scope", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { - let scope = eslint.getScope(); - let a = getVariable(scope, "a"), + const scope = eslint.getScope(); + const a = getVariable(scope, "a"), b = getVariable(scope, "b"), c = getVariable(scope, "c"), d = getVariable(scope, "d"); @@ -1437,14 +1433,14 @@ describe("eslint", function() { }); describe("when evaluating code containing a /*global */ block with sloppy whitespace", function() { - let code = "/* global a b : true c: false*/"; + const code = "/* global a b : true c: false*/"; it("variables should be available in global scope", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { - let scope = eslint.getScope(), + const scope = eslint.getScope(), a = getVariable(scope, "a"), b = getVariable(scope, "b"), c = getVariable(scope, "c"); @@ -1463,12 +1459,12 @@ describe("eslint", function() { describe("when evaluating code containing /*eslint-env */ block", function() { it("variables should be available in global scope", function() { - let code = "/*eslint-env node*/ function f() {} /*eslint-env browser, foo*/"; - let config = { rules: {} }; + const code = "/*eslint-env node*/ function f() {} /*eslint-env browser, foo*/"; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { - let scope = eslint.getScope(), + const scope = eslint.getScope(), exports = getVariable(scope, "exports"), window = getVariable(scope, "window"); @@ -1480,14 +1476,14 @@ describe("eslint", function() { }); describe("when evaluating code containing /*eslint-env */ block with sloppy whitespace", function() { - let code = "/* eslint-env ,, node , no-browser ,, */"; + const code = "/* eslint-env ,, node , no-browser ,, */"; it("variables should be available in global scope", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { - let scope = eslint.getScope(), + const scope = eslint.getScope(), exports = getVariable(scope, "exports"), window = getVariable(scope, "window"); @@ -1501,20 +1497,20 @@ describe("eslint", function() { describe("when evaluating code containing /*exported */ block", function() { it("we should behave nicely when no matching variable is found", function() { - let code = "/* exported horse */"; - let config = { rules: {} }; + const code = "/* exported horse */"; + const config = { rules: {} }; eslint.reset(); eslint.verify(code, config, filename, true); }); it("variables should be exported", function() { - let code = "/* exported horse */\n\nvar horse = 'circus'"; - let config = { rules: {} }; + const code = "/* exported horse */\n\nvar horse = 'circus'"; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { - let scope = eslint.getScope(), + const scope = eslint.getScope(), horse = getVariable(scope, "horse"); assert.equal(horse.eslintUsed, true); @@ -1523,12 +1519,12 @@ describe("eslint", function() { }); it("undefined variables should not be exported", function() { - let code = "/* exported horse */\n\nhorse = 'circus'"; - let config = { rules: {} }; + const code = "/* exported horse */\n\nhorse = 'circus'"; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { - let scope = eslint.getScope(), + const scope = eslint.getScope(), horse = getVariable(scope, "horse"); assert.equal(horse, null); @@ -1537,12 +1533,12 @@ describe("eslint", function() { }); it("variables should be exported in strict mode", function() { - let code = "/* exported horse */\n'use strict';\nvar horse = 'circus'"; - let config = { rules: {} }; + const code = "/* exported horse */\n'use strict';\nvar horse = 'circus'"; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { - let scope = eslint.getScope(), + const scope = eslint.getScope(), horse = getVariable(scope, "horse"); assert.equal(horse.eslintUsed, true); @@ -1551,12 +1547,12 @@ describe("eslint", function() { }); it("variables should not be exported in the es6 module environment", function() { - let code = "/* exported horse */\nvar horse = 'circus'"; - let config = { rules: {}, parserOptions: { sourceType: "module" }}; + const code = "/* exported horse */\nvar horse = 'circus'"; + const config = { rules: {}, parserOptions: { sourceType: "module" }}; eslint.reset(); eslint.on("Program", function() { - let scope = eslint.getScope(), + const scope = eslint.getScope(), horse = getVariable(scope, "horse"); assert.equal(horse, null); // there is no global scope at all @@ -1565,12 +1561,12 @@ describe("eslint", function() { }); it("variables should not be exported when in the node environment", function() { - let code = "/* exported horse */\nvar horse = 'circus'"; - let config = { rules: {}, env: { node: true } }; + const code = "/* exported horse */\nvar horse = 'circus'"; + const config = { rules: {}, env: { node: true } }; eslint.reset(); eslint.on("Program", function() { - let scope = eslint.getScope(), + const scope = eslint.getScope(), horse = getVariable(scope, "horse"); assert.equal(horse, null); // there is no global scope at all @@ -1580,15 +1576,15 @@ describe("eslint", function() { }); describe("when evaluating code containing a line comment", function() { - let code = "//global a \n function f() {}"; + const code = "//global a \n function f() {}"; it("should not introduce a global variable", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { - let scope = eslint.getScope(); + const scope = eslint.getScope(); assert.equal(getVariable(scope, "a"), null); }); @@ -1597,14 +1593,14 @@ describe("eslint", function() { }); describe("when evaluating code containing normal block comments", function() { - let code = "/**/ /*a*/ /*b:true*/ /*foo c:false*/"; + const code = "/**/ /*a*/ /*b:true*/ /*foo c:false*/"; it("should not introduce a global variable", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { - let scope = eslint.getScope(); + const scope = eslint.getScope(); assert.equal(getVariable(scope, "a"), null); assert.equal(getVariable(scope, "b"), null); @@ -1616,14 +1612,14 @@ describe("eslint", function() { }); describe("when evaluating any code", function() { - let code = ""; + const code = ""; it("builtin global variables should be available in the global scope", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { - let scope = eslint.getScope(); + const scope = eslint.getScope(); assert.notEqual(getVariable(scope, "Object"), null); assert.notEqual(getVariable(scope, "Array"), null); @@ -1633,11 +1629,11 @@ describe("eslint", function() { }); it("ES6 global variables should not be available by default", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { - let scope = eslint.getScope(); + const scope = eslint.getScope(); assert.equal(getVariable(scope, "Promise"), null); assert.equal(getVariable(scope, "Symbol"), null); @@ -1647,11 +1643,11 @@ describe("eslint", function() { }); it("ES6 global variables should be available in the es6 environment", function() { - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("Program", function() { - let scope = eslint.getScope(); + const scope = eslint.getScope(); assert.notEqual(getVariable(scope, "Promise"), null); assert.notEqual(getVariable(scope, "Symbol"), null); @@ -1662,7 +1658,7 @@ describe("eslint", function() { }); describe("when evaluating empty code", function() { - let code = "", + const code = "", config = { rules: {} }; it("getSource() should return an empty string", function() { @@ -1673,7 +1669,7 @@ describe("eslint", function() { }); describe("at any time", function() { - let code = "new-rule"; + const code = "new-rule"; it("can add a rule dynamically", function() { eslint.reset(); @@ -1685,11 +1681,11 @@ describe("eslint", function() { }; }); - let config = { rules: {} }; + const config = { rules: {} }; config.rules[code] = 1; - let messages = eslint.verify("0", config, filename); + const messages = eslint.verify("0", config, filename); assert.equal(messages.length, 1); assert.equal(messages[0].ruleId, code); @@ -1698,12 +1694,12 @@ describe("eslint", function() { }); describe("at any time", function() { - let code = ["new-rule-0", "new-rule-1"]; + const code = ["new-rule-0", "new-rule-1"]; it("can add multiple rules dynamically", function() { eslint.reset(); - let config = { rules: {} }; - let newRules = {}; + const config = { rules: {} }; + const newRules = {}; code.forEach(function(item) { config.rules[item] = 1; @@ -1717,7 +1713,7 @@ describe("eslint", function() { }); eslint.defineRules(newRules); - let messages = eslint.verify("0", config, filename); + const messages = eslint.verify("0", config, filename); assert.equal(messages.length, code.length); code.forEach(function(item) { @@ -1732,7 +1728,7 @@ describe("eslint", function() { }); describe("at any time", function() { - let code = "filename-rule"; + const code = "filename-rule"; it("has access to the filename", function() { eslint.reset(); @@ -1744,11 +1740,11 @@ describe("eslint", function() { }; }); - let config = { rules: {} }; + const config = { rules: {} }; config.rules[code] = 1; - let messages = eslint.verify("0", config, filename); + const messages = eslint.verify("0", config, filename); assert.equal(messages[0].message, filename); }); @@ -1763,11 +1759,11 @@ describe("eslint", function() { }; }); - let config = { rules: {} }; + const config = { rules: {} }; config.rules[code] = 1; - let messages = eslint.verify("0", config); + const messages = eslint.verify("0", config); assert.equal(messages[0].message, ""); }); @@ -1776,10 +1772,10 @@ describe("eslint", function() { describe("when evaluating code with comments to enable rules", function() { it("should report a violation", function() { - let code = "/*eslint no-alert:1*/ alert('test');"; - let config = { rules: {} }; + const code = "/*eslint no-alert:1*/ alert('test');"; + const config = { rules: {} }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 1); assert.equal(messages[0].ruleId, "no-alert"); @@ -1788,9 +1784,9 @@ describe("eslint", function() { }); it("rules should not change initial config", function() { - let config = { rules: {strict: 2} }; - let codeA = "/*eslint strict: 0*/ function bar() { return 2; }"; - let codeB = "function foo() { return 1; }"; + const config = { rules: {strict: 2} }; + const codeA = "/*eslint strict: 0*/ function bar() { return 2; }"; + const codeB = "function foo() { return 1; }"; eslint.reset(); let messages = eslint.verify(codeA, config, filename, false); @@ -1802,9 +1798,9 @@ describe("eslint", function() { }); it("rules should not change initial config", function() { - let config = { rules: {quotes: [2, "double"]} }; - let codeA = "/*eslint quotes: 0*/ function bar() { return '2'; }"; - let codeB = "function foo() { return '1'; }"; + const config = { rules: {quotes: [2, "double"]} }; + const codeA = "/*eslint quotes: 0*/ function bar() { return '2'; }"; + const codeB = "function foo() { return '1'; }"; eslint.reset(); let messages = eslint.verify(codeA, config, filename, false); @@ -1816,9 +1812,9 @@ describe("eslint", function() { }); it("rules should not change initial config", function() { - let config = { rules: {quotes: [2, "double"]} }; - let codeA = "/*eslint quotes: [0, \"single\"]*/ function bar() { return '2'; }"; - let codeB = "function foo() { return '1'; }"; + const config = { rules: {quotes: [2, "double"]} }; + const codeA = "/*eslint quotes: [0, \"single\"]*/ function bar() { return '2'; }"; + const codeB = "function foo() { return '1'; }"; eslint.reset(); let messages = eslint.verify(codeA, config, filename, false); @@ -1830,9 +1826,9 @@ describe("eslint", function() { }); it("rules should not change initial config", function() { - let config = { rules: {"no-unused-vars": [2, {vars: "all"}]} }; - let codeA = "/*eslint no-unused-vars: [0, {\"vars\": \"local\"}]*/ var a = 44;"; - let codeB = "var b = 55;"; + const config = { rules: {"no-unused-vars": [2, {vars: "all"}]} }; + const codeA = "/*eslint no-unused-vars: [0, {\"vars\": \"local\"}]*/ var a = 44;"; + const codeB = "var b = 55;"; eslint.reset(); let messages = eslint.verify(codeA, config, filename, false); @@ -1845,36 +1841,36 @@ describe("eslint", function() { }); describe("when evaluating code with invalid comments to enable rules", function() { - let code = "/*eslint no-alert:true*/ alert('test');"; + const code = "/*eslint no-alert:true*/ alert('test');"; it("should report a violation", function() { - let config = { rules: {} }; + const config = { rules: {} }; - let fn = eslint.verify.bind(eslint, code, config, filename); + const fn = eslint.verify.bind(eslint, code, config, filename); assert.throws(fn, "filename.js line 1:\n\tConfiguration for rule \"no-alert\" is invalid:\n\tSeverity should be one of the following: 0 = off, 1 = warn, 2 = error (you passed 'true').\n"); }); }); describe("when evaluating code with comments to disable rules", function() { - let code = "/*eslint no-alert:0*/ alert('test');"; + const code = "/*eslint no-alert:0*/ alert('test');"; it("should not report a violation", function() { - let config = { rules: { "no-alert": 1 } }; + const config = { rules: { "no-alert": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 0); }); }); describe("when evaluating code with comments to enable multiple rules", function() { - let code = "/*eslint no-alert:1 no-console:1*/ alert('test'); console.log('test');"; + const code = "/*eslint no-alert:1 no-console:1*/ alert('test'); console.log('test');"; it("should report a violation", function() { - let config = { rules: {} }; + const config = { rules: {} }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 2); assert.equal(messages[0].ruleId, "no-alert"); @@ -1885,12 +1881,12 @@ describe("eslint", function() { }); describe("when evaluating code with comments to enable and disable multiple rules", function() { - let code = "/*eslint no-alert:1 no-console:0*/ alert('test'); console.log('test');"; + const code = "/*eslint no-alert:1 no-console:0*/ alert('test'); console.log('test');"; it("should report a violation", function() { - let config = { rules: { "no-console": 1, "no-alert": 0 } }; + const config = { rules: { "no-console": 1, "no-alert": 0 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 1); assert.equal(messages[0].ruleId, "no-alert"); @@ -1912,28 +1908,28 @@ describe("eslint", function() { }); it("should not report a violation when inline comment enables plugin rule and there's no violation", function() { - let config = { rules: {} }; - let code = "/*eslint test-plugin/test-rule: 2*/ var a = \"no violation\";"; + const config = { rules: {} }; + const code = "/*eslint test-plugin/test-rule: 2*/ var a = \"no violation\";"; eslint.reset(); - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 0); }); it("should not report a violation when inline comment disables plugin rule", function() { - let code = "/*eslint test-plugin/test-rule:0*/ var a = \"trigger violation\""; - let config = { rules: { "test-plugin/test-rule": 1 } }; + const code = "/*eslint test-plugin/test-rule:0*/ var a = \"trigger violation\""; + const config = { rules: { "test-plugin/test-rule": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 0); }); it("rules should not change initial config", function() { - let config = { rules: {"test-plugin/test-rule": 2} }; - let codeA = "/*eslint test-plugin/test-rule: 0*/ var a = \"trigger violation\";"; - let codeB = "var a = \"trigger violation\";"; + const config = { rules: {"test-plugin/test-rule": 2} }; + const codeA = "/*eslint test-plugin/test-rule: 0*/ var a = \"trigger violation\";"; + const codeB = "var a = \"trigger violation\";"; eslint.reset(); let messages = eslint.verify(codeA, config, filename, false); @@ -1948,15 +1944,15 @@ describe("eslint", function() { describe("when evaluating code with comments to enable and disable all reporting", function() { it("should report a violation", function() { - let code = [ + const code = [ "/*eslint-disable */", "alert('test');", "/*eslint-enable */", "alert('test');" ].join("\n"); - let config = { rules: { "no-alert": 1 } }; + const config = { rules: { "no-alert": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 1); assert.equal(messages[0].ruleId, "no-alert"); @@ -1966,28 +1962,28 @@ describe("eslint", function() { }); it("should not report a violation", function() { - let code = [ + const code = [ "/*eslint-disable */", "alert('test');", "alert('test');" ].join("\n"); - let config = { rules: { "no-alert": 1 } }; + const config = { rules: { "no-alert": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 0); }); it("should not report a violation", function() { - let code = [ + const code = [ " alert('test1');/*eslint-disable */\n", "alert('test');", " alert('test');\n", "/*eslint-enable */alert('test2');" ].join(""); - let config = { rules: { "no-alert": 1 } }; + const config = { rules: { "no-alert": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 2); assert.equal(messages[0].column, 21); @@ -1996,7 +1992,7 @@ describe("eslint", function() { it("should not report a violation", function() { - let code = [ + const code = [ "/*eslint-disable */", "alert('test');", "/*eslint-disable */", @@ -2006,37 +2002,37 @@ describe("eslint", function() { "/*eslint-enable*/" ].join("\n"); - let config = { rules: { "no-alert": 1 } }; + const config = { rules: { "no-alert": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 0); }); it("should not report a violation", function() { - let code = [ + const code = [ "/*eslint-disable */", "(function(){ var b = 44;})()", "/*eslint-enable */;any();" ].join("\n"); - let config = { rules: { "no-unused-vars": 1 } }; + const config = { rules: { "no-unused-vars": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 0); }); it("should not report a violation", function() { - let code = [ + const code = [ "(function(){ /*eslint-disable */ var b = 44;})()", "/*eslint-enable */;any();" ].join("\n"); - let config = { rules: { "no-unused-vars": 1 } }; + const config = { rules: { "no-unused-vars": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 0); }); @@ -2046,18 +2042,18 @@ describe("eslint", function() { describe("eslint-disable-line", function() { it("should report a violation", function() { - let code = [ + const code = [ "alert('test'); // eslint-disable-line no-alert", "console.log('test');" // here ].join("\n"); - let config = { + const config = { rules: { "no-alert": 1, "no-console": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 1); @@ -2065,19 +2061,19 @@ describe("eslint", function() { }); it("should report a violation", function() { - let code = [ + const code = [ "alert('test'); // eslint-disable-line no-alert", "console.log('test'); // eslint-disable-line no-console", "alert('test');" // here ].join("\n"); - let config = { + const config = { rules: { "no-alert": 1, "no-console": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 1); @@ -2085,17 +2081,17 @@ describe("eslint", function() { }); it("should report a violation", function() { - let code = [ + const code = [ "alert('test'); // eslint-disable-line no-alert", "alert('test'); /*eslint-disable-line no-alert*/" // here ].join("\n"); - let config = { + const config = { rules: { "no-alert": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 1); @@ -2103,28 +2099,28 @@ describe("eslint", function() { }); it("should not report a violation", function() { - let code = [ + const code = [ "alert('test'); // eslint-disable-line no-alert", "console('test'); // eslint-disable-line no-console" ].join("\n"); - let config = { + const config = { rules: { "no-alert": 1, "no-console": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 0); }); it("should not report a violation", function() { - let code = [ + const code = [ "alert('test') // eslint-disable-line no-alert, quotes, semi", "console('test'); // eslint-disable-line" ].join("\n"); - let config = { + const config = { rules: { "no-alert": 1, quotes: [1, "double"], @@ -2133,7 +2129,7 @@ describe("eslint", function() { } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 0); }); @@ -2141,36 +2137,36 @@ describe("eslint", function() { describe("eslint-disable-next-line", function() { it("should ignore violation of specified rule on next line", function() { - let code = [ + const code = [ "// eslint-disable-next-line no-alert", "alert('test');", "console.log('test');" ].join("\n"); - let config = { + const config = { rules: { "no-alert": 1, "no-console": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 1); assert.equal(messages[0].ruleId, "no-console"); }); it("should ignore violations only of specified rule", function() { - let code = [ + const code = [ "// eslint-disable-next-line no-console", "alert('test');", "console.log('test');" ].join("\n"); - let config = { + const config = { rules: { "no-alert": 1, "no-console": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 2); assert.equal(messages[0].ruleId, "no-alert"); @@ -2178,38 +2174,38 @@ describe("eslint", function() { }); it("should ignore violations of multiple rules when specified", function() { - let code = [ + const code = [ "// eslint-disable-next-line no-alert, quotes", "alert(\"test\");", "console.log('test');" ].join("\n"); - let config = { + const config = { rules: { "no-alert": 1, quotes: [1, "single"], "no-console": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 1); assert.equal(messages[0].ruleId, "no-console"); }); it("should ignore violations of specified rule on next line only", function() { - let code = [ + const code = [ "alert('test');", "// eslint-disable-next-line no-alert", "alert('test');", "console.log('test');" ].join("\n"); - let config = { + const config = { rules: { "no-alert": 1, "no-console": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 2); assert.equal(messages[0].ruleId, "no-alert"); @@ -2217,12 +2213,12 @@ describe("eslint", function() { }); it("should ignore all rule violations on next line if none specified", function() { - let code = [ + const code = [ "// eslint-disable-next-line", "alert(\"test\");", "console.log('test')" ].join("\n"); - let config = { + const config = { rules: { semi: [1, "never"], quotes: [1, "single"], @@ -2230,26 +2226,26 @@ describe("eslint", function() { "no-console": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 1); assert.equal(messages[0].ruleId, "no-console"); }); it("should not report if comment is in block quotes", function() { - let code = [ + const code = [ "alert('test');", "/* eslint-disable-next-line no-alert */", "alert('test');", "console.log('test');" ].join("\n"); - let config = { + const config = { rules: { "no-alert": 1, "no-console": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 3); assert.equal(messages[0].ruleId, "no-alert"); @@ -2262,14 +2258,14 @@ describe("eslint", function() { describe("when evaluating code with comments to enable and disable reporting of specific rules", function() { it("should report a violation", function() { - let code = [ + const code = [ "/*eslint-disable no-alert */", "alert('test');", "console.log('test');" // here ].join("\n"); - let config = { rules: { "no-alert": 1, "no-console": 1 } }; + const config = { rules: { "no-alert": 1, "no-console": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 1); @@ -2277,7 +2273,7 @@ describe("eslint", function() { }); it("should report a violation", function() { - let code = [ + const code = [ "/*eslint-disable no-alert, no-console */", "alert('test');", "console.log('test');", @@ -2286,9 +2282,9 @@ describe("eslint", function() { "alert('test');", // here "console.log('test');" // here ].join("\n"); - let config = { rules: { "no-alert": 1, "no-console": 1 } }; + const config = { rules: { "no-alert": 1, "no-console": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 2); @@ -2299,7 +2295,7 @@ describe("eslint", function() { }); it("should report a violation", function() { - let code = [ + const code = [ "/*eslint-disable no-alert */", "alert('test');", "console.log('test');", @@ -2307,9 +2303,9 @@ describe("eslint", function() { "alert('test');" // here ].join("\n"); - let config = { rules: { "no-alert": 1, "no-console": 1 } }; + const config = { rules: { "no-alert": 1, "no-console": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 1); @@ -2318,7 +2314,7 @@ describe("eslint", function() { it("should report a violation", function() { - let code = [ + const code = [ "/*eslint-disable no-alert, no-console */", "alert('test');", "console.log('test');", @@ -2327,9 +2323,9 @@ describe("eslint", function() { "alert('test');", // here "console.log('test');" ].join("\n"); - let config = { rules: { "no-alert": 1, "no-console": 1 } }; + const config = { rules: { "no-alert": 1, "no-console": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 1); @@ -2339,7 +2335,7 @@ describe("eslint", function() { it("should report a violation", function() { - let code = [ + const code = [ "/*eslint-disable no-alert */", "/*eslint-disable no-console */", @@ -2357,9 +2353,9 @@ describe("eslint", function() { "/*eslint-enable*/" ].join("\n"); - let config = { rules: { "no-alert": 1, "no-console": 1 } }; + const config = { rules: { "no-alert": 1, "no-console": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 3); @@ -2375,7 +2371,7 @@ describe("eslint", function() { }); it("should report a violation", function() { - let code = [ + const code = [ "/*eslint-disable no-alert, no-console */", "alert('test');", "console.log('test');", @@ -2391,9 +2387,9 @@ describe("eslint", function() { "console.log('test');", // here "/*eslint-enable no-console */" ].join("\n"); - let config = { rules: { "no-alert": 1, "no-console": 1 } }; + const config = { rules: { "no-alert": 1, "no-console": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 3); @@ -2409,7 +2405,7 @@ describe("eslint", function() { }); it("should report a violation when severity is warn", function() { - let code = [ + const code = [ "/*eslint-disable no-alert, no-console */", "alert('test');", "console.log('test');", @@ -2425,9 +2421,9 @@ describe("eslint", function() { "console.log('test');", // here "/*eslint-enable no-console */" ].join("\n"); - let config = { rules: { "no-alert": "warn", "no-console": "warn" } }; + const config = { rules: { "no-alert": "warn", "no-console": "warn" } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 3); @@ -2444,12 +2440,12 @@ describe("eslint", function() { }); describe("when evaluating code with comments to enable and disable multiple comma separated rules", function() { - let code = "/*eslint no-alert:1, no-console:0*/ alert('test'); console.log('test');"; + const code = "/*eslint no-alert:1, no-console:0*/ alert('test'); console.log('test');"; it("should report a violation", function() { - let config = { rules: { "no-console": 1, "no-alert": 0 } }; + const config = { rules: { "no-console": 1, "no-alert": 0 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 1); assert.equal(messages[0].ruleId, "no-alert"); @@ -2459,12 +2455,12 @@ describe("eslint", function() { }); describe("when evaluating code with comments to enable configurable rule", function() { - let code = "/*eslint quotes:[2, \"double\"]*/ alert('test');"; + const code = "/*eslint quotes:[2, \"double\"]*/ alert('test');"; it("should report a violation", function() { - let config = { rules: { quotes: [2, "single"] } }; + const config = { rules: { quotes: [2, "single"] } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 1); assert.equal(messages[0].ruleId, "quotes"); @@ -2474,12 +2470,12 @@ describe("eslint", function() { }); describe("when evaluating code with comments to enable configurable rule using string severity", function() { - let code = "/*eslint quotes:[\"error\", \"double\"]*/ alert('test');"; + const code = "/*eslint quotes:[\"error\", \"double\"]*/ alert('test');"; it("should report a violation", function() { - let config = { rules: { quotes: [2, "single"] } }; + const config = { rules: { quotes: [2, "single"] } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 1); assert.equal(messages[0].ruleId, "quotes"); @@ -2490,11 +2486,11 @@ describe("eslint", function() { describe("when evaluating code with incorrectly formatted comments to disable rule", function() { it("should report a violation", function() { - let code = "/*eslint no-alert:'1'*/ alert('test');"; + const code = "/*eslint no-alert:'1'*/ alert('test');"; - let config = { rules: { "no-alert": 1} }; + const config = { rules: { "no-alert": 1} }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 2); @@ -2515,11 +2511,11 @@ describe("eslint", function() { }); it("should report a violation", function() { - let code = "/*eslint no-alert:abc*/ alert('test');"; + const code = "/*eslint no-alert:abc*/ alert('test');"; - let config = { rules: { "no-alert": 1} }; + const config = { rules: { "no-alert": 1} }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 2); @@ -2540,11 +2536,11 @@ describe("eslint", function() { }); it("should report a violation", function() { - let code = "/*eslint no-alert:0 2*/ alert('test');"; + const code = "/*eslint no-alert:0 2*/ alert('test');"; - let config = { rules: { "no-alert": 1} }; + const config = { rules: { "no-alert": 1} }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 2); @@ -2566,10 +2562,10 @@ describe("eslint", function() { }); describe("when evaluating code with comments which have colon in its value", function() { - let code = "/* eslint max-len: [2, 100, 2, {ignoreUrls: true, ignorePattern: \"data:image\\/|\\s*require\\s*\\(|^\\s*loader\\.lazy|-\\*-\"}] */\nalert('test');"; + const code = "/* eslint max-len: [2, 100, 2, {ignoreUrls: true, ignorePattern: \"data:image\\/|\\s*require\\s*\\(|^\\s*loader\\.lazy|-\\*-\"}] */\nalert('test');"; it("should not parse errors, should report a violation", function() { - let messages = eslint.verify(code, {}, filename); + const messages = eslint.verify(code, {}, filename); assert.equal(messages.length, 1); assert.equal(messages[0].ruleId, "max-len"); @@ -2579,11 +2575,11 @@ describe("eslint", function() { }); describe("when evaluating a file with a shebang", function() { - let code = "#!bin/program\n\nvar foo;;"; + const code = "#!bin/program\n\nvar foo;;"; it("should preserve line numbers", function() { - let config = { rules: { "no-extra-semi": 1 } }; - let messages = eslint.verify(code, config); + const config = { rules: { "no-extra-semi": 1 } }; + const messages = eslint.verify(code, config); assert.equal(messages.length, 1); assert.equal(messages[0].ruleId, "no-extra-semi"); @@ -2592,7 +2588,7 @@ describe("eslint", function() { }); it("should not have a comment with the shebang in it", function() { - let config = { rules: { "no-extra-semi": 1 } }; + const config = { rules: { "no-extra-semi": 1 } }; eslint.reset(); @@ -2612,7 +2608,7 @@ describe("eslint", function() { }); it("should not fire a LineComment event for a comment with the shebang in it", function() { - let config = { rules: { "no-extra-semi": 1 } }; + const config = { rules: { "no-extra-semi": 1 } }; eslint.reset(); @@ -2622,10 +2618,10 @@ describe("eslint", function() { }); describe("when evaluating broken code", function() { - let code = BROKEN_TEST_CODE; + const code = BROKEN_TEST_CODE; it("should report a violation with a useful parse error prefix", function() { - let messages = eslint.verify(code); + const messages = eslint.verify(code); assert.equal(messages.length, 1); assert.equal(messages[0].severity, 2); @@ -2638,13 +2634,13 @@ describe("eslint", function() { }); it("should report source code where the issue is present", function() { - let inValidCode = [ + const inValidCode = [ "var x = 20;", "if (x ==4 {", " x++;", "}" ]; - let messages = eslint.verify(inValidCode.join("\n")); + const messages = eslint.verify(inValidCode.join("\n")); assert.equal(messages.length, 1); assert.equal(messages[0].severity, 2); @@ -2655,13 +2651,13 @@ describe("eslint", function() { }); describe("when using an invalid (undefined) rule", function() { - let code = TEST_CODE; - let results = eslint.verify(code, { rules: {foobar: 2 } }); - let result = results[0]; - let warningResult = eslint.verify(code, { rules: {foobar: 1 } })[0]; - let arrayOptionResults = eslint.verify(code, { rules: {foobar: [2, "always"]} }); - let objectOptionResults = eslint.verify(code, { rules: {foobar: [1, {bar: false}]} }); - let resultsMultiple = eslint.verify(code, { rules: {foobar: 2, barfoo: 1} }); + const code = TEST_CODE; + const results = eslint.verify(code, { rules: {foobar: 2 } }); + const result = results[0]; + const warningResult = eslint.verify(code, { rules: {foobar: 1 } })[0]; + const arrayOptionResults = eslint.verify(code, { rules: {foobar: [2, "always"]} }); + const objectOptionResults = eslint.verify(code, { rules: {foobar: [1, {bar: false}]} }); + const resultsMultiple = eslint.verify(code, { rules: {foobar: 2, barfoo: 1} }); it("should add a stub rule", function() { assert.isNotNull(result); @@ -2694,8 +2690,8 @@ describe("eslint", function() { }); describe("when using a rule which has been replaced", function() { - let code = TEST_CODE; - let results = eslint.verify(code, { rules: {"no-comma-dangle": 2 } }); + const code = TEST_CODE; + const results = eslint.verify(code, { rules: {"no-comma-dangle": 2 } }); it("should report the new rule", function() { assert.equal(results[0].ruleId, "no-comma-dangle"); @@ -2704,7 +2700,7 @@ describe("eslint", function() { }); describe("when using invalid rule config", function() { - let code = TEST_CODE; + const code = TEST_CODE; it("should throw an error", function() { assert.throws(function() { @@ -2715,7 +2711,7 @@ describe("eslint", function() { describe("when calling defaults", function() { it("should return back config object", function() { - let config = eslint.defaults(); + const config = eslint.defaults(); assert.isNotNull(config.rules); }); @@ -2723,21 +2719,21 @@ describe("eslint", function() { describe("when evaluating code without comments to environment", function() { it("should report a violation when using typed array", function() { - let code = "var array = new Uint8Array();"; + const code = "var array = new Uint8Array();"; - let config = { rules: { "no-undef": 1} }; + const config = { rules: { "no-undef": 1} }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 1); }); it("should report a violation when using Promise", function() { - let code = "new Promise();"; + const code = "new Promise();"; - let config = { rules: { "no-undef": 1} }; + const config = { rules: { "no-undef": 1} }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 1); }); @@ -2745,11 +2741,11 @@ describe("eslint", function() { describe("when evaluating code with comments to environment", function() { it("should not support legacy config", function() { - let code = "/*jshint mocha:true */ describe();"; + const code = "/*jshint mocha:true */ describe();"; - let config = { rules: { "no-undef": 1} }; + const config = { rules: { "no-undef": 1} }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 1); assert.equal(messages[0].ruleId, "no-undef"); @@ -2758,81 +2754,81 @@ describe("eslint", function() { }); it("should not report a violation", function() { - let code = "/*eslint-env es6 */ new Promise();"; + const code = "/*eslint-env es6 */ new Promise();"; - let config = { rules: { "no-undef": 1 } }; + const config = { rules: { "no-undef": 1 } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 0); }); it("should not report a violation", function() { - let code = "/*eslint-env mocha,node */ require();describe();"; + const code = "/*eslint-env mocha,node */ require();describe();"; - let config = { rules: { "no-undef": 1} }; + const config = { rules: { "no-undef": 1} }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 0); }); it("should not report a violation", function() { - let code = "/*eslint-env mocha */ suite();test();"; + const code = "/*eslint-env mocha */ suite();test();"; - let config = { rules: { "no-undef": 1} }; + const config = { rules: { "no-undef": 1} }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 0); }); it("should not report a violation", function() { - let code = "/*eslint-env amd */ define();require();"; + const code = "/*eslint-env amd */ define();require();"; - let config = { rules: { "no-undef": 1} }; + const config = { rules: { "no-undef": 1} }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 0); }); it("should not report a violation", function() { - let code = "/*eslint-env jasmine */ expect();spyOn();"; + const code = "/*eslint-env jasmine */ expect();spyOn();"; - let config = { rules: { "no-undef": 1} }; + const config = { rules: { "no-undef": 1} }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 0); }); it("should not report a violation", function() { - let code = "/*globals require: true */ /*eslint-env node */ require = 1;"; + const code = "/*globals require: true */ /*eslint-env node */ require = 1;"; - let config = { rules: {"no-undef": 1} }; + const config = { rules: {"no-undef": 1} }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 0); }); it("should not report a violation", function() { - let code = "/*eslint-env node */ process.exit();"; + const code = "/*eslint-env node */ process.exit();"; - let config = { rules: {} }; + const config = { rules: {} }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 0); }); it("should not report a violation", function() { - let code = "/*eslint no-process-exit: 0 */ /*eslint-env node */ process.exit();"; + const code = "/*eslint no-process-exit: 0 */ /*eslint-env node */ process.exit();"; - let config = { rules: {"no-undef": 1} }; + const config = { rules: {"no-undef": 1} }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 0); }); @@ -2841,16 +2837,16 @@ describe("eslint", function() { describe("when evaluating code with comments to change config when allowInlineConfig is enabled", function() { it("should report a violation for disabling rules", function() { - let code = [ + const code = [ "alert('test'); // eslint-disable-line no-alert" ].join("\n"); - let config = { + const config = { rules: { "no-alert": 1 } }; - let messages = eslint.verify(code, config, { + const messages = eslint.verify(code, config, { filename: filename, allowInlineConfig: false }); @@ -2861,10 +2857,10 @@ describe("eslint", function() { it("should report a violation for global variable declarations", function() { - let code = [ + const code = [ "/* global foo */" ].join("\n"); - let config = { + const config = { rules: { test: 2 } @@ -2874,13 +2870,13 @@ describe("eslint", function() { eslint.defineRules({test: function(context) { return { Program: function() { - let scope = context.getScope(); - let sourceCode = context.getSourceCode(); - let comments = sourceCode.getAllComments(); + const scope = context.getScope(); + const sourceCode = context.getSourceCode(); + const comments = sourceCode.getAllComments(); assert.equal(1, comments.length); - let foo = getVariable(scope, "foo"); + const foo = getVariable(scope, "foo"); assert.notOk(foo); @@ -2894,17 +2890,17 @@ describe("eslint", function() { }); it("should report a violation for eslint-disable", function() { - let code = [ + const code = [ "/* eslint-disable */", "alert('test');" ].join("\n"); - let config = { + const config = { rules: { "no-alert": 1 } }; - let messages = eslint.verify(code, config, { + const messages = eslint.verify(code, config, { filename: filename, allowInlineConfig: false }); @@ -2914,17 +2910,17 @@ describe("eslint", function() { }); it("should not report a violation for rule changes", function() { - let code = [ + const code = [ "/*eslint no-alert:2*/", "alert('test');" ].join("\n"); - let config = { + const config = { rules: { "no-alert": 0 } }; - let messages = eslint.verify(code, config, { + const messages = eslint.verify(code, config, { filename: filename, allowInlineConfig: false }); @@ -2933,16 +2929,16 @@ describe("eslint", function() { }); it("should report a violation for disable-line", function() { - let code = [ + const code = [ "alert('test'); // eslint-disable-line" ].join("\n"); - let config = { + const config = { rules: { "no-alert": 2 } }; - let messages = eslint.verify(code, config, { + const messages = eslint.verify(code, config, { filename: filename, allowInlineConfig: false }); @@ -2952,10 +2948,10 @@ describe("eslint", function() { }); it("should report a violation for env changes", function() { - let code = [ + const code = [ "/*eslint-env browser*/" ].join("\n"); - let config = { + const config = { rules: { test: 2 } @@ -2965,13 +2961,13 @@ describe("eslint", function() { eslint.defineRules({test: function(context) { return { Program: function() { - let scope = context.getScope(); - let sourceCode = context.getSourceCode(); - let comments = sourceCode.getAllComments(); + const scope = context.getScope(); + const sourceCode = context.getSourceCode(); + const comments = sourceCode.getAllComments(); assert.equal(1, comments.length); - let windowVar = getVariable(scope, "window"); + const windowVar = getVariable(scope, "window"); assert.notOk(windowVar.eslintExplicitGlobal); @@ -2988,16 +2984,16 @@ describe("eslint", function() { describe("when evaluating code with comments to change config when allowInlineConfig is disabled", function() { it("should not report a violation", function() { - let code = [ + const code = [ "alert('test'); // eslint-disable-line no-alert" ].join("\n"); - let config = { + const config = { rules: { "no-alert": 1 } }; - let messages = eslint.verify(code, config, { + const messages = eslint.verify(code, config, { filename: filename, allowInlineConfig: true }); @@ -3010,9 +3006,9 @@ describe("eslint", function() { it("should emit enter only once for each comment", function() { - let code = "a; /*zz*/ b;"; + const code = "a; /*zz*/ b;"; - let config = { rules: {} }, + const config = { rules: {} }, spy = sandbox.spy(); eslint.reset(); @@ -3024,9 +3020,9 @@ describe("eslint", function() { it("should emit exit only once for each comment", function() { - let code = "a; //zz\n b;"; + const code = "a; //zz\n b;"; - let config = { rules: {} }, + const config = { rules: {} }, spy = sandbox.spy(); eslint.reset(); @@ -3041,9 +3037,9 @@ describe("eslint", function() { describe("when evaluating code with hashbang", function() { it("should comment hashbang without breaking offset", function() { - let code = "#!/usr/bin/env node\n'123';"; + const code = "#!/usr/bin/env node\n'123';"; - let config = { rules: {} }; + const config = { rules: {} }; eslint.reset(); eslint.on("ExpressionStatement", function(node) { @@ -3061,7 +3057,7 @@ describe("eslint", function() { it("should allow filename to be passed on options object", function() { eslint.verify("foo;", {}, { filename: "foo.js"}); - let result = eslint.getFilename(); + const result = eslint.getFilename(); assert.equal(result, "foo.js"); }); @@ -3069,7 +3065,7 @@ describe("eslint", function() { it("should allow filename to be passed as third argument", function() { eslint.verify("foo;", {}, "foo.js"); - let result = eslint.getFilename(); + const result = eslint.getFilename(); assert.equal(result, "foo.js"); }); @@ -3077,7 +3073,7 @@ describe("eslint", function() { it("should default filename to when options object doesn't have filename", function() { eslint.verify("foo;", {}, {}); - let result = eslint.getFilename(); + const result = eslint.getFilename(); assert.equal(result, ""); }); @@ -3085,7 +3081,7 @@ describe("eslint", function() { it("should default filename to when only two arguments are passed", function() { eslint.verify("foo;", {}); - let result = eslint.getFilename(); + const result = eslint.getFilename(); assert.equal(result, ""); }); @@ -3094,7 +3090,7 @@ describe("eslint", function() { describe("saveState", function() { it("should save the state when saveState is passed as an option", function() { - let spy = sinon.spy(eslint, "reset"); + const spy = sinon.spy(eslint, "reset"); eslint.verify("foo;", {}, { saveState: true }); assert.equal(spy.callCount, 0); @@ -3106,10 +3102,10 @@ describe("eslint", function() { it("should report warnings in order by line and column when called", function() { - let code = "foo()\n alert('test')"; - let config = { rules: { "no-mixed-spaces-and-tabs": 1, "eol-last": 1, semi: [1, "always"] } }; + const code = "foo()\n alert('test')"; + const config = { rules: { "no-mixed-spaces-and-tabs": 1, "eol-last": 1, semi: [1, "always"] } }; - let messages = eslint.verify(code, config, filename); + const messages = eslint.verify(code, config, filename); assert.equal(messages.length, 3); assert.equal(messages[0].line, 1); @@ -3122,7 +3118,7 @@ describe("eslint", function() { it("should properly parse let declaration when passed ecmaVersion", function() { - let messages = eslint.verify("let x = 5;", { + const messages = eslint.verify("let x = 5;", { parserOptions: { ecmaVersion: 6 } @@ -3133,7 +3129,7 @@ describe("eslint", function() { it("should properly parse object spread when passed ecmaFeatures", function() { - let messages = eslint.verify("var x = { ...y };", { + const messages = eslint.verify("var x = { ...y };", { parserOptions: { ecmaVersion: 6, ecmaFeatures: { @@ -3147,7 +3143,7 @@ describe("eslint", function() { it("should properly parse global return when passed ecmaFeatures", function() { - let messages = eslint.verify("return;", { + const messages = eslint.verify("return;", { parserOptions: { ecmaFeatures: { globalReturn: true @@ -3160,7 +3156,7 @@ describe("eslint", function() { it("should properly parse global return when in Node.js environment", function() { - let messages = eslint.verify("return;", { + const messages = eslint.verify("return;", { env: { node: true } @@ -3171,7 +3167,7 @@ describe("eslint", function() { it("should not parse global return when in Node.js environment with globalReturn explicitly off", function() { - let messages = eslint.verify("return;", { + const messages = eslint.verify("return;", { env: { node: true }, @@ -3188,7 +3184,7 @@ describe("eslint", function() { it("should not parse global return when Node.js environment is false", function() { - let messages = eslint.verify("return;", {}, filename); + const messages = eslint.verify("return;", {}, filename); assert.equal(messages.length, 1); assert.equal(messages[0].message, "Parsing error: 'return' outside of function"); @@ -3196,14 +3192,14 @@ describe("eslint", function() { it("should properly parse sloppy-mode code when impliedStrict is false", function() { - let messages = eslint.verify("var private;", {}, filename); + const messages = eslint.verify("var private;", {}, filename); assert.equal(messages.length, 0); }); it("should not parse sloppy-mode code when impliedStrict is true", function() { - let messages = eslint.verify("var private;", { + const messages = eslint.verify("var private;", { parserOptions: { ecmaFeatures: { impliedStrict: true @@ -3217,7 +3213,7 @@ describe("eslint", function() { it("should properly parse valid code when impliedStrict is true", function() { - let messages = eslint.verify("var foo;", { + const messages = eslint.verify("var foo;", { parserOptions: { ecmaFeatures: { impliedStrict: true @@ -3230,7 +3226,7 @@ describe("eslint", function() { it("should properly parse JSX when passed ecmaFeatures", function() { - let messages = eslint.verify("var x =
;", { + const messages = eslint.verify("var x =
;", { parserOptions: { ecmaFeatures: { jsx: true @@ -3242,8 +3238,8 @@ describe("eslint", function() { }); it("should report an error when JSX code is encountered and JSX is not enabled", function() { - let code = "var myDivElement =
;"; - let messages = eslint.verify(code, {}, "filename"); + const code = "var myDivElement =
;"; + const messages = eslint.verify(code, {}, "filename"); assert.equal(messages.length, 1); assert.equal(messages[0].line, 1); @@ -3252,21 +3248,21 @@ describe("eslint", function() { }); it("should not report an error when JSX code is encountered and JSX is enabled", function() { - let code = "var myDivElement =
;"; - let messages = eslint.verify(code, { parserOptions: { ecmaFeatures: { jsx: true }}}, "filename"); + const code = "var myDivElement =
;"; + const messages = eslint.verify(code, { parserOptions: { ecmaFeatures: { jsx: true }}}, "filename"); assert.equal(messages.length, 0); }); it("should not report an error when JSX code contains a spread operator and JSX is enabled", function() { - let code = "var myDivElement =
;"; - let messages = eslint.verify(code, { parserOptions: { ecmaVersion: 6, ecmaFeatures: { jsx: true }}}, "filename"); + const code = "var myDivElement =
;"; + const messages = eslint.verify(code, { parserOptions: { ecmaVersion: 6, ecmaFeatures: { jsx: true }}}, "filename"); assert.equal(messages.length, 0); }); it("should be able to use es6 features if there is a comment which has \"eslint-env es6\"", function() { - let code = [ + const code = [ "/* eslint-env es6 */", "var arrow = () => 0;", "var binary = 0b1010;", @@ -3289,41 +3285,41 @@ describe("eslint", function() { "var unicode = '\\u{20BB7}';" ].join("\n"); - let messages = eslint.verify(code, null, "eslint-env es6"); + const messages = eslint.verify(code, null, "eslint-env es6"); assert.equal(messages.length, 0); }); it("should be able to return in global if there is a comment which has \"eslint-env node\"", function() { - let messages = eslint.verify("/* eslint-env node */ return;", null, "eslint-env node"); + const messages = eslint.verify("/* eslint-env node */ return;", null, "eslint-env node"); assert.equal(messages.length, 0); }); it("should attach a \"/*global\" comment node to declared variables", function() { - let code = "/* global foo */\n/* global bar, baz */"; + const code = "/* global foo */\n/* global bar, baz */"; let ok = false; eslint.defineRules({test: function(context) { return { Program: function() { - let scope = context.getScope(); - let sourceCode = context.getSourceCode(); - let comments = sourceCode.getAllComments(); + const scope = context.getScope(); + const sourceCode = context.getSourceCode(); + const comments = sourceCode.getAllComments(); assert.equal(2, comments.length); - let foo = getVariable(scope, "foo"); + const foo = getVariable(scope, "foo"); assert.equal(true, foo.eslintExplicitGlobal); assert.equal(comments[0], foo.eslintExplicitGlobalComment); - let bar = getVariable(scope, "bar"); + const bar = getVariable(scope, "bar"); assert.equal(true, bar.eslintExplicitGlobal); assert.equal(comments[1], bar.eslintExplicitGlobalComment); - let baz = getVariable(scope, "baz"); + const baz = getVariable(scope, "baz"); assert.equal(true, baz.eslintExplicitGlobal); assert.equal(comments[1], baz.eslintExplicitGlobalComment); @@ -3343,7 +3339,7 @@ describe("eslint", function() { }); it("should allow 'await' as a property name in modules", function() { - let result = eslint.verify( + const result = eslint.verify( "obj.await", {parserOptions: {ecmaVersion: 6, sourceType: "module"}} ); @@ -3353,7 +3349,7 @@ describe("eslint", function() { }); describe("Variables and references", function() { - let code = [ + const code = [ "a;", "function foo() { b; }", "Object;", @@ -3483,7 +3479,7 @@ describe("eslint", function() { */ function verify(code, type, expectedNamesList) { eslint.defineRules({test: function(context) { - let rule = { + const rule = { Program: checkEmpty, EmptyStatement: checkEmpty, BlockStatement: checkEmpty, @@ -3534,8 +3530,8 @@ describe("eslint", function() { }; rule[type] = function(node) { - let expectedNames = expectedNamesList.shift(); - let variables = context.getDeclaredVariables(node); + const expectedNames = expectedNamesList.shift(); + const variables = context.getDeclaredVariables(node); assert(Array.isArray(expectedNames)); assert(Array.isArray(variables)); @@ -3559,8 +3555,8 @@ describe("eslint", function() { } it("VariableDeclaration", function() { - let code = "\n var {a, x: [b], y: {c = 0}} = foo;\n let {d, x: [e], y: {f = 0}} = foo;\n const {g, x: [h], y: {i = 0}} = foo, {j, k = function(z) { let l; }} = bar;\n "; - let namesList = [ + const code = "\n var {a, x: [b], y: {c = 0}} = foo;\n let {d, x: [e], y: {f = 0}} = foo;\n const {g, x: [h], y: {i = 0}} = foo, {j, k = function(z) { let l; }} = bar;\n "; + const namesList = [ ["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i", "j", "k"], @@ -3573,8 +3569,8 @@ describe("eslint", function() { it("VariableDeclaration (on for-in/of loop)", function() { // TDZ scope is created here, so tests to exclude those. - let code = "\n for (var {a, x: [b], y: {c = 0}} in foo) {\n let g;\n }\n for (let {d, x: [e], y: {f = 0}} of foo) {\n let h;\n }\n "; - let namesList = [ + const code = "\n for (var {a, x: [b], y: {c = 0}} in foo) {\n let g;\n }\n for (let {d, x: [e], y: {f = 0}} of foo) {\n let h;\n }\n "; + const namesList = [ ["a", "b", "c"], ["g"], ["d", "e", "f"], @@ -3587,8 +3583,8 @@ describe("eslint", function() { it("VariableDeclarator", function() { // TDZ scope is created here, so tests to exclude those. - let code = "\n var {a, x: [b], y: {c = 0}} = foo;\n let {d, x: [e], y: {f = 0}} = foo;\n const {g, x: [h], y: {i = 0}} = foo, {j, k = function(z) { let l; }} = bar;\n "; - let namesList = [ + const code = "\n var {a, x: [b], y: {c = 0}} = foo;\n let {d, x: [e], y: {f = 0}} = foo;\n const {g, x: [h], y: {i = 0}} = foo, {j, k = function(z) { let l; }} = bar;\n "; + const namesList = [ ["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"], @@ -3600,8 +3596,8 @@ describe("eslint", function() { }); it("FunctionDeclaration", function() { - let code = "\n function foo({a, x: [b], y: {c = 0}}, [d, e]) {\n let z;\n }\n function bar({f, x: [g], y: {h = 0}}, [i, j = function(q) { let w; }]) {\n let z;\n }\n "; - let namesList = [ + const code = "\n function foo({a, x: [b], y: {c = 0}}, [d, e]) {\n let z;\n }\n function bar({f, x: [g], y: {h = 0}}, [i, j = function(q) { let w; }]) {\n let z;\n }\n "; + const namesList = [ ["foo", "a", "b", "c", "d", "e"], ["bar", "f", "g", "h", "i", "j"] ]; @@ -3610,8 +3606,8 @@ describe("eslint", function() { }); it("FunctionExpression", function() { - let code = "\n (function foo({a, x: [b], y: {c = 0}}, [d, e]) {\n let z;\n });\n (function bar({f, x: [g], y: {h = 0}}, [i, j = function(q) { let w; }]) {\n let z;\n });\n "; - let namesList = [ + const code = "\n (function foo({a, x: [b], y: {c = 0}}, [d, e]) {\n let z;\n });\n (function bar({f, x: [g], y: {h = 0}}, [i, j = function(q) { let w; }]) {\n let z;\n });\n "; + const namesList = [ ["foo", "a", "b", "c", "d", "e"], ["bar", "f", "g", "h", "i", "j"], ["q"] @@ -3621,8 +3617,8 @@ describe("eslint", function() { }); it("ArrowFunctionExpression", function() { - let code = "\n (({a, x: [b], y: {c = 0}}, [d, e]) => {\n let z;\n });\n (({f, x: [g], y: {h = 0}}, [i, j]) => {\n let z;\n });\n "; - let namesList = [ + const code = "\n (({a, x: [b], y: {c = 0}}, [d, e]) => {\n let z;\n });\n (({f, x: [g], y: {h = 0}}, [i, j]) => {\n let z;\n });\n "; + const namesList = [ ["a", "b", "c", "d", "e"], ["f", "g", "h", "i", "j"] ]; @@ -3631,8 +3627,8 @@ describe("eslint", function() { }); it("ClassDeclaration", function() { - let code = "\n class A { foo(x) { let y; } }\n class B { foo(x) { let y; } }\n "; - let namesList = [ + const code = "\n class A { foo(x) { let y; } }\n class B { foo(x) { let y; } }\n "; + const namesList = [ ["A", "A"], // outer scope's and inner scope's. ["B", "B"] ]; @@ -3641,8 +3637,8 @@ describe("eslint", function() { }); it("ClassExpression", function() { - let code = "\n (class A { foo(x) { let y; } });\n (class B { foo(x) { let y; } });\n "; - let namesList = [ + const code = "\n (class A { foo(x) { let y; } });\n (class B { foo(x) { let y; } });\n "; + const namesList = [ ["A"], ["B"] ]; @@ -3651,8 +3647,8 @@ describe("eslint", function() { }); it("CatchClause", function() { - let code = "\n try {} catch ({a, b}) {\n let x;\n try {} catch ({c, d}) {\n let y;\n }\n }\n "; - let namesList = [ + const code = "\n try {} catch ({a, b}) {\n let x;\n try {} catch ({c, d}) {\n let y;\n }\n }\n "; + const namesList = [ ["a", "b"], ["c", "d"] ]; @@ -3661,8 +3657,8 @@ describe("eslint", function() { }); it("ImportDeclaration", function() { - let code = "\n import \"aaa\";\n import * as a from \"bbb\";\n import b, {c, x as d} from \"ccc\";\n "; - let namesList = [ + const code = "\n import \"aaa\";\n import * as a from \"bbb\";\n import b, {c, x as d} from \"ccc\";\n "; + const namesList = [ [], ["a"], ["b", "c", "d"] @@ -3672,8 +3668,8 @@ describe("eslint", function() { }); it("ImportSpecifier", function() { - let code = "\n import \"aaa\";\n import * as a from \"bbb\";\n import b, {c, x as d} from \"ccc\";\n "; - let namesList = [ + const code = "\n import \"aaa\";\n import * as a from \"bbb\";\n import b, {c, x as d} from \"ccc\";\n "; + const namesList = [ ["c"], ["d"] ]; @@ -3682,8 +3678,8 @@ describe("eslint", function() { }); it("ImportDefaultSpecifier", function() { - let code = "\n import \"aaa\";\n import * as a from \"bbb\";\n import b, {c, x as d} from \"ccc\";\n "; - let namesList = [ + const code = "\n import \"aaa\";\n import * as a from \"bbb\";\n import b, {c, x as d} from \"ccc\";\n "; + const namesList = [ ["b"] ]; @@ -3691,8 +3687,8 @@ describe("eslint", function() { }); it("ImportNamespaceSpecifier", function() { - let code = "\n import \"aaa\";\n import * as a from \"bbb\";\n import b, {c, x as d} from \"ccc\";\n "; - let namesList = [ + const code = "\n import \"aaa\";\n import * as a from \"bbb\";\n import b, {c, x as d} from \"ccc\";\n "; + const namesList = [ ["a"] ]; @@ -3703,22 +3699,22 @@ describe("eslint", function() { describe("Edge cases", function() { it("should properly parse import statements when sourceType is module", function() { - let code = "import foo from 'foo';"; - let messages = eslint.verify(code, { parserOptions: { sourceType: "module" } }); + const code = "import foo from 'foo';"; + const messages = eslint.verify(code, { parserOptions: { sourceType: "module" } }); assert.equal(messages.length, 0); }); it("should properly parse import all statements when sourceType is module", function() { - let code = "import * as foo from 'foo';"; - let messages = eslint.verify(code, { parserOptions: { sourceType: "module" } }); + const code = "import * as foo from 'foo';"; + const messages = eslint.verify(code, { parserOptions: { sourceType: "module" } }); assert.equal(messages.length, 0); }); it("should properly parse default export statements when sourceType is module", function() { - let code = "export default function initialize() {}"; - let messages = eslint.verify(code, { parserOptions: { sourceType: "module" } }); + const code = "export default function initialize() {}"; + const messages = eslint.verify(code, { parserOptions: { sourceType: "module" } }); assert.equal(messages.length, 0); }); @@ -3736,7 +3732,7 @@ describe("eslint", function() { }); it("should report syntax error when a keyword exists in object property shorthand", function() { - let messages = eslint.verify("let a = {this}", { parserOptions: { ecmaVersion: 6 }}); + const messages = eslint.verify("let a = {this}", { parserOptions: { ecmaVersion: 6 }}); assert.equal(messages.length, 1); assert.equal(messages[0].fatal, true); @@ -3781,19 +3777,19 @@ describe("eslint", function() { describe("Custom parser", function() { - let parserFixtures = path.join(__dirname, "../fixtures/parsers"), + const parserFixtures = path.join(__dirname, "../fixtures/parsers"), errorPrefix = "Parsing error: "; it("should not report an error when JSX code contains a spread operator and JSX is enabled", function() { - let code = "var myDivElement =
;"; - let messages = eslint.verify(code, { parser: "esprima-fb" }, "filename"); + const code = "var myDivElement =
;"; + const messages = eslint.verify(code, { parser: "esprima-fb" }, "filename"); assert.equal(messages.length, 0); }); it("should return an error when the custom parser can't be found", function() { - let code = "var myDivElement =
;"; - let messages = eslint.verify(code, { parser: "esprima-fbxyz" }, "filename"); + const code = "var myDivElement =
;"; + const messages = eslint.verify(code, { parser: "esprima-fbxyz" }, "filename"); assert.equal(messages.length, 1); assert.equal(messages[0].severity, 2); @@ -3801,8 +3797,8 @@ describe("eslint", function() { }); it("should strip leading line: prefix from parser error", function() { - let parser = path.join(parserFixtures, "line-error.js"); - let messages = eslint.verify(";", { parser: parser }, "filename"); + const parser = path.join(parserFixtures, "line-error.js"); + const messages = eslint.verify(";", { parser: parser }, "filename"); assert.equal(messages.length, 1); assert.equal(messages[0].severity, 2); @@ -3811,8 +3807,8 @@ describe("eslint", function() { }); it("should not modify a parser error message without a leading line: prefix", function() { - let parser = path.join(parserFixtures, "no-line-error.js"); - let messages = eslint.verify(";", { parser: parser }, "filename"); + const parser = path.join(parserFixtures, "no-line-error.js"); + const messages = eslint.verify(";", { parser: parser }, "filename"); assert.equal(messages.length, 1); assert.equal(messages[0].severity, 2); diff --git a/tests/lib/file-finder.js b/tests/lib/file-finder.js index 579f02aca80..038da7abca1 100644 --- a/tests/lib/file-finder.js +++ b/tests/lib/file-finder.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, path = require("path"), FileFinder = require("../../lib/file-finder.js"); @@ -18,7 +18,7 @@ let assert = require("chai").assert, //------------------------------------------------------------------------------ describe("FileFinder", function() { - let fixtureDir = path.resolve(__dirname, "..", "fixtures"), + const fixtureDir = path.resolve(__dirname, "..", "fixtures"), fileFinderDir = path.join(fixtureDir, "file-finder"), subdir = path.join(fileFinderDir, "subdir"), subsubdir = path.join(subdir, "subsubdir"), @@ -70,7 +70,7 @@ describe("FileFinder", function() { describe("searching for multiple files", function() { it("should return only the first specified file", function() { - let firstExpected = path.join(fileFinderDir, "subdir", "empty"), + const firstExpected = path.join(fileFinderDir, "subdir", "empty"), secondExpected = path.join(fileFinderDir, "empty"); finder = new FileFinder(["empty", uniqueFileName], process.cwd()); @@ -82,7 +82,7 @@ describe("FileFinder", function() { }); it("should return the second file when the first is missing", function() { - let firstExpected = path.join(fileFinderDir, "subdir", uniqueFileName), + const firstExpected = path.join(fileFinderDir, "subdir", uniqueFileName), secondExpected = path.join(fileFinderDir, uniqueFileName); finder = new FileFinder(["notreal", uniqueFileName], process.cwd()); @@ -94,7 +94,7 @@ describe("FileFinder", function() { }); it("should return multiple files when the first is missing and more than one filename is requested", function() { - let firstExpected = path.join(fileFinderDir, "subdir", uniqueFileName), + const firstExpected = path.join(fileFinderDir, "subdir", uniqueFileName), secondExpected = path.join(fileFinderDir, uniqueFileName); finder = new FileFinder(["notreal", uniqueFileName, "empty2"], process.cwd()); @@ -108,7 +108,7 @@ describe("FileFinder", function() { }); describe("two files present with the same name in parent directories", function() { - let firstExpected = path.join(fileFinderDir, "subdir", uniqueFileName), + const firstExpected = path.join(fileFinderDir, "subdir", uniqueFileName), secondExpected = path.join(fileFinderDir, uniqueFileName); before(function() { diff --git a/tests/lib/formatters/checkstyle.js b/tests/lib/formatters/checkstyle.js index ac23d1d783d..42cef70305f 100644 --- a/tests/lib/formatters/checkstyle.js +++ b/tests/lib/formatters/checkstyle.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, formatter = require("../../../lib/formatters/checkstyle"); //------------------------------------------------------------------------------ @@ -18,7 +18,7 @@ let assert = require("chai").assert, describe("formatter:checkstyle", function() { describe("when passed a single message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -30,21 +30,21 @@ describe("formatter:checkstyle", function() { }]; it("should return a string in the format filename: line x, col y, Error - z for errors", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, ""); }); it("should return a string in the format filename: line x, col y, Warning - z for warnings", function() { code[0].messages[0].severity = 1; - let result = formatter(code); + const result = formatter(code); assert.equal(result, ""); }); }); describe("when passed a message with XML control characters", function() { - let code = [{ + const code = [{ filePath: "<>&\"'.js", messages: [{ fatal: true, @@ -56,14 +56,14 @@ describe("formatter:checkstyle", function() { }]; it("should return a string in the format filename: line x, col y, Error - z", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, ""); }); }); describe("when passed a fatal error message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ fatal: true, @@ -75,14 +75,14 @@ describe("formatter:checkstyle", function() { }]; it("should return a string in the format filename: line x, col y, Error - z", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, ""); }); }); describe("when passed multiple messages", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -100,14 +100,14 @@ describe("formatter:checkstyle", function() { }]; it("should return a string with multiple entries", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, ""); }); }); describe("when passed multiple files with 1 message each", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -128,14 +128,14 @@ describe("formatter:checkstyle", function() { }]; it("should return a string with multiple entries", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, ""); }); }); describe("when passing single message without rule id", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -146,7 +146,7 @@ describe("formatter:checkstyle", function() { }]; it("should return a string in the format filename: line x, col y, Error - z for errors", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, ""); }); diff --git a/tests/lib/formatters/compact.js b/tests/lib/formatters/compact.js index fac31487254..b6a5bafc8c1 100644 --- a/tests/lib/formatters/compact.js +++ b/tests/lib/formatters/compact.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, formatter = require("../../../lib/formatters/compact"); //------------------------------------------------------------------------------ @@ -18,20 +18,20 @@ let assert = require("chai").assert, describe("formatter:compact", function() { describe("when passed no messages", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [] }]; it("should return nothing", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, ""); }); }); describe("when passed a single message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -43,21 +43,21 @@ describe("formatter:compact", function() { }]; it("should return a string in the format filename: line x, col y, Error - z for errors", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "foo.js: line 5, col 10, Error - Unexpected foo. (foo)\n\n1 problem"); }); it("should return a string in the format filename: line x, col y, Warning - z for warnings", function() { code[0].messages[0].severity = 1; - let result = formatter(code); + const result = formatter(code); assert.equal(result, "foo.js: line 5, col 10, Warning - Unexpected foo. (foo)\n\n1 problem"); }); }); describe("when passed a fatal error message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ fatal: true, @@ -69,14 +69,14 @@ describe("formatter:compact", function() { }]; it("should return a string in the format filename: line x, col y, Error - z", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "foo.js: line 5, col 10, Error - Unexpected foo. (foo)\n\n1 problem"); }); }); describe("when passed multiple messages", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -94,14 +94,14 @@ describe("formatter:compact", function() { }]; it("should return a string with multiple entries", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "foo.js: line 5, col 10, Error - Unexpected foo. (foo)\nfoo.js: line 6, col 11, Warning - Unexpected bar. (bar)\n\n2 problems"); }); }); describe("when passed multiple files with 1 message each", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -122,14 +122,14 @@ describe("formatter:compact", function() { }]; it("should return a string with multiple entries", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "foo.js: line 5, col 10, Error - Unexpected foo. (foo)\nbar.js: line 6, col 11, Warning - Unexpected bar. (bar)\n\n2 problems"); }); }); describe("when passed one file not found message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ fatal: true, @@ -138,7 +138,7 @@ describe("formatter:compact", function() { }]; it("should return a string without line and column", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "foo.js: line 0, col 0, Error - Couldn't find foo.js.\n\n1 problem"); }); diff --git a/tests/lib/formatters/html.js b/tests/lib/formatters/html.js index c27c380edde..e81c3e48b19 100644 --- a/tests/lib/formatters/html.js +++ b/tests/lib/formatters/html.js @@ -9,9 +9,9 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert; -let formatter = require("../../../lib/formatters/html"); -let cheerio = require("cheerio"); +const assert = require("chai").assert; +const formatter = require("../../../lib/formatters/html"); +const cheerio = require("cheerio"); //------------------------------------------------------------------------------ // Helpers @@ -66,7 +66,7 @@ function checkContentRow($, row, args) { describe("formatter:html", function() { describe("when passed a single error message", function() { - let code = [{ + const code = [{ filePath: "foo.js", errorCount: 1, warningCount: 0, @@ -81,8 +81,8 @@ describe("formatter:html", function() { }]; it("should return a string in HTML format with 1 issue in 1 file and styled accordingly", function() { - let result = formatter(code); - let $ = cheerio.load(result); + const result = formatter(code); + const $ = cheerio.load(result); // Check overview checkOverview($, {bgColor: "bg-2", problems: "1 problem (1 error, 0 warnings)"}); @@ -97,7 +97,7 @@ describe("formatter:html", function() { describe("when passed a single warning message", function() { - let code = [{ + const code = [{ filePath: "foo.js", errorCount: 0, warningCount: 1, @@ -112,8 +112,8 @@ describe("formatter:html", function() { }]; it("should return a string in HTML format with 1 issue in 1 file and styled accordingly", function() { - let result = formatter(code); - let $ = cheerio.load(result); + const result = formatter(code); + const $ = cheerio.load(result); // Check overview checkOverview($, {bgColor: "bg-1", problems: "1 problem (0 errors, 1 warning)"}); @@ -128,7 +128,7 @@ describe("formatter:html", function() { describe("when passed a single error message", function() { - let code = [{ + const code = [{ filePath: "foo.js", errorCount: 1, warningCount: 0, @@ -143,8 +143,8 @@ describe("formatter:html", function() { }]; it("should return a string in HTML format with 1 issue in 1 file and styled accordingly", function() { - let result = formatter(code); - let $ = cheerio.load(result); + const result = formatter(code); + const $ = cheerio.load(result); // Check overview checkOverview($, {bgColor: "bg-2", problems: "1 problem (1 error, 0 warnings)"}); @@ -159,7 +159,7 @@ describe("formatter:html", function() { describe("when passed no error/warning messages", function() { - let code = [{ + const code = [{ filePath: "foo.js", errorCount: 0, warningCount: 0, @@ -167,8 +167,8 @@ describe("formatter:html", function() { }]; it("should return a string in HTML format with 0 issues in 1 file and styled accordingly", function() { - let result = formatter(code); - let $ = cheerio.load(result); + const result = formatter(code); + const $ = cheerio.load(result); // Check overview checkOverview($, {bgColor: "bg-0", problems: "0 problems"}); @@ -180,7 +180,7 @@ describe("formatter:html", function() { }); describe("when passed multiple messages", function() { - let code = [{ + const code = [{ filePath: "foo.js", errorCount: 1, warningCount: 1, @@ -202,8 +202,8 @@ describe("formatter:html", function() { }]; it("should return a string in HTML format with 2 issues in 1 file and styled accordingly", function() { - let result = formatter(code); - let $ = cheerio.load(result); + const result = formatter(code); + const $ = cheerio.load(result); // Check overview checkOverview($, {bgColor: "bg-2", problems: "2 problems (1 error, 1 warning)"}); @@ -218,7 +218,7 @@ describe("formatter:html", function() { }); describe("when passed multiple files with 1 error & warning message respectively", function() { - let code = [{ + const code = [{ filePath: "foo.js", errorCount: 1, warningCount: 0, @@ -245,8 +245,8 @@ describe("formatter:html", function() { }]; it("should return a string in HTML format with 2 issues in 2 files and styled accordingly", function() { - let result = formatter(code); - let $ = cheerio.load(result); + const result = formatter(code); + const $ = cheerio.load(result); // Check overview checkOverview($, {bgColor: "bg-2", problems: "2 problems (1 error, 1 warning)"}); @@ -262,7 +262,7 @@ describe("formatter:html", function() { }); describe("when passed multiple files with 1 warning message each", function() { - let code = [{ + const code = [{ filePath: "foo.js", errorCount: 0, warningCount: 1, @@ -289,8 +289,8 @@ describe("formatter:html", function() { }]; it("should return a string in HTML format with 2 issues in 2 files and styled accordingly", function() { - let result = formatter(code); - let $ = cheerio.load(result); + const result = formatter(code); + const $ = cheerio.load(result); // Check overview checkOverview($, {bgColor: "bg-1", problems: "2 problems (0 errors, 2 warnings)"}); @@ -307,7 +307,7 @@ describe("formatter:html", function() { describe("when passing a single message with illegal characters", function() { - let code = [{ + const code = [{ filePath: "foo.js", errorCount: 1, warningCount: 0, @@ -322,8 +322,8 @@ describe("formatter:html", function() { }]; it("should return a string in HTML format with 1 issue in 1 file", function() { - let result = formatter(code); - let $ = cheerio.load(result); + const result = formatter(code); + const $ = cheerio.load(result); checkContentRow($, $("tr")[1], {group: "f-0", lineCol: "5:10", color: "clr-2", message: "Unexpected <&"'> foo.", ruleId: "foo"}); }); @@ -352,7 +352,7 @@ describe("formatter:html", function() { // */ describe("when passing a single message with no rule id or message", function() { - let code = [{ + const code = [{ filePath: "foo.js", errorCount: 1, warningCount: 0, @@ -364,8 +364,8 @@ describe("formatter:html", function() { }]; it("should return a string in HTML format with 1 issue in 1 file", function() { - let result = formatter(code); - let $ = cheerio.load(result); + const result = formatter(code); + const $ = cheerio.load(result); checkContentRow($, $("tr")[1], {group: "f-0", lineCol: "5:10", color: "clr-2", message: "", ruleId: ""}); }); @@ -373,7 +373,7 @@ describe("formatter:html", function() { describe("when passed a single message with no line or column", function() { - let code = [{ + const code = [{ filePath: "foo.js", errorCount: 1, warningCount: 0, @@ -386,8 +386,8 @@ describe("formatter:html", function() { }]; it("should return a string in HTML format with 1 issue in 1 file and styled accordingly", function() { - let result = formatter(code); - let $ = cheerio.load(result); + const result = formatter(code); + const $ = cheerio.load(result); checkContentRow($, $("tr")[1], {group: "f-0", lineCol: "0:0", color: "clr-2", message: "Unexpected foo.", ruleId: "foo"}); }); diff --git a/tests/lib/formatters/jslint-xml.js b/tests/lib/formatters/jslint-xml.js index b77bd99f07a..9f5a0da62ea 100644 --- a/tests/lib/formatters/jslint-xml.js +++ b/tests/lib/formatters/jslint-xml.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, formatter = require("../../../lib/formatters/jslint-xml"); //------------------------------------------------------------------------------ @@ -19,7 +19,7 @@ let assert = require("chai").assert, describe("formatter:jslint-xml", function() { describe("when passed a single message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -32,7 +32,7 @@ describe("formatter:jslint-xml", function() { }]; it("should return a string in JSLint XML format with 1 issue in 1 file", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, ""); }); @@ -40,7 +40,7 @@ describe("formatter:jslint-xml", function() { describe("when passed a fatal error message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ fatal: true, @@ -53,14 +53,14 @@ describe("formatter:jslint-xml", function() { }]; it("should return a string in JSLint XML format with 1 issue in 1 file", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, ""); }); }); describe("when passed multiple messages", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -80,14 +80,14 @@ describe("formatter:jslint-xml", function() { }]; it("should return a string in JSLint XML format with 2 issues in 1 file", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, ""); }); }); describe("when passed multiple files with 1 message each", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -110,7 +110,7 @@ describe("formatter:jslint-xml", function() { }]; it("should return a string in JSLint XML format with 2 issues in 2 files", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, ""); }); @@ -118,7 +118,7 @@ describe("formatter:jslint-xml", function() { describe("when passing a single message with illegal characters", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected <&\"'>\b\t\n\f\r牛逼 foo.", @@ -131,7 +131,7 @@ describe("formatter:jslint-xml", function() { }]; it("should return a string in JSLint XML format with 1 issue in 1 file", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, ""); }); @@ -139,7 +139,7 @@ describe("formatter:jslint-xml", function() { describe("when passing a single message with no source", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -151,14 +151,14 @@ describe("formatter:jslint-xml", function() { }]; it("should return a string in JSLint XML format with 1 issue in 1 file", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, ""); }); }); describe("when passing a single message without rule id", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ severity: 2, @@ -168,7 +168,7 @@ describe("formatter:jslint-xml", function() { }]; it("should return a string in JSLint XML format with 1 issue in 1 file", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, ""); }); diff --git a/tests/lib/formatters/json.js b/tests/lib/formatters/json.js index bac9e20879c..8a14f8f4ee2 100644 --- a/tests/lib/formatters/json.js +++ b/tests/lib/formatters/json.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, formatter = require("../../../lib/formatters/json"); //------------------------------------------------------------------------------ @@ -17,7 +17,7 @@ let assert = require("chai").assert, //------------------------------------------------------------------------------ describe("formatter:json", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -40,7 +40,7 @@ describe("formatter:json", function() { }]; it("should return passed results as a JSON string without any modification", function() { - let result = JSON.parse(formatter(code)); + const result = JSON.parse(formatter(code)); assert.deepEqual(result, code); }); diff --git a/tests/lib/formatters/junit.js b/tests/lib/formatters/junit.js index 56e67b531cf..961710c1cdf 100644 --- a/tests/lib/formatters/junit.js +++ b/tests/lib/formatters/junit.js @@ -11,7 +11,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, formatter = require("../../../lib/formatters/junit"); //------------------------------------------------------------------------------ @@ -20,17 +20,17 @@ let assert = require("chai").assert, describe("formatter:junit", function() { describe("when there are no problems", function() { - let code = []; + const code = []; it("should not complain about anything", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result.replace(/\n/g, ""), ""); }); }); describe("when passed a single message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -42,21 +42,21 @@ describe("formatter:junit", function() { }]; it("should return a single with a message and the line and col number in the body (error)", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result.replace(/\n/g, ""), ""); }); it("should return a single with a message and the line and col number in the body (warning)", function() { code[0].messages[0].severity = 1; - let result = formatter(code); + const result = formatter(code); assert.equal(result.replace(/\n/g, ""), ""); }); }); describe("when passed a fatal error message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ fatal: true, @@ -68,14 +68,14 @@ describe("formatter:junit", function() { }]; it("should return a single and an ", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result.replace(/\n/g, ""), ""); }); }); describe("when passed a fatal error message with no line or column", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ fatal: true, @@ -84,14 +84,14 @@ describe("formatter:junit", function() { }]; it("should return a single and an ", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result.replace(/\n/g, ""), ""); }); }); describe("when passed a fatal error message with no line, column, or message text", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ fatal: true @@ -99,14 +99,14 @@ describe("formatter:junit", function() { }]; it("should return a single and an ", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result.replace(/\n/g, ""), ""); }); }); describe("when passed multiple messages", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -124,14 +124,14 @@ describe("formatter:junit", function() { }]; it("should return a multiple 's", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result.replace(/\n/g, ""), ""); }); }); describe("when passed special characters", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected \b\t\n\f\r牛逼.", @@ -143,14 +143,14 @@ describe("formatter:junit", function() { }]; it("should make them go away", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result.replace(/\n/g, ""), ""); }); }); describe("when passed multiple files with 1 message each", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -171,14 +171,14 @@ describe("formatter:junit", function() { }]; it("should return 2 's", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result.replace(/\n/g, ""), ""); }); }); describe("when passed multiple files with total 1 failure", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -193,7 +193,7 @@ describe("formatter:junit", function() { }]; it("should return 1 ", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result.replace(/\n/g, ""), ""); }); diff --git a/tests/lib/formatters/stylish.js b/tests/lib/formatters/stylish.js index ae192503d16..2979b046ff3 100644 --- a/tests/lib/formatters/stylish.js +++ b/tests/lib/formatters/stylish.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, chalk = require("chalk"), proxyquire = require("proxyquire"), sinon = require("sinon"); // Chalk protects its methods so we need to inherit from it // for Sinon to work. -let chalkStub = Object.create(chalk, { +const chalkStub = Object.create(chalk, { yellow: { value: function(str) { return chalk.yellow(str); @@ -34,15 +34,15 @@ let chalkStub = Object.create(chalk, { chalkStub.yellow.bold = chalk.yellow.bold; chalkStub.red.bold = chalk.red.bold; -let formatter = proxyquire("../../../lib/formatters/stylish", { chalk: chalkStub }); +const formatter = proxyquire("../../../lib/formatters/stylish", { chalk: chalkStub }); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ describe("formatter:stylish", function() { - let sandbox, - colorsEnabled = chalk.enabled; + let sandbox; + const colorsEnabled = chalk.enabled; beforeEach(function() { chalk.enabled = false; @@ -57,13 +57,13 @@ describe("formatter:stylish", function() { }); describe("when passed no messages", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [] }]; it("should not return message", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, ""); assert.equal(chalkStub.yellow.bold.callCount, 0); @@ -72,7 +72,7 @@ describe("formatter:stylish", function() { }); describe("when passed a single message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -84,7 +84,7 @@ describe("formatter:stylish", function() { }]; it("should return a string in the correct format for errors", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "\nfoo.js\n 5:10 error Unexpected foo foo\n\n\u2716 1 problem (1 error, 0 warnings)\n"); assert.equal(chalkStub.yellow.bold.callCount, 0); @@ -93,7 +93,7 @@ describe("formatter:stylish", function() { it("should return a string in the correct format for warnings", function() { code[0].messages[0].severity = 1; - let result = formatter(code); + const result = formatter(code); assert.equal(result, "\nfoo.js\n 5:10 warning Unexpected foo foo\n\n\u2716 1 problem (0 errors, 1 warning)\n"); assert.equal(chalkStub.yellow.bold.callCount, 1); @@ -102,7 +102,7 @@ describe("formatter:stylish", function() { }); describe("when passed a fatal error message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ fatal: true, @@ -114,7 +114,7 @@ describe("formatter:stylish", function() { }]; it("should return a string in the correct format", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "\nfoo.js\n 5:10 error Unexpected foo foo\n\n\u2716 1 problem (1 error, 0 warnings)\n"); assert.equal(chalkStub.yellow.bold.callCount, 0); @@ -123,7 +123,7 @@ describe("formatter:stylish", function() { }); describe("when passed multiple messages", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -141,7 +141,7 @@ describe("formatter:stylish", function() { }]; it("should return a string with multiple entries", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "\nfoo.js\n 5:10 error Unexpected foo foo\n 6:11 warning Unexpected bar bar\n\n\u2716 2 problems (1 error, 1 warning)\n"); assert.equal(chalkStub.yellow.bold.callCount, 0); @@ -150,7 +150,7 @@ describe("formatter:stylish", function() { }); describe("when passed multiple files with 1 message each", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -171,7 +171,7 @@ describe("formatter:stylish", function() { }]; it("should return a string with multiple entries", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "\nfoo.js\n 5:10 error Unexpected foo foo\n\nbar.js\n 6:11 warning Unexpected bar bar\n\n\u2716 2 problems (1 error, 1 warning)\n"); assert.equal(chalkStub.yellow.bold.callCount, 0); @@ -180,7 +180,7 @@ describe("formatter:stylish", function() { }); describe("when passed one file not found message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ fatal: true, @@ -189,7 +189,7 @@ describe("formatter:stylish", function() { }]; it("should return a string without line and column", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "\nfoo.js\n 0:0 error Couldn't find foo.js\n\n\u2716 1 problem (1 error, 0 warnings)\n"); assert.equal(chalkStub.yellow.bold.callCount, 0); diff --git a/tests/lib/formatters/table.js b/tests/lib/formatters/table.js index 67e581f26fc..99dba33e56e 100644 --- a/tests/lib/formatters/table.js +++ b/tests/lib/formatters/table.js @@ -8,11 +8,8 @@ // Requirements //------------------------------------------------------------------------------ -let assert, - formatter; - -assert = require("chai").assert; -formatter = require("../../../lib/formatters/table"); +const assert = require("chai").assert, + formatter = require("../../../lib/formatters/table"); //------------------------------------------------------------------------------ // Tests @@ -20,9 +17,7 @@ formatter = require("../../../lib/formatters/table"); describe("formatter:table", function() { describe("when passed no messages", function() { - let code; - - code = [ + const code = [ { filePath: "foo.js", messages: [], @@ -32,10 +27,7 @@ describe("formatter:table", function() { ]; it("should return a table of error and warning count with no messages", function() { - let expectedOutput, - result; - - expectedOutput = [ + const expectedOutput = [ "", "╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗", "║ 0 Errors ║", @@ -43,11 +35,9 @@ describe("formatter:table", function() { "║ 0 Warnings ║", "╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝", "" - ]; - - expectedOutput = expectedOutput.join("\n"); + ].join("\n"); - result = formatter(code); + const result = formatter(code); assert.equal(result, expectedOutput); }); @@ -55,11 +45,7 @@ describe("formatter:table", function() { describe("when passed a single message", function() { it("should return a string in the correct format for errors", function() { - let expectedOutput, - code, - result; - - code = [ + const code = [ { filePath: "foo.js", messages: [ @@ -76,7 +62,7 @@ describe("formatter:table", function() { } ]; - expectedOutput = [ + const expectedOutput = [ "", "foo.js", "", @@ -90,21 +76,15 @@ describe("formatter:table", function() { "║ 0 Warnings ║", "╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝", "" - ]; - - expectedOutput = expectedOutput.join("\n"); + ].join("\n"); - result = formatter(code); + const result = formatter(code); assert.equal(result, expectedOutput); }); it("should return a string in the correct format for warnings", function() { - let expectedOutput, - code, - result; - - code = [ + const code = [ { filePath: "foo.js", messages: [ @@ -121,7 +101,7 @@ describe("formatter:table", function() { } ]; - expectedOutput = [ + const expectedOutput = [ "", "foo.js", "", @@ -135,22 +115,17 @@ describe("formatter:table", function() { "║ 1 Warning ║", "╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝", "" - ]; + ].join("\n"); - expectedOutput = expectedOutput.join("\n"); + const result = formatter(code); - result = formatter(code); assert.equal(result, expectedOutput); }); }); describe("when passed a fatal error message", function() { it("should return a string in the correct format", function() { - let code, - expectedOutput, - result; - - code = [ + const code = [ { filePath: "foo.js", messages: [ @@ -167,7 +142,7 @@ describe("formatter:table", function() { } ]; - expectedOutput = [ + const expectedOutput = [ "", "foo.js", "", @@ -181,11 +156,9 @@ describe("formatter:table", function() { "║ 0 Warnings ║", "╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝", "" - ]; - - expectedOutput = expectedOutput.join("\n"); + ].join("\n"); - result = formatter(code); + const result = formatter(code); assert.equal(result, expectedOutput); }); @@ -193,11 +166,7 @@ describe("formatter:table", function() { describe("when passed multiple messages", function() { it("should return a string with multiple entries", function() { - let code, - expectedOutput, - result; - - code = [ + const code = [ { filePath: "foo.js", messages: [ @@ -221,7 +190,7 @@ describe("formatter:table", function() { } ]; - expectedOutput = [ + const expectedOutput = [ "", "foo.js", "", @@ -236,11 +205,9 @@ describe("formatter:table", function() { "║ 1 Warning ║", "╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝", "" - ]; - - expectedOutput = expectedOutput.join("\n"); + ].join("\n"); - result = formatter(code); + const result = formatter(code); assert.equal(result, expectedOutput); }); @@ -248,11 +215,7 @@ describe("formatter:table", function() { describe("when passed multiple files with 1 message each", function() { it("should return a string with multiple entries", function() { - let code, - expectedOutput, - result; - - code = [ + const code = [ { filePath: "foo.js", messages: [ @@ -282,7 +245,7 @@ describe("formatter:table", function() { } ]; - expectedOutput = [ + const expectedOutput = [ "", "foo.js", "", @@ -302,11 +265,9 @@ describe("formatter:table", function() { "║ 1 Warning ║", "╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝", "" - ]; - - expectedOutput = expectedOutput.join("\n"); + ].join("\n"); - result = formatter(code); + const result = formatter(code); assert.equal(result, expectedOutput); }); @@ -314,11 +275,7 @@ describe("formatter:table", function() { describe("when passed one file not found message", function() { it("should return a string without line and column (0, 0)", function() { - let code, - expectedOutput, - result; - - code = [ + const code = [ { filePath: "foo.js", messages: [ @@ -332,7 +289,7 @@ describe("formatter:table", function() { } ]; - expectedOutput = [ + const expectedOutput = [ "", "foo.js", "", @@ -346,11 +303,9 @@ describe("formatter:table", function() { "║ 0 Warnings ║", "╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝", "" - ]; - - expectedOutput = expectedOutput.join("\n"); + ].join("\n"); - result = formatter(code); + const result = formatter(code); assert.equal(result, expectedOutput); }); diff --git a/tests/lib/formatters/tap.js b/tests/lib/formatters/tap.js index 49dc72fc2ad..56cdff85b45 100644 --- a/tests/lib/formatters/tap.js +++ b/tests/lib/formatters/tap.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, formatter = require("../../../lib/formatters/tap"); //------------------------------------------------------------------------------ @@ -18,20 +18,20 @@ let assert = require("chai").assert, describe("formatter:tap", function() { describe("when passed no messages", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [] }]; it("should return nothing", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "TAP version 13\n1..1\nok 1 - foo.js\n"); }); }); describe("when passed a single message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -43,14 +43,14 @@ describe("formatter:tap", function() { }]; it("should return a string with YAML severity, line and column", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "TAP version 13\n1..1\nnot ok 1 - foo.js\n ---\n message: Unexpected foo.\n severity: error\n data:\n line: 5\n column: 10\n ruleId: foo\n ...\n"); }); it("should return a string with line: x, column: y, severity: warning for warnings", function() { code[0].messages[0].severity = 1; - let result = formatter(code); + const result = formatter(code); assert.include(result, "line: 5"); assert.include(result, "column: 10"); @@ -61,7 +61,7 @@ describe("formatter:tap", function() { }); describe("when passed a fatal error message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ fatal: true, @@ -73,7 +73,7 @@ describe("formatter:tap", function() { }]; it("should return a an error string", function() { - let result = formatter(code); + const result = formatter(code); assert.include(result, "not ok"); assert.include(result, "error"); @@ -81,7 +81,7 @@ describe("formatter:tap", function() { }); describe("when passed multiple messages", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -105,7 +105,7 @@ describe("formatter:tap", function() { }]; it("should return a string with multiple entries", function() { - let result = formatter(code); + const result = formatter(code); assert.include(result, "not ok"); assert.include(result, "messages"); @@ -122,7 +122,7 @@ describe("formatter:tap", function() { }); describe("when passed multiple files with 1 message each", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -143,7 +143,7 @@ describe("formatter:tap", function() { }]; it("should return a string with multiple entries", function() { - let result = formatter(code); + const result = formatter(code); assert.include(result, "not ok 1"); assert.include(result, "not ok 2"); @@ -151,7 +151,7 @@ describe("formatter:tap", function() { }); describe("when passed one file not found message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ fatal: true, @@ -160,7 +160,7 @@ describe("formatter:tap", function() { }]; it("should return a string without line and column", function() { - let result = formatter(code); + const result = formatter(code); assert.include(result, "line: 0"); assert.include(result, "column: 0"); diff --git a/tests/lib/formatters/unix.js b/tests/lib/formatters/unix.js index bff6ae58194..695ab5f87a0 100644 --- a/tests/lib/formatters/unix.js +++ b/tests/lib/formatters/unix.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, formatter = require("../../../lib/formatters/unix"); //------------------------------------------------------------------------------ @@ -18,20 +18,20 @@ let assert = require("chai").assert, describe("formatter:compact", function() { describe("when passed no messages", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [] }]; it("should return nothing", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, ""); }); }); describe("when passed a single message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -43,21 +43,21 @@ describe("formatter:compact", function() { }]; it("should return a string in the format filename:line:column: error [Error/rule_id]", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "foo.js:5:10: Unexpected foo. [Error/foo]\n\n1 problem"); }); it("should return a string in the format filename:line:column: warning [Warning/rule_id]", function() { code[0].messages[0].severity = 1; - let result = formatter(code); + const result = formatter(code); assert.equal(result, "foo.js:5:10: Unexpected foo. [Warning/foo]\n\n1 problem"); }); }); describe("when passed a fatal error message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ fatal: true, @@ -69,14 +69,14 @@ describe("formatter:compact", function() { }]; it("should return a string in the format filename:line:column: error [Error/rule_id]", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "foo.js:5:10: Unexpected foo. [Error/foo]\n\n1 problem"); }); }); describe("when passed multiple messages", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -94,14 +94,14 @@ describe("formatter:compact", function() { }]; it("should return a string with multiple entries", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "foo.js:5:10: Unexpected foo. [Error/foo]\nfoo.js:6:11: Unexpected bar. [Warning/bar]\n\n2 problems"); }); }); describe("when passed multiple files with 1 message each", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -122,14 +122,14 @@ describe("formatter:compact", function() { }]; it("should return a string with multiple entries", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "foo.js:5:10: Unexpected foo. [Error/foo]\nbar.js:6:11: Unexpected bar. [Warning/bar]\n\n2 problems"); }); }); describe("when passed one file not found message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ fatal: true, @@ -138,7 +138,7 @@ describe("formatter:compact", function() { }]; it("should return a string without line and column", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "foo.js:0:0: Couldn't find foo.js. [Error]\n\n1 problem"); }); diff --git a/tests/lib/formatters/visualstudio.js b/tests/lib/formatters/visualstudio.js index cc6826ff3dc..2639b8e1f23 100644 --- a/tests/lib/formatters/visualstudio.js +++ b/tests/lib/formatters/visualstudio.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, formatter = require("../../../lib/formatters/visualstudio"); //------------------------------------------------------------------------------ @@ -18,20 +18,20 @@ let assert = require("chai").assert, describe("formatter:visualstudio", function() { describe("when passed no messages", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [] }]; it("should return nothing", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "no problems"); }); }); describe("when passed a single message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -43,21 +43,21 @@ describe("formatter:visualstudio", function() { }]; it("should return a string in the format filename(x,y): error z for errors", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "foo.js(5,10): error foo : Unexpected foo.\n\n1 problem"); }); it("should return a string in the format filename(x,y): warning z for warnings", function() { code[0].messages[0].severity = 1; - let result = formatter(code); + const result = formatter(code); assert.equal(result, "foo.js(5,10): warning foo : Unexpected foo.\n\n1 problem"); }); }); describe("when passed a fatal error message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ fatal: true, @@ -69,14 +69,14 @@ describe("formatter:visualstudio", function() { }]; it("should return a string in the format filename(x,y): error z", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "foo.js(5,10): error foo : Unexpected foo.\n\n1 problem"); }); }); describe("when passed multiple messages", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -94,14 +94,14 @@ describe("formatter:visualstudio", function() { }]; it("should return a string with multiple entries", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "foo.js(5,10): error foo : Unexpected foo.\nfoo.js(6,11): warning bar : Unexpected bar.\n\n2 problems"); }); }); describe("when passed multiple files with 1 message each", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ message: "Unexpected foo.", @@ -122,14 +122,14 @@ describe("formatter:visualstudio", function() { }]; it("should return a string with multiple entries", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "foo.js(5,10): error foo : Unexpected foo.\nbar.js(6,11): warning bar : Unexpected bar.\n\n2 problems"); }); }); describe("when passed one file not found message", function() { - let code = [{ + const code = [{ filePath: "foo.js", messages: [{ fatal: true, @@ -138,7 +138,7 @@ describe("formatter:visualstudio", function() { }]; it("should return a string without line and column", function() { - let result = formatter(code); + const result = formatter(code); assert.equal(result, "foo.js(0): error : Couldn't find foo.js.\n\n1 problem"); }); diff --git a/tests/lib/ignored-paths.js b/tests/lib/ignored-paths.js index 82eb97e2b29..77f45b621d9 100644 --- a/tests/lib/ignored-paths.js +++ b/tests/lib/ignored-paths.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, path = require("path"), os = require("os"), IgnoredPaths = require("../../lib/ignored-paths.js"), @@ -33,14 +33,14 @@ let fixtureDir; * @returns {string[]} raw ignore rules */ function getIgnoreRules(ignoredPaths) { - let ignoreRulesProperty = "_rules"; + const ignoreRulesProperty = "_rules"; let ignoreRules = []; Object.keys(ignoredPaths.ig).forEach(function(key) { - let rules = ignoredPaths.ig[key][ignoreRulesProperty]; + const rules = ignoredPaths.ig[key][ignoreRulesProperty]; rules.forEach(function(rule) { - let ruleOrigins = ignoreRules.map(function(ruleObj) { + const ruleOrigins = ignoreRules.map(function(ruleObj) { return ruleObj.origin; }); @@ -73,7 +73,7 @@ function getIgnoreFiles(ignoredPaths) { * @returns {string[]} Ignore patterns */ function getIgnorePatterns(ignoredPaths) { - let ignoreRules = getIgnoreRules(ignoredPaths); + const ignoreRules = getIgnoreRules(ignoredPaths); return ignoreRules.map(function(rule) { return rule.origin; @@ -100,7 +100,7 @@ function countDefaultPatterns(ignoredPaths) { * @private */ function getFixturePath() { - let args = Array.prototype.slice.call(arguments); + const args = Array.prototype.slice.call(arguments); args.unshift(fs.realpathSync(fixtureDir)); return path.join.apply(path, args); @@ -126,9 +126,9 @@ describe("IgnoredPaths", function() { describe("initialization", function() { it("should load .eslintignore from cwd when explicitly passed", function() { - let expectedIgnoreFile = getFixturePath(".eslintignore"); - let ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath() }); - let ignorePatterns = getIgnorePatterns(ignoredPaths); + const expectedIgnoreFile = getFixturePath(".eslintignore"); + const ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath() }); + const ignorePatterns = getIgnorePatterns(ignoredPaths); assert.isNotNull(ignoredPaths.baseDir); assert.equal(getIgnoreFiles(ignoredPaths), expectedIgnoreFile); @@ -136,29 +136,29 @@ describe("IgnoredPaths", function() { }); it("should set baseDir to cwd when no ignore file was loaded", function() { - let ignoredPaths = new IgnoredPaths({ cwd: getFixturePath("no-ignore-file") }); + const ignoredPaths = new IgnoredPaths({ cwd: getFixturePath("no-ignore-file") }); assert.equal(ignoredPaths.baseDir, getFixturePath("no-ignore-file")); }); it("should not travel to parent directories to find .eslintignore when it's missing and cwd is provided", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath("configurations") }); + const ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath("configurations") }); assert.lengthOf(getIgnoreRules(ignoredPaths), 4); assert.lengthOf(getIgnoreFiles(ignoredPaths), 0); }); it("should load empty array with ignorePath set to false", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: false, cwd: getFixturePath("no-ignore-file") }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: false, cwd: getFixturePath("no-ignore-file") }); assert.isArray(getIgnoreRules(ignoredPaths)); assert.lengthOf(getIgnoreRules(ignoredPaths), countDefaultPatterns(ignoredPaths)); }); it("should accept an array for options.ignorePattern", function() { - let ignorePattern = ["a", "b"]; + const ignorePattern = ["a", "b"]; - let ignoredPaths = new IgnoredPaths({ + const ignoredPaths = new IgnoredPaths({ ignorePattern: ignorePattern }); @@ -173,7 +173,7 @@ describe("IgnoredPaths", function() { describe("initialization with ignorePattern", function() { it("should ignore a normal pattern", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePattern: "ignore-me.txt", cwd: getFixturePath("ignore-pattern") }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePattern: "ignore-me.txt", cwd: getFixturePath("ignore-pattern") }); assert.isTrue(ignoredPaths.contains(getFixturePath("ignore-pattern", "ignore-me.txt"))); }); @@ -189,7 +189,7 @@ describe("IgnoredPaths", function() { }); it("should set baseDir to directory containing ignorePath if provided", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: ignoreFilePath, cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: ignoreFilePath, cwd: getFixturePath() }); assert.equal(ignoredPaths.baseDir, path.dirname(ignoreFilePath)); }); @@ -205,19 +205,19 @@ describe("IgnoredPaths", function() { }); it("should work when cwd is a parent directory", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: ignoreFilePath, cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: ignoreFilePath, cwd: getFixturePath() }); assert.notEqual(getIgnoreRules(ignoredPaths).length, countDefaultPatterns(ignoredPaths)); }); it("should work when the file is in the cwd", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: ignoreFilePath, cwd: getFixturePath("custom-name") }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: ignoreFilePath, cwd: getFixturePath("custom-name") }); assert.notEqual(getIgnoreRules(ignoredPaths).length, countDefaultPatterns(ignoredPaths)); }); it("should work when cwd is a subdirectory", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: ignoreFilePath, cwd: getFixturePath("custom-name", "subdirectory") }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: ignoreFilePath, cwd: getFixturePath("custom-name", "subdirectory") }); assert.notEqual(getIgnoreRules(ignoredPaths).length, countDefaultPatterns(ignoredPaths)); }); @@ -227,7 +227,7 @@ describe("IgnoredPaths", function() { describe("initialization without ignorePath", function() { it("should not load an ignore file if none is in cwd", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath("no-ignore-file") }); + const ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath("no-ignore-file") }); assert.lengthOf(getIgnoreFiles(ignoredPaths), 0); assert.lengthOf(getIgnoreRules(ignoredPaths), countDefaultPatterns(ignoredPaths)); @@ -245,7 +245,7 @@ describe("IgnoredPaths", function() { it("should throw error", function() { assert.throws(function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: invalidFilepath, cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: invalidFilepath, cwd: getFixturePath() }); assert.ok(ignoredPaths); }, "Cannot read ignore file"); @@ -256,13 +256,13 @@ describe("IgnoredPaths", function() { describe("contains", function() { it("should throw if initialized with invalid options", function() { - let ignoredPaths = new IgnoredPaths(null); + const ignoredPaths = new IgnoredPaths(null); assert.throw(ignoredPaths.contains, Error); }); it("should not throw if given a relative filename", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePattern: "undef.js", cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePattern: "undef.js", cwd: getFixturePath() }); assert.doesNotThrow(function() { ignoredPaths.contains("undef.js"); @@ -270,7 +270,7 @@ describe("IgnoredPaths", function() { }); it("should return true for files which match an ignorePattern even if they do not exist on the filesystem", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePattern: "not-a-file", cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePattern: "not-a-file", cwd: getFixturePath() }); assert.isTrue(ignoredPaths.contains(getFixturePath("not-a-file"))); }); @@ -278,43 +278,43 @@ describe("IgnoredPaths", function() { it("should return false for files outside of the cwd (with no ignore file provided)", function() { // Default ignore patterns should not inadvertantly ignore files in parent directories - let ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath("no-ignore-file") }); + const ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath("no-ignore-file") }); assert.isFalse(ignoredPaths.contains(getFixturePath("undef.js"))); }); it("should return false for files outside of ignorePath's directory", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: getFixturePath("custom-name", "ignore-file"), cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: getFixturePath("custom-name", "ignore-file"), cwd: getFixturePath() }); assert.isFalse(ignoredPaths.contains(getFixturePath("undef.js"))); }); it("should return true for file matching an ignore pattern exactly", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePattern: "undef.js", cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePattern: "undef.js", cwd: getFixturePath() }); assert.isTrue(ignoredPaths.contains(getFixturePath("undef.js"))); }); it("should return false for file matching an invalid ignore pattern with leading './'", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePattern: "./undef.js", cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePattern: "./undef.js", cwd: getFixturePath() }); assert.isFalse(ignoredPaths.contains(getFixturePath("undef.js"))); }); it("should return false for file in subfolder of cwd matching an ignore pattern with leading '/'", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePattern: "/undef.js", cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePattern: "/undef.js", cwd: getFixturePath() }); assert.isFalse(ignoredPaths.contains(getFixturePath("subdir", "undef.js"))); }); it("should return true for file matching a child of an ignore pattern", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePattern: "ignore-pattern", cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePattern: "ignore-pattern", cwd: getFixturePath() }); assert.isTrue(ignoredPaths.contains(getFixturePath("ignore-pattern", "ignore-me.txt"))); }); it("should return true for file matching a grandchild of an ignore pattern", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePattern: "ignore-pattern", cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePattern: "ignore-pattern", cwd: getFixturePath() }); assert.isTrue(ignoredPaths.contains(getFixturePath("ignore-pattern", "subdir", "ignore-me.txt"))); }); @@ -326,7 +326,7 @@ describe("IgnoredPaths", function() { sinon.stub(fs, "statSync") .withArgs("subdir") .returns(); - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: ".eslintignore", cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: ".eslintignore", cwd: getFixturePath() }); assert.isTrue(ignoredPaths.contains(getFixturePath("subdir/undef.js"))); @@ -335,13 +335,13 @@ describe("IgnoredPaths", function() { }); it("should return false for file not matching any ignore pattern", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePattern: "failing.js", cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePattern: "failing.js", cwd: getFixturePath() }); assert.isFalse(ignoredPaths.contains(getFixturePath("unignored.js"))); }); it("should return false for ignored file when unignored with ignore pattern", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: getFixturePath(".eslintignore"), ignorePattern: "!sampleignorepattern", cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: getFixturePath(".eslintignore"), ignorePattern: "!sampleignorepattern", cwd: getFixturePath() }); assert.isFalse(ignoredPaths.contains(getFixturePath("sampleignorepattern"))); @@ -357,8 +357,8 @@ describe("IgnoredPaths", function() { }); it("should not include comments in ignore rules", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: ignoreFilePath, cwd: getFixturePath() }); - let ignorePatterns = getIgnorePatterns(ignoredPaths); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: ignoreFilePath, cwd: getFixturePath() }); + const ignorePatterns = getIgnorePatterns(ignoredPaths); assert.equal(getIgnoreRules(ignoredPaths).length, countDefaultPatterns(ignoredPaths) + 1); assert.include(ignorePatterns, "this_one_not"); @@ -374,13 +374,13 @@ describe("IgnoredPaths", function() { }); it("should ignore a non-negated pattern", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: ignoreFilePath, cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: ignoreFilePath, cwd: getFixturePath() }); assert.isTrue(ignoredPaths.contains(getFixturePath("negation", "ignore.js"))); }); it("should not ignore a negated pattern", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: ignoreFilePath, cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: ignoreFilePath, cwd: getFixturePath() }); assert.isFalse(ignoredPaths.contains(getFixturePath("negation", "unignore.js"))); }); @@ -390,93 +390,93 @@ describe("IgnoredPaths", function() { describe("default ignores", function() { it("should contain /bower_components/*", function() { - let ignoredPaths = new IgnoredPaths(); + const ignoredPaths = new IgnoredPaths(); assert.include(ignoredPaths.defaultPatterns, "/bower_components/*"); }); it("should contain /node_modules/*", function() { - let ignoredPaths = new IgnoredPaths(); + const ignoredPaths = new IgnoredPaths(); assert.include(ignoredPaths.defaultPatterns, "/node_modules/*"); }); it("should always apply defaultPatterns if ignore option is true", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath() }); assert.isTrue(ignoredPaths.contains(getFixturePath("bower_components/package/file.js"))); assert.isTrue(ignoredPaths.contains(getFixturePath("node_modules/package/file.js"))); }); it("should still apply defaultPatterns if ignore option is is false", function() { - let ignoredPaths = new IgnoredPaths({ ignore: false, cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: false, cwd: getFixturePath() }); assert.isTrue(ignoredPaths.contains(getFixturePath("bower_components/package/file.js"))); assert.isTrue(ignoredPaths.contains(getFixturePath("node_modules/package/file.js"))); }); it("should not ignore files in defaultPatterns within a subdirectory", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath() }); assert.isFalse(ignoredPaths.contains(getFixturePath("subdir/bower_components/package/file.js"))); assert.isFalse(ignoredPaths.contains(getFixturePath("subdir/node_modules/package/file.js"))); }); it("should allow subfolders of defaultPatterns to be unignored by ignorePattern", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath(), ignorePattern: "!/node_modules/package" }); + const ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath(), ignorePattern: "!/node_modules/package" }); assert.isFalse(ignoredPaths.contains(getFixturePath("node_modules", "package", "file.js"))); }); it("should allow subfolders of defaultPatterns to be unignored by ignorePath", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath(), ignorePath: getFixturePath(".eslintignoreWithUnignoredDefaults") }); + const ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath(), ignorePath: getFixturePath(".eslintignoreWithUnignoredDefaults") }); assert.isFalse(ignoredPaths.contains(getFixturePath("node_modules", "package", "file.js"))); }); it("should ignore dotfiles", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath() }); assert.isTrue(ignoredPaths.contains(getFixturePath(".foo"))); assert.isTrue(ignoredPaths.contains(getFixturePath("foo/.bar"))); }); it("should ignore directories beginning with a dot", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath() }); assert.isTrue(ignoredPaths.contains(getFixturePath(".foo/bar"))); assert.isTrue(ignoredPaths.contains(getFixturePath("foo/.bar/baz"))); }); it("should still ignore dotfiles when ignore option disabled", function() { - let ignoredPaths = new IgnoredPaths({ ignore: false, cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: false, cwd: getFixturePath() }); assert.isTrue(ignoredPaths.contains(getFixturePath(".foo"))); assert.isTrue(ignoredPaths.contains(getFixturePath("foo/.bar"))); }); it("should still ignore directories beginning with a dot when ignore option disabled", function() { - let ignoredPaths = new IgnoredPaths({ ignore: false, cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: false, cwd: getFixturePath() }); assert.isTrue(ignoredPaths.contains(getFixturePath(".foo/bar"))); assert.isTrue(ignoredPaths.contains(getFixturePath("foo/.bar/baz"))); }); it("should not ignore absolute paths containing '..'", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath() }); assert.isFalse(ignoredPaths.contains(getFixturePath("foo") + "/../unignored.js")); }); it("should ignore /node_modules/ at top level relative to .eslintignore when loaded", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: getFixturePath(".eslintignore"), cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: getFixturePath(".eslintignore"), cwd: getFixturePath() }); assert.isTrue(ignoredPaths.contains(getFixturePath("node_modules", "existing.js"))); assert.isFalse(ignoredPaths.contains(getFixturePath("foo", "node_modules", "existing.js"))); }); it("should ignore /node_modules/ at top level relative to cwd without an .eslintignore", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath("no-ignore-file") }); + const ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath("no-ignore-file") }); assert.isTrue(ignoredPaths.contains(getFixturePath("no-ignore-file", "node_modules", "existing.js"))); assert.isFalse(ignoredPaths.contains(getFixturePath("no-ignore-file", "foo", "node_modules", "existing.js"))); @@ -487,7 +487,7 @@ describe("IgnoredPaths", function() { describe("two globstar '**' ignore pattern", function() { it("should ignore files in nested directories", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePattern: "**/*.js", cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePattern: "**/*.js", cwd: getFixturePath() }); assert.isTrue(ignoredPaths instanceof IgnoredPaths); assert.isTrue(ignoredPaths.contains(getFixturePath("foo.js"))); @@ -502,26 +502,26 @@ describe("IgnoredPaths", function() { describe("dotfiles option", function() { it("should add at least one pattern when false", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, dotfiles: false, cwd: getFixturePath("no-ignore-file") }); + const ignoredPaths = new IgnoredPaths({ ignore: true, dotfiles: false, cwd: getFixturePath("no-ignore-file") }); assert(getIgnoreRules(ignoredPaths).length > ignoredPaths.defaultPatterns.length); }); it("should add no patterns when true", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, dotfiles: true, cwd: getFixturePath("no-ignore-file") }); + const ignoredPaths = new IgnoredPaths({ ignore: true, dotfiles: true, cwd: getFixturePath("no-ignore-file") }); assert.lengthOf(getIgnoreRules(ignoredPaths), ignoredPaths.defaultPatterns.length); }); it("should not ignore dotfiles when true", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, dotfiles: true, cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, dotfiles: true, cwd: getFixturePath() }); assert.isFalse(ignoredPaths.contains(getFixturePath(".foo"))); assert.isFalse(ignoredPaths.contains(getFixturePath("foo/.bar"))); }); it("should not ignore directories beginning with a dot when true", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, dotfiles: true, cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, dotfiles: true, cwd: getFixturePath() }); assert.isFalse(ignoredPaths.contains(getFixturePath(".foo/bar"))); assert.isFalse(ignoredPaths.contains(getFixturePath("foo/.bar/baz"))); @@ -531,45 +531,45 @@ describe("IgnoredPaths", function() { describe("getIgnoredFoldersGlobPatterns", function() { it("should return default ignores glob dir patterns when there is no eslintignore file", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath("no-ignore-file") }); + const ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath("no-ignore-file") }); - let expected = ["node_modules/**", "bower_components/**"]; - let actual = ignoredPaths.getIgnoredFoldersGlobPatterns(); + const expected = ["node_modules/**", "bower_components/**"]; + const actual = ignoredPaths.getIgnoredFoldersGlobPatterns(); assert.sameMembers(actual, expected); }); it("should return default glob dir patterns when there is an ignore file without unignored defaults", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: getFixturePath(".eslintignore"), cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: getFixturePath(".eslintignore"), cwd: getFixturePath() }); - let expected = ["node_modules/**", "bower_components/**"]; - let actual = ignoredPaths.getIgnoredFoldersGlobPatterns(); + const expected = ["node_modules/**", "bower_components/**"]; + const actual = ignoredPaths.getIgnoredFoldersGlobPatterns(); assert.sameMembers(actual, expected); }); it("should not return dirs with unignored defaults in ignore file", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: getFixturePath(".eslintignoreWithUnignoredDefaults"), cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: true, ignorePath: getFixturePath(".eslintignoreWithUnignoredDefaults"), cwd: getFixturePath() }); - let actual = ignoredPaths.getIgnoredFoldersGlobPatterns(); + const actual = ignoredPaths.getIgnoredFoldersGlobPatterns(); assert.notInclude(actual, "node_modules/**"); assert.notInclude(actual, "bower_components/**"); }); it("should return dirs with unignored defaults in ignore file when ignore option is disabled", function() { - let ignoredPaths = new IgnoredPaths({ ignore: false, ignorePath: getFixturePath(".eslintignoreWithUnignoredDefaults"), cwd: getFixturePath() }); + const ignoredPaths = new IgnoredPaths({ ignore: false, ignorePath: getFixturePath(".eslintignoreWithUnignoredDefaults"), cwd: getFixturePath() }); - let expected = ["node_modules/**", "bower_components/**"]; - let actual = ignoredPaths.getIgnoredFoldersGlobPatterns(); + const expected = ["node_modules/**", "bower_components/**"]; + const actual = ignoredPaths.getIgnoredFoldersGlobPatterns(); assert.includeMembers(actual, expected); }); it("should not return dirs unignored by ignorePattern", function() { - let ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath("no-ignore-file"), ignorePattern: "!/node_modules/package" }); + const ignoredPaths = new IgnoredPaths({ ignore: true, cwd: getFixturePath("no-ignore-file"), ignorePattern: "!/node_modules/package" }); - let actual = ignoredPaths.getIgnoredFoldersGlobPatterns(); + const actual = ignoredPaths.getIgnoredFoldersGlobPatterns(); assert.notInclude(actual, "node_modules/**"); assert.include(actual, "bower_components/**"); diff --git a/tests/lib/internal-rules/internal-no-valid-meta.js b/tests/lib/internal-rules/internal-no-valid-meta.js index 5a78d545b6f..0131dcabcaa 100644 --- a/tests/lib/internal-rules/internal-no-valid-meta.js +++ b/tests/lib/internal-rules/internal-no-valid-meta.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/internal-rules/internal-no-invalid-meta"), +const rule = require("../../../lib/internal-rules/internal-no-invalid-meta"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("internal-no-invalid-meta", rule, { valid: [ diff --git a/tests/lib/options.js b/tests/lib/options.js index 23715b70c28..6c1cd4ba275 100644 --- a/tests/lib/options.js +++ b/tests/lib/options.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, options = require("../../lib/options"); //------------------------------------------------------------------------------ @@ -23,7 +23,7 @@ let assert = require("chai").assert, describe("options", function() { describe("--help", function() { it("should return true for .help when passed", function() { - let currentOptions = options.parse("--help"); + const currentOptions = options.parse("--help"); assert.isTrue(currentOptions.help); }); @@ -31,7 +31,7 @@ describe("options", function() { describe("-h", function() { it("should return true for .help when passed", function() { - let currentOptions = options.parse("-h"); + const currentOptions = options.parse("-h"); assert.isTrue(currentOptions.help); }); @@ -39,7 +39,7 @@ describe("options", function() { describe("--config", function() { it("should return a string for .config when passed a string", function() { - let currentOptions = options.parse("--config file"); + const currentOptions = options.parse("--config file"); assert.isString(currentOptions.config); assert.equal(currentOptions.config, "file"); @@ -48,7 +48,7 @@ describe("options", function() { describe("-c", function() { it("should return a string for .config when passed a string", function() { - let currentOptions = options.parse("-c file"); + const currentOptions = options.parse("-c file"); assert.isString(currentOptions.config); assert.equal(currentOptions.config, "file"); @@ -57,14 +57,14 @@ describe("options", function() { describe("--ext", function() { it("should return an array with one item when passed .jsx", function() { - let currentOptions = options.parse("--ext .jsx"); + const currentOptions = options.parse("--ext .jsx"); assert.isArray(currentOptions.ext); assert.equal(currentOptions.ext[0], ".jsx"); }); it("should return an array with two items when passed .js and .jsx", function() { - let currentOptions = options.parse("--ext .jsx --ext .js"); + const currentOptions = options.parse("--ext .jsx --ext .js"); assert.isArray(currentOptions.ext); assert.equal(currentOptions.ext[0], ".jsx"); @@ -72,7 +72,7 @@ describe("options", function() { }); it("should return an array with two items when passed .jsx,.js", function() { - let currentOptions = options.parse("--ext .jsx,.js"); + const currentOptions = options.parse("--ext .jsx,.js"); assert.isArray(currentOptions.ext); assert.equal(currentOptions.ext[0], ".jsx"); @@ -80,7 +80,7 @@ describe("options", function() { }); it("should return an array one item when not passed", function() { - let currentOptions = options.parse(""); + const currentOptions = options.parse(""); assert.isArray(currentOptions.ext); assert.equal(currentOptions.ext[0], ".js"); @@ -89,7 +89,7 @@ describe("options", function() { describe("--rulesdir", function() { it("should return a string for .rulesdir when passed a string", function() { - let currentOptions = options.parse("--rulesdir /morerules"); + const currentOptions = options.parse("--rulesdir /morerules"); assert.isArray(currentOptions.rulesdir); assert.equal(currentOptions.rulesdir, "/morerules"); @@ -98,14 +98,14 @@ describe("options", function() { describe("--format", function() { it("should return a string for .format when passed a string", function() { - let currentOptions = options.parse("--format compact"); + const currentOptions = options.parse("--format compact"); assert.isString(currentOptions.format); assert.equal(currentOptions.format, "compact"); }); it("should return stylish for .format when not passed", function() { - let currentOptions = options.parse(""); + const currentOptions = options.parse(""); assert.isString(currentOptions.format); assert.equal(currentOptions.format, "stylish"); @@ -114,7 +114,7 @@ describe("options", function() { describe("-f", function() { it("should return a string for .format when passed a string", function() { - let currentOptions = options.parse("-f compact"); + const currentOptions = options.parse("-f compact"); assert.isString(currentOptions.format); assert.equal(currentOptions.format, "compact"); @@ -123,7 +123,7 @@ describe("options", function() { describe("--version", function() { it("should return true for .version when passed", function() { - let currentOptions = options.parse("--version"); + const currentOptions = options.parse("--version"); assert.isTrue(currentOptions.version); }); @@ -131,7 +131,7 @@ describe("options", function() { describe("-v", function() { it("should return true for .version when passed", function() { - let currentOptions = options.parse("-v"); + const currentOptions = options.parse("-v"); assert.isTrue(currentOptions.version); }); @@ -139,7 +139,7 @@ describe("options", function() { describe("when asking for help", function() { it("should return string of help text when called", function() { - let helpText = options.generateHelp(); + const helpText = options.generateHelp(); assert.isString(helpText); }); @@ -147,7 +147,7 @@ describe("options", function() { describe("--no-ignore", function() { it("should return false for .ignore when passed", function() { - let currentOptions = options.parse("--no-ignore"); + const currentOptions = options.parse("--no-ignore"); assert.isFalse(currentOptions.ignore); }); @@ -155,7 +155,7 @@ describe("options", function() { describe("--ignore-path", function() { it("should return a string for .ignorePath when passed", function() { - let currentOptions = options.parse("--ignore-path .gitignore"); + const currentOptions = options.parse("--ignore-path .gitignore"); assert.equal(currentOptions.ignorePath, ".gitignore"); }); @@ -163,7 +163,7 @@ describe("options", function() { describe("--ignore-pattern", function() { it("should return a string array for .ignorePattern when passed", function() { - let currentOptions = options.parse("--ignore-pattern *.js"); + const currentOptions = options.parse("--ignore-pattern *.js"); assert.ok(currentOptions.ignorePattern); assert.equal(currentOptions.ignorePattern.length, 1); @@ -171,7 +171,7 @@ describe("options", function() { }); it("should return a string array for multiple values", function() { - let currentOptions = options.parse("--ignore-pattern *.js --ignore-pattern *.ts"); + const currentOptions = options.parse("--ignore-pattern *.js --ignore-pattern *.ts"); assert.ok(currentOptions.ignorePattern); assert.equal(currentOptions.ignorePattern.length, 2); @@ -180,7 +180,7 @@ describe("options", function() { }); it("should return a string array of properly parsed values, when those values include commas", function() { - let currentOptions = options.parse("--ignore-pattern *.js --ignore-pattern foo-{bar,baz}.js"); + const currentOptions = options.parse("--ignore-pattern *.js --ignore-pattern foo-{bar,baz}.js"); assert.ok(currentOptions.ignorePattern); assert.equal(currentOptions.ignorePattern.length, 2); @@ -191,13 +191,13 @@ describe("options", function() { describe("--color", function() { it("should return true for .color when passed --color", function() { - let currentOptions = options.parse("--color"); + const currentOptions = options.parse("--color"); assert.isTrue(currentOptions.color); }); it("should return false for .color when passed --no-color", function() { - let currentOptions = options.parse("--no-color"); + const currentOptions = options.parse("--no-color"); assert.isFalse(currentOptions.color); }); @@ -205,7 +205,7 @@ describe("options", function() { describe("--stdin", function() { it("should return true for .stdin when passed", function() { - let currentOptions = options.parse("--stdin"); + const currentOptions = options.parse("--stdin"); assert.isTrue(currentOptions.stdin); }); @@ -213,7 +213,7 @@ describe("options", function() { describe("--stdin-filename", function() { it("should return a string for .stdinFilename when passed", function() { - let currentOptions = options.parse("--stdin-filename test.js"); + const currentOptions = options.parse("--stdin-filename test.js"); assert.equal(currentOptions.stdinFilename, "test.js"); }); @@ -221,7 +221,7 @@ describe("options", function() { describe("--global", function() { it("should return an array for a single occurrence", function() { - let currentOptions = options.parse("--global foo"); + const currentOptions = options.parse("--global foo"); assert.isArray(currentOptions.global); assert.equal(currentOptions.global.length, 1); @@ -229,7 +229,7 @@ describe("options", function() { }); it("should split variable names using commas", function() { - let currentOptions = options.parse("--global foo,bar"); + const currentOptions = options.parse("--global foo,bar"); assert.isArray(currentOptions.global); assert.equal(currentOptions.global.length, 2); @@ -238,7 +238,7 @@ describe("options", function() { }); it("should not split on colons", function() { - let currentOptions = options.parse("--global foo:false,bar:true"); + const currentOptions = options.parse("--global foo:false,bar:true"); assert.isArray(currentOptions.global); assert.equal(currentOptions.global.length, 2); @@ -247,7 +247,7 @@ describe("options", function() { }); it("should concatenate successive occurrences", function() { - let currentOptions = options.parse("--global foo:true --global bar:false"); + const currentOptions = options.parse("--global foo:true --global bar:false"); assert.isArray(currentOptions.global); assert.equal(currentOptions.global.length, 2); @@ -258,7 +258,7 @@ describe("options", function() { describe("--plugin", function() { it("should return an array when passed a single occurrence", function() { - let currentOptions = options.parse("--plugin single"); + const currentOptions = options.parse("--plugin single"); assert.isArray(currentOptions.plugin); assert.equal(currentOptions.plugin.length, 1); @@ -266,7 +266,7 @@ describe("options", function() { }); it("should return an array when passed a comma-delimiated string", function() { - let currentOptions = options.parse("--plugin foo,bar"); + const currentOptions = options.parse("--plugin foo,bar"); assert.isArray(currentOptions.plugin); assert.equal(currentOptions.plugin.length, 2); @@ -275,7 +275,7 @@ describe("options", function() { }); it("should return an array when passed multiple times", function() { - let currentOptions = options.parse("--plugin foo --plugin bar"); + const currentOptions = options.parse("--plugin foo --plugin bar"); assert.isArray(currentOptions.plugin); assert.equal(currentOptions.plugin.length, 2); @@ -286,7 +286,7 @@ describe("options", function() { describe("--quiet", function() { it("should return true for .quiet when passed", function() { - let currentOptions = options.parse("--quiet"); + const currentOptions = options.parse("--quiet"); assert.isTrue(currentOptions.quiet); }); @@ -294,13 +294,13 @@ describe("options", function() { describe("--max-warnings", function() { it("should return correct value for .maxWarnings when passed", function() { - let currentOptions = options.parse("--max-warnings 10"); + const currentOptions = options.parse("--max-warnings 10"); assert.equal(currentOptions.maxWarnings, 10); }); it("should return -1 for .maxWarnings when not passed", function() { - let currentOptions = options.parse(""); + const currentOptions = options.parse(""); assert.equal(currentOptions.maxWarnings, -1); }); @@ -314,7 +314,7 @@ describe("options", function() { describe("--init", function() { it("should return true for --init when passed", function() { - let currentOptions = options.parse("--init"); + const currentOptions = options.parse("--init"); assert.isTrue(currentOptions.init); }); @@ -322,7 +322,7 @@ describe("options", function() { describe("--fix", function() { it("should return true for --fix when passed", function() { - let currentOptions = options.parse("--fix"); + const currentOptions = options.parse("--fix"); assert.isTrue(currentOptions.fix); }); @@ -330,7 +330,7 @@ describe("options", function() { describe("--debug", function() { it("should return true for --debug when passed", function() { - let currentOptions = options.parse("--debug"); + const currentOptions = options.parse("--debug"); assert.isTrue(currentOptions.debug); }); @@ -338,13 +338,13 @@ describe("options", function() { describe("--inline-config", function() { it("should return false when passed --no-inline-config", function() { - let currentOptions = options.parse("--no-inline-config"); + const currentOptions = options.parse("--no-inline-config"); assert.isFalse(currentOptions.inlineConfig); }); it("should return true for --inline-config when empty", function() { - let currentOptions = options.parse(""); + const currentOptions = options.parse(""); assert.isTrue(currentOptions.inlineConfig); }); @@ -352,7 +352,7 @@ describe("options", function() { describe("--parser", function() { it("should return a string for --parser when passed", function() { - let currentOptions = options.parse("--parser test"); + const currentOptions = options.parse("--parser test"); assert.equal(currentOptions.parser, "test"); }); @@ -360,7 +360,7 @@ describe("options", function() { describe("--print-config", function() { it("should return true when passed --print-config", function() { - let currentOptions = options.parse("--print-config"); + const currentOptions = options.parse("--print-config"); assert.isTrue(currentOptions.printConfig); }); diff --git a/tests/lib/rule-context.js b/tests/lib/rule-context.js index 1e2a4f7584b..1fb0409a14a 100644 --- a/tests/lib/rule-context.js +++ b/tests/lib/rule-context.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let sinon = require("sinon"), +const sinon = require("sinon"), leche = require("leche"), realESLint = require("../../lib/eslint"), RuleContext = require("../../lib/rule-context"); @@ -19,7 +19,7 @@ let sinon = require("sinon"), //------------------------------------------------------------------------------ describe("RuleContext", function() { - let sandbox = sinon.sandbox.create(); + const sandbox = sinon.sandbox.create(); describe("report()", function() { let ruleContext, eslint; @@ -31,12 +31,12 @@ describe("RuleContext", function() { describe("old-style call with location", function() { it("should call eslint.report() with rule ID and severity prepended", function() { - let node = {}, + const node = {}, location = {}, message = "Message", messageOpts = {}; - let mockESLint = sandbox.mock(eslint); + const mockESLint = sandbox.mock(eslint); mockESLint.expects("report") .once() @@ -50,11 +50,11 @@ describe("RuleContext", function() { describe("old-style call without location", function() { it("should call eslint.report() with rule ID and severity prepended", function() { - let node = {}, + const node = {}, message = "Message", messageOpts = {}; - let mockESLint = sandbox.mock(eslint); + const mockESLint = sandbox.mock(eslint); mockESLint.expects("report") .once() @@ -68,14 +68,14 @@ describe("RuleContext", function() { describe("new-style call with all options", function() { it("should call eslint.report() with rule ID and severity prepended and all new-style options", function() { - let node = {}, + const node = {}, location = {}, message = "Message", messageOpts = {}, fixerObj = {}, fix = sandbox.mock().returns(fixerObj).once(); - let mockESLint = sandbox.mock(eslint); + const mockESLint = sandbox.mock(eslint); mockESLint.expects("report") .once() diff --git a/tests/lib/rules.js b/tests/lib/rules.js index 0dc167e9b14..0f2d912c3f0 100644 --- a/tests/lib/rules.js +++ b/tests/lib/rules.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, rules = require("../../lib/rules"); //------------------------------------------------------------------------------ @@ -27,7 +27,7 @@ describe("rules", function() { }); describe("when given an invalid rules directory", function() { - let code = "invaliddir"; + const code = "invaliddir"; it("should log an error and exit", function() { assert.throws(function() { @@ -37,7 +37,7 @@ describe("rules", function() { }); describe("when given a valid rules directory", function() { - let code = "tests/fixtures/rules"; + const code = "tests/fixtures/rules"; it("should load rules and not log an error or exit", function() { assert.equal(typeof rules.get("fixture-rule"), "undefined"); @@ -48,7 +48,7 @@ describe("rules", function() { describe("when a rule has been defined", function() { it("should be able to retrieve the rule", function() { - let ruleId = "michaelficarra"; + const ruleId = "michaelficarra"; rules.define(ruleId, {}); assert.ok(rules.get(ruleId)); @@ -56,7 +56,7 @@ describe("rules", function() { }); describe("when importing plugin rules", function() { - let customPlugin = { + const customPlugin = { rules: { "custom-rule": function() { } } diff --git a/tests/lib/rules/accessor-pairs.js b/tests/lib/rules/accessor-pairs.js index 3ee9386147b..a93ee4c5f93 100644 --- a/tests/lib/rules/accessor-pairs.js +++ b/tests/lib/rules/accessor-pairs.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/accessor-pairs"), +const rule = require("../../../lib/rules/accessor-pairs"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("accessor-pairs", rule, { valid: [ diff --git a/tests/lib/rules/array-bracket-spacing.js b/tests/lib/rules/array-bracket-spacing.js index c84fbf233fc..9a3ec0fe3c7 100644 --- a/tests/lib/rules/array-bracket-spacing.js +++ b/tests/lib/rules/array-bracket-spacing.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/array-bracket-spacing"), +const rule = require("../../../lib/rules/array-bracket-spacing"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("array-bracket-spacing", rule, { diff --git a/tests/lib/rules/array-callback-return.js b/tests/lib/rules/array-callback-return.js index f5726f11845..0fb560fc6cf 100644 --- a/tests/lib/rules/array-callback-return.js +++ b/tests/lib/rules/array-callback-return.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/array-callback-return"), +const rule = require("../../../lib/rules/array-callback-return"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("array-callback-return", rule, { valid: [ diff --git a/tests/lib/rules/arrow-body-style.js b/tests/lib/rules/arrow-body-style.js index 451c05be29f..df5dcd00727 100644 --- a/tests/lib/rules/arrow-body-style.js +++ b/tests/lib/rules/arrow-body-style.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/arrow-body-style"), +const rule = require("../../../lib/rules/arrow-body-style"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("arrow-body-style", rule, { valid: [ diff --git a/tests/lib/rules/arrow-parens.js b/tests/lib/rules/arrow-parens.js index aec4516b200..3afbd75701b 100644 --- a/tests/lib/rules/arrow-parens.js +++ b/tests/lib/rules/arrow-parens.js @@ -9,15 +9,15 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/arrow-parens"), +const rule = require("../../../lib/rules/arrow-parens"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); -let valid = [ +const valid = [ { code: "() => {}", parserOptions: { ecmaVersion: 6 } }, { code: "(a) => {}", parserOptions: { ecmaVersion: 6 } }, { code: "(a) => a", parserOptions: { ecmaVersion: 6 } }, @@ -37,11 +37,11 @@ let valid = [ ]; -let message = "Expected parentheses around arrow function argument."; -let asNeededMessage = "Unexpected parentheses around single function argument."; -let type = "ArrowFunctionExpression"; +const message = "Expected parentheses around arrow function argument."; +const asNeededMessage = "Unexpected parentheses around single function argument."; +const type = "ArrowFunctionExpression"; -let invalid = [ +const invalid = [ { code: "a => {}", output: "(a) => {}", diff --git a/tests/lib/rules/arrow-spacing.js b/tests/lib/rules/arrow-spacing.js index 5dc3152930e..b3fb609c305 100644 --- a/tests/lib/rules/arrow-spacing.js +++ b/tests/lib/rules/arrow-spacing.js @@ -9,16 +9,16 @@ //------------------------------------------------------------------------------ // -let rule = require("../../../lib/rules/arrow-spacing"), +const rule = require("../../../lib/rules/arrow-spacing"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); -let valid = [ +const valid = [ { parserOptions: { ecmaVersion: 6 }, code: "a => a", @@ -109,7 +109,7 @@ let valid = [ ]; -let invalid = [ +const invalid = [ { code: "a=>a", output: "a => a", diff --git a/tests/lib/rules/block-scoped-var.js b/tests/lib/rules/block-scoped-var.js index 699a4f58bc9..83b73cca446 100644 --- a/tests/lib/rules/block-scoped-var.js +++ b/tests/lib/rules/block-scoped-var.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/block-scoped-var"), +const rule = require("../../../lib/rules/block-scoped-var"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("block-scoped-var", rule, { valid: [ diff --git a/tests/lib/rules/block-spacing.js b/tests/lib/rules/block-spacing.js index 80fd05bb4c1..b33ee4ed5e7 100644 --- a/tests/lib/rules/block-spacing.js +++ b/tests/lib/rules/block-spacing.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/block-spacing"); -let RuleTester = require("../../../lib/testers/rule-tester"); +const rule = require("../../../lib/rules/block-spacing"); +const RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("block-spacing", rule, { valid: [ diff --git a/tests/lib/rules/brace-style.js b/tests/lib/rules/brace-style.js index d64db5a0f3a..f01cfcaac81 100644 --- a/tests/lib/rules/brace-style.js +++ b/tests/lib/rules/brace-style.js @@ -9,9 +9,9 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/brace-style"), +const rule = require("../../../lib/rules/brace-style"), RuleTester = require("../../../lib/testers/rule-tester"); -let OPEN_MESSAGE = "Opening curly brace does not appear on the same line as controlling statement.", +const OPEN_MESSAGE = "Opening curly brace does not appear on the same line as controlling statement.", OPEN_MESSAGE_ALLMAN = "Opening curly brace appears on the same line as controlling statement.", BODY_MESSAGE = "Statement inside of curly braces should be on next line.", CLOSE_MESSAGE = "Closing curly brace does not appear on the same line as the subsequent block.", @@ -22,7 +22,7 @@ let OPEN_MESSAGE = "Opening curly brace does not appear on the same line as cont // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("brace-style", rule, { valid: [ diff --git a/tests/lib/rules/callback-return.js b/tests/lib/rules/callback-return.js index 9b364c7ce26..29f98136b41 100644 --- a/tests/lib/rules/callback-return.js +++ b/tests/lib/rules/callback-return.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/callback-return"), +const rule = require("../../../lib/rules/callback-return"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ @@ -16,7 +16,7 @@ let rule = require("../../../lib/rules/callback-return"), //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("callback-return", rule, { valid: [ diff --git a/tests/lib/rules/camelcase.js b/tests/lib/rules/camelcase.js index 4dbebe79b44..6b33f51b455 100644 --- a/tests/lib/rules/camelcase.js +++ b/tests/lib/rules/camelcase.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/camelcase"), +const rule = require("../../../lib/rules/camelcase"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("camelcase", rule, { valid: [ diff --git a/tests/lib/rules/comma-dangle.js b/tests/lib/rules/comma-dangle.js index e23cf1051d4..d4a9163ff1a 100644 --- a/tests/lib/rules/comma-dangle.js +++ b/tests/lib/rules/comma-dangle.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/comma-dangle"), +const rule = require("../../../lib/rules/comma-dangle"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("comma-dangle", rule, { valid: [ diff --git a/tests/lib/rules/comma-spacing.js b/tests/lib/rules/comma-spacing.js index 8cdf41abbde..6c8ff4077e6 100644 --- a/tests/lib/rules/comma-spacing.js +++ b/tests/lib/rules/comma-spacing.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/comma-spacing"), +const rule = require("../../../lib/rules/comma-spacing"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("comma-spacing", rule, { valid: [ diff --git a/tests/lib/rules/comma-style.js b/tests/lib/rules/comma-style.js index 2afde3af857..9c5378e249f 100644 --- a/tests/lib/rules/comma-style.js +++ b/tests/lib/rules/comma-style.js @@ -8,10 +8,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/comma-style"), +const rule = require("../../../lib/rules/comma-style"), RuleTester = require("../../../lib/testers/rule-tester"); -let BAD_LN_BRK_MSG = "Bad line breaking before and after ','.", +const BAD_LN_BRK_MSG = "Bad line breaking before and after ','.", FIRST_MSG = "',' should be placed first.", LAST_MSG = "',' should be placed last."; @@ -19,7 +19,7 @@ let BAD_LN_BRK_MSG = "Bad line breaking before and after ','.", // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("comma-style", rule, { diff --git a/tests/lib/rules/complexity.js b/tests/lib/rules/complexity.js index a5e947912ed..d92e71169e8 100644 --- a/tests/lib/rules/complexity.js +++ b/tests/lib/rules/complexity.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/complexity"), +const rule = require("../../../lib/rules/complexity"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ @@ -34,7 +34,7 @@ function createComplexity(complexity) { return funcString; } -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("complexity", rule, { valid: [ diff --git a/tests/lib/rules/computed-property-spacing.js b/tests/lib/rules/computed-property-spacing.js index e58e9a78227..eb0fca8cf45 100644 --- a/tests/lib/rules/computed-property-spacing.js +++ b/tests/lib/rules/computed-property-spacing.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/computed-property-spacing"), +const rule = require("../../../lib/rules/computed-property-spacing"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("computed-property-spacing", rule, { diff --git a/tests/lib/rules/consistent-return.js b/tests/lib/rules/consistent-return.js index b0e2484c1ab..011908bf4e4 100644 --- a/tests/lib/rules/consistent-return.js +++ b/tests/lib/rules/consistent-return.js @@ -8,14 +8,14 @@ //------------------------------------------------------------------------------ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/consistent-return"), +const rule = require("../../../lib/rules/consistent-return"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("consistent-return", rule, { diff --git a/tests/lib/rules/consistent-this.js b/tests/lib/rules/consistent-this.js index 0531ffeb797..add8230e518 100644 --- a/tests/lib/rules/consistent-this.js +++ b/tests/lib/rules/consistent-this.js @@ -8,7 +8,7 @@ //------------------------------------------------------------------------------ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/consistent-this"), +const rule = require("../../../lib/rules/consistent-this"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ @@ -34,7 +34,7 @@ function destructuringTest(code) { // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("consistent-this", rule, { valid: [ diff --git a/tests/lib/rules/constructor-super.js b/tests/lib/rules/constructor-super.js index b7f2a7bac89..e33802b6afd 100644 --- a/tests/lib/rules/constructor-super.js +++ b/tests/lib/rules/constructor-super.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/constructor-super"); -let RuleTester = require("../../../lib/testers/rule-tester"); +const rule = require("../../../lib/rules/constructor-super"); +const RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("constructor-super", rule, { valid: [ diff --git a/tests/lib/rules/curly.js b/tests/lib/rules/curly.js index c21b3ef94a1..f3a348d3145 100644 --- a/tests/lib/rules/curly.js +++ b/tests/lib/rules/curly.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/curly"), +const rule = require("../../../lib/rules/curly"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("curly", rule, { valid: [ diff --git a/tests/lib/rules/default-case.js b/tests/lib/rules/default-case.js index 158a9baea2b..87edae834cc 100644 --- a/tests/lib/rules/default-case.js +++ b/tests/lib/rules/default-case.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/default-case"), +const rule = require("../../../lib/rules/default-case"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("default-case", rule, { diff --git a/tests/lib/rules/dot-location.js b/tests/lib/rules/dot-location.js index 628b10869e4..f6453cf08f8 100644 --- a/tests/lib/rules/dot-location.js +++ b/tests/lib/rules/dot-location.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/dot-location"), +const rule = require("../../../lib/rules/dot-location"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("dot-location", rule, { valid: [ diff --git a/tests/lib/rules/dot-notation.js b/tests/lib/rules/dot-notation.js index 98daf596e58..c9b342d94a7 100644 --- a/tests/lib/rules/dot-notation.js +++ b/tests/lib/rules/dot-notation.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/dot-notation"), +const rule = require("../../../lib/rules/dot-notation"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("dot-notation", rule, { valid: [ diff --git a/tests/lib/rules/eol-last.js b/tests/lib/rules/eol-last.js index dd1ddc441e1..a1d363e2f0d 100644 --- a/tests/lib/rules/eol-last.js +++ b/tests/lib/rules/eol-last.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/eol-last"), +const rule = require("../../../lib/rules/eol-last"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("eol-last", rule, { diff --git a/tests/lib/rules/eqeqeq.js b/tests/lib/rules/eqeqeq.js index fc00cd2d6b7..882bb6923ef 100644 --- a/tests/lib/rules/eqeqeq.js +++ b/tests/lib/rules/eqeqeq.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/eqeqeq"), +const rule = require("../../../lib/rules/eqeqeq"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("eqeqeq", rule, { valid: [ diff --git a/tests/lib/rules/func-names.js b/tests/lib/rules/func-names.js index 50fe56b8c59..60d3c6ede76 100644 --- a/tests/lib/rules/func-names.js +++ b/tests/lib/rules/func-names.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/func-names"), +const rule = require("../../../lib/rules/func-names"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("func-names", rule, { valid: [ diff --git a/tests/lib/rules/func-style.js b/tests/lib/rules/func-style.js index e80413bc9cd..491ab3ce19a 100644 --- a/tests/lib/rules/func-style.js +++ b/tests/lib/rules/func-style.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/func-style"), +const rule = require("../../../lib/rules/func-style"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("func-style", rule, { valid: [ diff --git a/tests/lib/rules/generator-star-spacing.js b/tests/lib/rules/generator-star-spacing.js index 17fd4278661..721300c32b6 100644 --- a/tests/lib/rules/generator-star-spacing.js +++ b/tests/lib/rules/generator-star-spacing.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/generator-star-spacing"), +const rule = require("../../../lib/rules/generator-star-spacing"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("generator-star-spacing", rule, { diff --git a/tests/lib/rules/global-require.js b/tests/lib/rules/global-require.js index f7526782445..2a698fc9dd7 100644 --- a/tests/lib/rules/global-require.js +++ b/tests/lib/rules/global-require.js @@ -9,15 +9,15 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/global-require"), +const rule = require("../../../lib/rules/global-require"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); -let valid = [ +const valid = [ { code: "var x = require('y');" }, { code: "if (x) { x.require('y'); }" }, { code: "var x;\nx = require('y');" }, @@ -33,10 +33,10 @@ let valid = [ { code: "var someFunc = require('./someFunc'); someFunc(function(require) { return('bananas'); });" } ]; -let message = "Unexpected require()."; -let type = "CallExpression"; +const message = "Unexpected require()."; +const type = "CallExpression"; -let invalid = [ +const invalid = [ // block statements { diff --git a/tests/lib/rules/guard-for-in.js b/tests/lib/rules/guard-for-in.js index c64f7a68178..2acbfed9590 100644 --- a/tests/lib/rules/guard-for-in.js +++ b/tests/lib/rules/guard-for-in.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/guard-for-in"), +const rule = require("../../../lib/rules/guard-for-in"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("guard-for-in", rule, { valid: [ diff --git a/tests/lib/rules/handle-callback-err.js b/tests/lib/rules/handle-callback-err.js index f2cf0835c70..52246815d4d 100644 --- a/tests/lib/rules/handle-callback-err.js +++ b/tests/lib/rules/handle-callback-err.js @@ -9,18 +9,18 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/handle-callback-err"), +const rule = require("../../../lib/rules/handle-callback-err"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); -let expectedErrorMessage = "Expected error to be handled."; -let expectedFunctionDeclarationError = { message: expectedErrorMessage, type: "FunctionDeclaration" }; -let expectedFunctionExpressionError = { message: expectedErrorMessage, type: "FunctionExpression" }; +const expectedErrorMessage = "Expected error to be handled."; +const expectedFunctionDeclarationError = { message: expectedErrorMessage, type: "FunctionDeclaration" }; +const expectedFunctionExpressionError = { message: expectedErrorMessage, type: "FunctionExpression" }; ruleTester.run("handle-callback-err", rule, { valid: [ diff --git a/tests/lib/rules/id-blacklist.js b/tests/lib/rules/id-blacklist.js index 2daa4f2f810..9f347f81f54 100644 --- a/tests/lib/rules/id-blacklist.js +++ b/tests/lib/rules/id-blacklist.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/id-blacklist"), +const rule = require("../../../lib/rules/id-blacklist"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("id-blacklist", rule, { valid: [ diff --git a/tests/lib/rules/id-length.js b/tests/lib/rules/id-length.js index eeb8db371ae..dd91a28937e 100644 --- a/tests/lib/rules/id-length.js +++ b/tests/lib/rules/id-length.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/id-length"), +const rule = require("../../../lib/rules/id-length"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("id-length", rule, { valid: [ diff --git a/tests/lib/rules/id-match.js b/tests/lib/rules/id-match.js index a229ed04cd9..36d60e9dfe9 100644 --- a/tests/lib/rules/id-match.js +++ b/tests/lib/rules/id-match.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/id-match"), +const rule = require("../../../lib/rules/id-match"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("id-match", rule, { valid: [ diff --git a/tests/lib/rules/indent.js b/tests/lib/rules/indent.js index 90faea55fc4..d2f6502ece9 100644 --- a/tests/lib/rules/indent.js +++ b/tests/lib/rules/indent.js @@ -9,17 +9,17 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/indent"), +const rule = require("../../../lib/rules/indent"), RuleTester = require("../../../lib/testers/rule-tester"); -let fs = require("fs"); -let path = require("path"); +const fs = require("fs"); +const path = require("path"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let fixture = fs.readFileSync(path.join(__dirname, "../../fixtures/rules/indent/indent-invalid-fixture-1.js"), "utf8"); -let fixedFixture = fs.readFileSync(path.join(__dirname, "../../fixtures/rules/indent/indent-valid-fixture-1.js"), "utf8"); +const fixture = fs.readFileSync(path.join(__dirname, "../../fixtures/rules/indent/indent-invalid-fixture-1.js"), "utf8"); +const fixedFixture = fs.readFileSync(path.join(__dirname, "../../fixtures/rules/indent/indent-valid-fixture-1.js"), "utf8"); /** * Create error message object for failure cases @@ -39,7 +39,7 @@ function expectedErrors(indentType, errors) { } return errors.map(function(err) { - let chars = err[1] === 1 ? "character" : "characters"; + const chars = err[1] === 1 ? "character" : "characters"; return { message: "Expected indentation of " + err[1] + " " + indentType + " " + chars + " but found " + err[2] + ".", @@ -49,7 +49,7 @@ function expectedErrors(indentType, errors) { }); } -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("indent", rule, { valid: [ diff --git a/tests/lib/rules/init-declarations.js b/tests/lib/rules/init-declarations.js index 2c02f154cf5..7bd3bd36c49 100644 --- a/tests/lib/rules/init-declarations.js +++ b/tests/lib/rules/init-declarations.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/init-declarations"), +const rule = require("../../../lib/rules/init-declarations"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("init-declarations", rule, { valid: [ diff --git a/tests/lib/rules/jsx-quotes.js b/tests/lib/rules/jsx-quotes.js index b40ac1ce3cd..54eeefa9fb8 100644 --- a/tests/lib/rules/jsx-quotes.js +++ b/tests/lib/rules/jsx-quotes.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/jsx-quotes"), +const rule = require("../../../lib/rules/jsx-quotes"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("jsx-quotes", rule, { valid: [ diff --git a/tests/lib/rules/key-spacing.js b/tests/lib/rules/key-spacing.js index 5ffbb5fd924..7101b803c91 100644 --- a/tests/lib/rules/key-spacing.js +++ b/tests/lib/rules/key-spacing.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/key-spacing"), +const rule = require("../../../lib/rules/key-spacing"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("key-spacing", rule, { diff --git a/tests/lib/rules/keyword-spacing.js b/tests/lib/rules/keyword-spacing.js index eaf1c96e95e..9255f918df8 100644 --- a/tests/lib/rules/keyword-spacing.js +++ b/tests/lib/rules/keyword-spacing.js @@ -9,15 +9,15 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/keyword-spacing"), +const rule = require("../../../lib/rules/keyword-spacing"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let BOTH = {before: true, after: true}; -let NEITHER = {before: false, after: false}; +const BOTH = {before: true, after: true}; +const NEITHER = {before: false, after: false}; /** * Creates an option object to test an "overrides" option. @@ -39,7 +39,7 @@ let NEITHER = {before: false, after: false}; * @returns {Object} An option object to test an "overrides" option. */ function override(keyword, value) { - let retv = { + const retv = { before: value.before === false, after: value.after === false, overrides: {} @@ -122,7 +122,7 @@ function unexpectedBeforeAndAfter(keyword) { // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("keyword-spacing", rule, { valid: [ diff --git a/tests/lib/rules/linebreak-style.js b/tests/lib/rules/linebreak-style.js index 25b46484310..a0eed487a40 100644 --- a/tests/lib/rules/linebreak-style.js +++ b/tests/lib/rules/linebreak-style.js @@ -8,17 +8,17 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/linebreak-style"), +const rule = require("../../../lib/rules/linebreak-style"), RuleTester = require("../../../lib/testers/rule-tester"); -let EXPECTED_LF_MSG = "Expected linebreaks to be 'LF' but found 'CRLF'.", +const EXPECTED_LF_MSG = "Expected linebreaks to be 'LF' but found 'CRLF'.", EXPECTED_CRLF_MSG = "Expected linebreaks to be 'CRLF' but found 'LF'."; //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("linebreak-style", rule, { diff --git a/tests/lib/rules/lines-around-comment.js b/tests/lib/rules/lines-around-comment.js index f083ee28a5f..c954c9a5bde 100644 --- a/tests/lib/rules/lines-around-comment.js +++ b/tests/lib/rules/lines-around-comment.js @@ -8,17 +8,17 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/lines-around-comment"), +const rule = require("../../../lib/rules/lines-around-comment"), RuleTester = require("../../../lib/testers/rule-tester"); -let afterMessage = "Expected line after comment.", +const afterMessage = "Expected line after comment.", beforeMessage = "Expected line before comment."; //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("lines-around-comment", rule, { diff --git a/tests/lib/rules/max-depth.js b/tests/lib/rules/max-depth.js index 16eb2060292..fe65ad2e687 100644 --- a/tests/lib/rules/max-depth.js +++ b/tests/lib/rules/max-depth.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/max-depth"), +const rule = require("../../../lib/rules/max-depth"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("max-depth", rule, { valid: [ diff --git a/tests/lib/rules/max-len.js b/tests/lib/rules/max-len.js index 3adaab575b1..81e5eb8c6c3 100644 --- a/tests/lib/rules/max-len.js +++ b/tests/lib/rules/max-len.js @@ -8,14 +8,14 @@ //------------------------------------------------------------------------------ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/max-len"), +const rule = require("../../../lib/rules/max-len"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("max-len", rule, { valid: [ diff --git a/tests/lib/rules/max-lines.js b/tests/lib/rules/max-lines.js index 27f22c34a7c..fa39c4786a0 100644 --- a/tests/lib/rules/max-lines.js +++ b/tests/lib/rules/max-lines.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/max-lines"), +const rule = require("../../../lib/rules/max-lines"), RuleTester = require("../../../lib/testers/rule-tester"); @@ -17,7 +17,7 @@ let rule = require("../../../lib/rules/max-lines"), // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); /** * Returns the error message with the specified max number of lines diff --git a/tests/lib/rules/max-nested-callbacks.js b/tests/lib/rules/max-nested-callbacks.js index da8eee363a9..53b8c294cf4 100644 --- a/tests/lib/rules/max-nested-callbacks.js +++ b/tests/lib/rules/max-nested-callbacks.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/max-nested-callbacks"), +const rule = require("../../../lib/rules/max-nested-callbacks"), RuleTester = require("../../../lib/testers/rule-tester"); -let OPENING = "foo(function() {", +const OPENING = "foo(function() {", CLOSING = "});"; /** @@ -35,7 +35,7 @@ function nestFunctions(times) { //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("max-nested-callbacks", rule, { valid: [ diff --git a/tests/lib/rules/max-params.js b/tests/lib/rules/max-params.js index 21c71d13a9b..11d0017b3a1 100644 --- a/tests/lib/rules/max-params.js +++ b/tests/lib/rules/max-params.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/max-params"), +const rule = require("../../../lib/rules/max-params"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("max-params", rule, { valid: [ diff --git a/tests/lib/rules/max-statements-per-line.js b/tests/lib/rules/max-statements-per-line.js index c66fd9d7d0d..9aebd2abbd3 100644 --- a/tests/lib/rules/max-statements-per-line.js +++ b/tests/lib/rules/max-statements-per-line.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/max-statements-per-line"), +const rule = require("../../../lib/rules/max-statements-per-line"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("max-statements-per-line", rule, { valid: [ diff --git a/tests/lib/rules/max-statements.js b/tests/lib/rules/max-statements.js index d75f37cbe28..19ec13a5f71 100644 --- a/tests/lib/rules/max-statements.js +++ b/tests/lib/rules/max-statements.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/max-statements"), +const rule = require("../../../lib/rules/max-statements"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("max-statements", rule, { valid: [ diff --git a/tests/lib/rules/multiline-ternary.js b/tests/lib/rules/multiline-ternary.js index f991e914db9..fdd9ee69d00 100644 --- a/tests/lib/rules/multiline-ternary.js +++ b/tests/lib/rules/multiline-ternary.js @@ -9,16 +9,16 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/multiline-ternary"); -let RuleTester = require("../../../lib/testers/rule-tester"); +const rule = require("../../../lib/rules/multiline-ternary"); +const RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); -let testConsMsg = "Expected newline between test and consequent of ternary expression."; -let consAltMsg = "Expected newline between consequent and alternate of ternary expression."; +const ruleTester = new RuleTester(); +const testConsMsg = "Expected newline between test and consequent of ternary expression."; +const consAltMsg = "Expected newline between consequent and alternate of ternary expression."; ruleTester.run("multiline-ternary", rule, { valid: [ diff --git a/tests/lib/rules/new-cap.js b/tests/lib/rules/new-cap.js index 188e8343b25..52eaf8b3698 100644 --- a/tests/lib/rules/new-cap.js +++ b/tests/lib/rules/new-cap.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/new-cap"), +const rule = require("../../../lib/rules/new-cap"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("new-cap", rule, { valid: [ diff --git a/tests/lib/rules/new-parens.js b/tests/lib/rules/new-parens.js index dd7ec7b8158..3efa75b0975 100644 --- a/tests/lib/rules/new-parens.js +++ b/tests/lib/rules/new-parens.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/new-parens"), +const rule = require("../../../lib/rules/new-parens"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("new-parens", rule, { valid: [ diff --git a/tests/lib/rules/newline-after-var.js b/tests/lib/rules/newline-after-var.js index a1f7d12e309..85a5c48b5fe 100644 --- a/tests/lib/rules/newline-after-var.js +++ b/tests/lib/rules/newline-after-var.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/newline-after-var"), +const rule = require("../../../lib/rules/newline-after-var"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ @@ -17,7 +17,7 @@ let rule = require("../../../lib/rules/newline-after-var"), //------------------------------------------------------------------------------ // Valid for both "Always" and "Never" -let NO_VAR = "console.log(greet);", +const NO_VAR = "console.log(greet);", ONLY_VAR = "var greet = 'hello';", FOR_LOOP_WITH_LET = "for(let a = 1; a < 1; a++){\n break;\n}", FOR_LOOP_WITH_VAR = "for(var a = 1; a < 1; a++){\n break;\n}", @@ -37,7 +37,7 @@ let NO_VAR = "console.log(greet);", // Valid for "Always" -let ONE_BLANK = "var greet = 'hello';\n\nconsole.log(greet);", +const ONE_BLANK = "var greet = 'hello';\n\nconsole.log(greet);", TWO_BLANKS = "var greet = 'hello';\n\n\nconsole.log(greet);", THREE_BLANKS = "var greet = 'hello';\n\n\n\nconsole.log(greet);", ONE_BLANK_WITH_TRAILING_WS = "var greet = 'hello'; \n\nconsole.log(greet);", @@ -60,7 +60,7 @@ let ONE_BLANK = "var greet = 'hello';\n\nconsole.log(greet);", // Valid for "Never" -let NO_BREAK = "var greet = 'hello'; console.log(greet);", +const NO_BREAK = "var greet = 'hello'; console.log(greet);", NO_BLANK = "var greet = 'hello';\nconsole.log(greet);", NO_BLANK_WITH_TRAILING_WS = "var greet = 'hello'; \nconsole.log(greet);", NO_BLANK_WITH_INLINE_COMMENT = "var greet = 'hello'; // inline comment\nconsole.log(greet);", @@ -85,12 +85,12 @@ let NO_BREAK = "var greet = 'hello'; console.log(greet);", NOT_END_OF_ARROW_FUNCTION = "() => {\nvar greet = 'hello';\nconsole.log(greet);\n}", NO_BLANK_BEFORE_CASE = "switch(a) {\ncase 0:\nvar foo;\ncase 1:}"; -let ALWAYS_ERROR = { +const ALWAYS_ERROR = { message: "Expected blank line after variable declarations.", type: "VariableDeclaration" }; -let NEVER_ERROR = { +const NEVER_ERROR = { message: "Unexpected blank line after variable declarations.", type: "VariableDeclaration" }; @@ -99,7 +99,7 @@ let NEVER_ERROR = { // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("newline-after-var", rule, { valid: [ diff --git a/tests/lib/rules/newline-before-return.js b/tests/lib/rules/newline-before-return.js index 5ad66064de1..4aee307e8f8 100644 --- a/tests/lib/rules/newline-before-return.js +++ b/tests/lib/rules/newline-before-return.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/newline-before-return"), +const rule = require("../../../lib/rules/newline-before-return"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("newline-before-return", rule, { valid: [ diff --git a/tests/lib/rules/newline-per-chained-call.js b/tests/lib/rules/newline-per-chained-call.js index 93aab39b5de..2e73f3b359f 100644 --- a/tests/lib/rules/newline-per-chained-call.js +++ b/tests/lib/rules/newline-per-chained-call.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/newline-per-chained-call"), +const rule = require("../../../lib/rules/newline-per-chained-call"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("newline-per-chained-call", rule, { valid: [{ diff --git a/tests/lib/rules/no-alert.js b/tests/lib/rules/no-alert.js index e8e691529fb..03f4a2d07c5 100644 --- a/tests/lib/rules/no-alert.js +++ b/tests/lib/rules/no-alert.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-alert"), +const rule = require("../../../lib/rules/no-alert"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-alert", rule, { valid: [ diff --git a/tests/lib/rules/no-array-constructor.js b/tests/lib/rules/no-array-constructor.js index 69bf327a6ec..23c2b14e0f2 100644 --- a/tests/lib/rules/no-array-constructor.js +++ b/tests/lib/rules/no-array-constructor.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-array-constructor"), +const rule = require("../../../lib/rules/no-array-constructor"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-array-constructor", rule, { valid: [ diff --git a/tests/lib/rules/no-bitwise.js b/tests/lib/rules/no-bitwise.js index eb9aa5fa2f0..fb894a81419 100644 --- a/tests/lib/rules/no-bitwise.js +++ b/tests/lib/rules/no-bitwise.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-bitwise"), +const rule = require("../../../lib/rules/no-bitwise"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-bitwise", rule, { valid: [ diff --git a/tests/lib/rules/no-caller.js b/tests/lib/rules/no-caller.js index f4f932ecbe4..5675197c77f 100644 --- a/tests/lib/rules/no-caller.js +++ b/tests/lib/rules/no-caller.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-caller"), +const rule = require("../../../lib/rules/no-caller"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-caller", rule, { valid: [ diff --git a/tests/lib/rules/no-case-declarations.js b/tests/lib/rules/no-case-declarations.js index 44c256cf0eb..b51c4efa9d6 100644 --- a/tests/lib/rules/no-case-declarations.js +++ b/tests/lib/rules/no-case-declarations.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-case-declarations"), +const rule = require("../../../lib/rules/no-case-declarations"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-case-declarations", rule, { valid: [ diff --git a/tests/lib/rules/no-catch-shadow.js b/tests/lib/rules/no-catch-shadow.js index b82e5b48db6..14f2252361a 100644 --- a/tests/lib/rules/no-catch-shadow.js +++ b/tests/lib/rules/no-catch-shadow.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-catch-shadow"), +const rule = require("../../../lib/rules/no-catch-shadow"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-catch-shadow", rule, { valid: [ diff --git a/tests/lib/rules/no-class-assign.js b/tests/lib/rules/no-class-assign.js index 5bfe1a0d8f9..298af5f893f 100644 --- a/tests/lib/rules/no-class-assign.js +++ b/tests/lib/rules/no-class-assign.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-class-assign"); -let RuleTester = require("../../../lib/testers/rule-tester"); +const rule = require("../../../lib/rules/no-class-assign"); +const RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-class-assign", rule, { valid: [ diff --git a/tests/lib/rules/no-cond-assign.js b/tests/lib/rules/no-cond-assign.js index bef5d3c5fee..d2ce0acc01f 100644 --- a/tests/lib/rules/no-cond-assign.js +++ b/tests/lib/rules/no-cond-assign.js @@ -9,15 +9,15 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-cond-assign"), +const rule = require("../../../lib/rules/no-cond-assign"), RuleTester = require("../../../lib/testers/rule-tester"); -let ERROR_MESSAGE = "Expected a conditional expression and instead saw an assignment."; +const ERROR_MESSAGE = "Expected a conditional expression and instead saw an assignment."; //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-cond-assign", rule, { valid: [ diff --git a/tests/lib/rules/no-confusing-arrow.js b/tests/lib/rules/no-confusing-arrow.js index 0631b345248..9a70067aeba 100644 --- a/tests/lib/rules/no-confusing-arrow.js +++ b/tests/lib/rules/no-confusing-arrow.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-confusing-arrow"), +const rule = require("../../../lib/rules/no-confusing-arrow"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ @@ -30,7 +30,7 @@ function addArrowFunctions(obj) { // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-confusing-arrow", rule, { valid: [ diff --git a/tests/lib/rules/no-console.js b/tests/lib/rules/no-console.js index b5d59f006c5..540ff361e24 100644 --- a/tests/lib/rules/no-console.js +++ b/tests/lib/rules/no-console.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-console"), +const rule = require("../../../lib/rules/no-console"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-console", rule, { valid: [ diff --git a/tests/lib/rules/no-const-assign.js b/tests/lib/rules/no-const-assign.js index b46cf85462e..3d121f5d036 100644 --- a/tests/lib/rules/no-const-assign.js +++ b/tests/lib/rules/no-const-assign.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-const-assign"); -let RuleTester = require("../../../lib/testers/rule-tester"); +const rule = require("../../../lib/rules/no-const-assign"); +const RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-const-assign", rule, { valid: [ diff --git a/tests/lib/rules/no-constant-condition.js b/tests/lib/rules/no-constant-condition.js index 613fe402d99..1e260f0516b 100644 --- a/tests/lib/rules/no-constant-condition.js +++ b/tests/lib/rules/no-constant-condition.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-constant-condition"), +const rule = require("../../../lib/rules/no-constant-condition"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-constant-condition", rule, { valid: [ diff --git a/tests/lib/rules/no-continue.js b/tests/lib/rules/no-continue.js index d039ab25537..d622ff392ba 100644 --- a/tests/lib/rules/no-continue.js +++ b/tests/lib/rules/no-continue.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-continue"), +const rule = require("../../../lib/rules/no-continue"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-continue", rule, { valid: [ diff --git a/tests/lib/rules/no-control-regex.js b/tests/lib/rules/no-control-regex.js index 861a683dbaa..8c681ccb933 100644 --- a/tests/lib/rules/no-control-regex.js +++ b/tests/lib/rules/no-control-regex.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-control-regex"), +const rule = require("../../../lib/rules/no-control-regex"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-control-regex", rule, { valid: [ diff --git a/tests/lib/rules/no-debugger.js b/tests/lib/rules/no-debugger.js index 173645a5890..68ead9ccb6e 100644 --- a/tests/lib/rules/no-debugger.js +++ b/tests/lib/rules/no-debugger.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-debugger"), +const rule = require("../../../lib/rules/no-debugger"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-debugger", rule, { valid: [ diff --git a/tests/lib/rules/no-delete-var.js b/tests/lib/rules/no-delete-var.js index 16505ee1ae6..5ca5d7d696f 100644 --- a/tests/lib/rules/no-delete-var.js +++ b/tests/lib/rules/no-delete-var.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-delete-var"), +const rule = require("../../../lib/rules/no-delete-var"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-delete-var", rule, { valid: [ diff --git a/tests/lib/rules/no-div-regex.js b/tests/lib/rules/no-div-regex.js index 4063a0d5614..bddbcaf1a52 100644 --- a/tests/lib/rules/no-div-regex.js +++ b/tests/lib/rules/no-div-regex.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-div-regex"), +const rule = require("../../../lib/rules/no-div-regex"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-div-regex", rule, { valid: [ diff --git a/tests/lib/rules/no-dupe-args.js b/tests/lib/rules/no-dupe-args.js index b199308bcad..34f0a3abebb 100644 --- a/tests/lib/rules/no-dupe-args.js +++ b/tests/lib/rules/no-dupe-args.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-dupe-args"), +const rule = require("../../../lib/rules/no-dupe-args"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-dupe-args", rule, { valid: [ diff --git a/tests/lib/rules/no-dupe-class-members.js b/tests/lib/rules/no-dupe-class-members.js index fb18018727d..e14dd7919c6 100644 --- a/tests/lib/rules/no-dupe-class-members.js +++ b/tests/lib/rules/no-dupe-class-members.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-dupe-class-members"); -let RuleTester = require("../../../lib/testers/rule-tester"); +const rule = require("../../../lib/rules/no-dupe-class-members"); +const RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-dupe-class-members", rule, { valid: [ diff --git a/tests/lib/rules/no-dupe-keys.js b/tests/lib/rules/no-dupe-keys.js index 6abadad95df..577ebf3405f 100644 --- a/tests/lib/rules/no-dupe-keys.js +++ b/tests/lib/rules/no-dupe-keys.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-dupe-keys"), +const rule = require("../../../lib/rules/no-dupe-keys"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-dupe-keys", rule, { valid: [ diff --git a/tests/lib/rules/no-duplicate-case.js b/tests/lib/rules/no-duplicate-case.js index c49f7c8451f..c265dca1030 100644 --- a/tests/lib/rules/no-duplicate-case.js +++ b/tests/lib/rules/no-duplicate-case.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-duplicate-case"), +const rule = require("../../../lib/rules/no-duplicate-case"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-duplicate-case", rule, { valid: [ diff --git a/tests/lib/rules/no-duplicate-imports.js b/tests/lib/rules/no-duplicate-imports.js index 79643152465..96d36a06f04 100644 --- a/tests/lib/rules/no-duplicate-imports.js +++ b/tests/lib/rules/no-duplicate-imports.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-duplicate-imports"), +const rule = require("../../../lib/rules/no-duplicate-imports"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-duplicate-imports", rule, { valid: [ diff --git a/tests/lib/rules/no-else-return.js b/tests/lib/rules/no-else-return.js index f718e083c06..659d4806df6 100644 --- a/tests/lib/rules/no-else-return.js +++ b/tests/lib/rules/no-else-return.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-else-return"), +const rule = require("../../../lib/rules/no-else-return"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-else-return", rule, { valid: [ diff --git a/tests/lib/rules/no-empty-character-class.js b/tests/lib/rules/no-empty-character-class.js index a79f1c162d7..79af4daaab2 100644 --- a/tests/lib/rules/no-empty-character-class.js +++ b/tests/lib/rules/no-empty-character-class.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-empty-character-class"), +const rule = require("../../../lib/rules/no-empty-character-class"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-empty-character-class", rule, { valid: [ diff --git a/tests/lib/rules/no-empty-function.js b/tests/lib/rules/no-empty-function.js index 1f3c4597404..ae80028f48e 100644 --- a/tests/lib/rules/no-empty-function.js +++ b/tests/lib/rules/no-empty-function.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-empty-function"), +const rule = require("../../../lib/rules/no-empty-function"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let ALLOW_OPTIONS = Object.freeze([ +const ALLOW_OPTIONS = Object.freeze([ "functions", "arrowFunctions", "generatorFunctions", @@ -86,7 +86,7 @@ function toValidInvalid(patterns, item) { // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-empty-function", rule, [ { diff --git a/tests/lib/rules/no-empty-pattern.js b/tests/lib/rules/no-empty-pattern.js index 9b381e7dc39..3e80149cead 100644 --- a/tests/lib/rules/no-empty-pattern.js +++ b/tests/lib/rules/no-empty-pattern.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-empty-pattern"), +const rule = require("../../../lib/rules/no-empty-pattern"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-empty-pattern", rule, { diff --git a/tests/lib/rules/no-empty.js b/tests/lib/rules/no-empty.js index 6677b46e5cf..0432d1f5fa0 100644 --- a/tests/lib/rules/no-empty.js +++ b/tests/lib/rules/no-empty.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-empty"), +const rule = require("../../../lib/rules/no-empty"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-empty", rule, { valid: [ diff --git a/tests/lib/rules/no-eq-null.js b/tests/lib/rules/no-eq-null.js index baec8c036e7..74f526005fa 100644 --- a/tests/lib/rules/no-eq-null.js +++ b/tests/lib/rules/no-eq-null.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-eq-null"), +const rule = require("../../../lib/rules/no-eq-null"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-eq-null", rule, { valid: [ diff --git a/tests/lib/rules/no-eval.js b/tests/lib/rules/no-eval.js index 77b239b3335..ce751747ddb 100644 --- a/tests/lib/rules/no-eval.js +++ b/tests/lib/rules/no-eval.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-eval"), +const rule = require("../../../lib/rules/no-eval"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-eval", rule, { valid: [ diff --git a/tests/lib/rules/no-ex-assign.js b/tests/lib/rules/no-ex-assign.js index d1084edcff7..e90ac4e57c2 100644 --- a/tests/lib/rules/no-ex-assign.js +++ b/tests/lib/rules/no-ex-assign.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-ex-assign"), +const rule = require("../../../lib/rules/no-ex-assign"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-ex-assign", rule, { valid: [ diff --git a/tests/lib/rules/no-extend-native.js b/tests/lib/rules/no-extend-native.js index b3a962cf5f8..b930648b68d 100644 --- a/tests/lib/rules/no-extend-native.js +++ b/tests/lib/rules/no-extend-native.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-extend-native"), +const rule = require("../../../lib/rules/no-extend-native"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-extend-native", rule, { valid: [ diff --git a/tests/lib/rules/no-extra-bind.js b/tests/lib/rules/no-extra-bind.js index b6b75b5a033..09f6d2c8b91 100644 --- a/tests/lib/rules/no-extra-bind.js +++ b/tests/lib/rules/no-extra-bind.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-extra-bind"), +const rule = require("../../../lib/rules/no-extra-bind"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-extra-bind", rule, { valid: [ diff --git a/tests/lib/rules/no-extra-boolean-cast.js b/tests/lib/rules/no-extra-boolean-cast.js index 10580878cd6..36d5a714dee 100644 --- a/tests/lib/rules/no-extra-boolean-cast.js +++ b/tests/lib/rules/no-extra-boolean-cast.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-extra-boolean-cast"), +const rule = require("../../../lib/rules/no-extra-boolean-cast"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-extra-boolean-cast", rule, { diff --git a/tests/lib/rules/no-extra-label.js b/tests/lib/rules/no-extra-label.js index 516ec836f84..2b52812efaa 100644 --- a/tests/lib/rules/no-extra-label.js +++ b/tests/lib/rules/no-extra-label.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-extra-label"), +const rule = require("../../../lib/rules/no-extra-label"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-extra-label", rule, { valid: [ diff --git a/tests/lib/rules/no-extra-parens.js b/tests/lib/rules/no-extra-parens.js index 202de92ae76..668b4a2fa54 100644 --- a/tests/lib/rules/no-extra-parens.js +++ b/tests/lib/rules/no-extra-parens.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-extra-parens"), +const rule = require("../../../lib/rules/no-extra-parens"), RuleTester = require("../../../lib/testers/rule-tester"); /** @@ -24,7 +24,7 @@ let rule = require("../../../lib/rules/no-extra-parens"), function invalid(code, type, line, config) { config = config || {}; - let result = { + const result = { code: code, parserOptions: config.parserOptions || {}, errors: [ @@ -43,7 +43,7 @@ function invalid(code, type, line, config) { return result; } -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-extra-parens", rule, { valid: [ diff --git a/tests/lib/rules/no-extra-semi.js b/tests/lib/rules/no-extra-semi.js index 977ec3319bc..69419e6789d 100644 --- a/tests/lib/rules/no-extra-semi.js +++ b/tests/lib/rules/no-extra-semi.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-extra-semi"), +const rule = require("../../../lib/rules/no-extra-semi"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-extra-semi", rule, { valid: [ diff --git a/tests/lib/rules/no-fallthrough.js b/tests/lib/rules/no-fallthrough.js index aacec75b20f..3f1f1786e38 100644 --- a/tests/lib/rules/no-fallthrough.js +++ b/tests/lib/rules/no-fallthrough.js @@ -9,19 +9,19 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-fallthrough"), +const rule = require("../../../lib/rules/no-fallthrough"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let errorsDefault = [{ +const errorsDefault = [{ message: "Expected a 'break' statement before 'default'.", type: "SwitchCase" }]; -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-fallthrough", rule, { valid: [ diff --git a/tests/lib/rules/no-floating-decimal.js b/tests/lib/rules/no-floating-decimal.js index 6ab38b0d8c9..d4f6d5b7d52 100644 --- a/tests/lib/rules/no-floating-decimal.js +++ b/tests/lib/rules/no-floating-decimal.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-floating-decimal"), +const rule = require("../../../lib/rules/no-floating-decimal"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-floating-decimal", rule, { valid: [ diff --git a/tests/lib/rules/no-func-assign.js b/tests/lib/rules/no-func-assign.js index 6c92be3ddc9..0842bed4b69 100644 --- a/tests/lib/rules/no-func-assign.js +++ b/tests/lib/rules/no-func-assign.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-func-assign"), +const rule = require("../../../lib/rules/no-func-assign"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-func-assign", rule, { valid: [ diff --git a/tests/lib/rules/no-global-assign.js b/tests/lib/rules/no-global-assign.js index 656d0350d0e..2c620cccadb 100644 --- a/tests/lib/rules/no-global-assign.js +++ b/tests/lib/rules/no-global-assign.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-global-assign"), +const rule = require("../../../lib/rules/no-global-assign"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-global-assign", rule, { valid: [ diff --git a/tests/lib/rules/no-implicit-coercion.js b/tests/lib/rules/no-implicit-coercion.js index a36286ede74..639ef046cb7 100644 --- a/tests/lib/rules/no-implicit-coercion.js +++ b/tests/lib/rules/no-implicit-coercion.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-implicit-coercion"); -let RuleTester = require("../../../lib/testers/rule-tester"); +const rule = require("../../../lib/rules/no-implicit-coercion"); +const RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-implicit-coercion", rule, { valid: [ diff --git a/tests/lib/rules/no-implicit-globals.js b/tests/lib/rules/no-implicit-globals.js index ef68ef0bc7d..21fc50cb83a 100644 --- a/tests/lib/rules/no-implicit-globals.js +++ b/tests/lib/rules/no-implicit-globals.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-implicit-globals"), +const rule = require("../../../lib/rules/no-implicit-globals"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-implicit-globals", rule, { valid: [ diff --git a/tests/lib/rules/no-implied-eval.js b/tests/lib/rules/no-implied-eval.js index 99f305ff8e6..5104a47c139 100644 --- a/tests/lib/rules/no-implied-eval.js +++ b/tests/lib/rules/no-implied-eval.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-implied-eval"), +const rule = require("../../../lib/rules/no-implied-eval"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(), +const ruleTester = new RuleTester(), expectedErrorMessage = "Implied eval. Consider passing a function instead of a string.", expectedError = { message: expectedErrorMessage, type: "CallExpression" }; diff --git a/tests/lib/rules/no-inline-comments.js b/tests/lib/rules/no-inline-comments.js index a20fdb26d19..cad7d2e6c02 100644 --- a/tests/lib/rules/no-inline-comments.js +++ b/tests/lib/rules/no-inline-comments.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-inline-comments"), +const rule = require("../../../lib/rules/no-inline-comments"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(), +const ruleTester = new RuleTester(), lineError = { messsage: "Unexpected comment inline with code.", type: "Line" diff --git a/tests/lib/rules/no-inner-declarations.js b/tests/lib/rules/no-inner-declarations.js index a46ad791a05..5efe80900c8 100644 --- a/tests/lib/rules/no-inner-declarations.js +++ b/tests/lib/rules/no-inner-declarations.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-inner-declarations"), +const rule = require("../../../lib/rules/no-inner-declarations"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-inner-declarations", rule, { diff --git a/tests/lib/rules/no-invalid-regexp.js b/tests/lib/rules/no-invalid-regexp.js index 3d236a3eac3..8d3e2d35924 100644 --- a/tests/lib/rules/no-invalid-regexp.js +++ b/tests/lib/rules/no-invalid-regexp.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-invalid-regexp"), +const rule = require("../../../lib/rules/no-invalid-regexp"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-invalid-regexp", rule, { valid: [ diff --git a/tests/lib/rules/no-invalid-this.js b/tests/lib/rules/no-invalid-this.js index 62ef2dcf5cc..540870e4271 100644 --- a/tests/lib/rules/no-invalid-this.js +++ b/tests/lib/rules/no-invalid-this.js @@ -9,9 +9,9 @@ // Requirements //------------------------------------------------------------------------------ -let lodash = require("lodash"); -let rule = require("../../../lib/rules/no-invalid-this"); -let RuleTester = require("../../../lib/testers/rule-tester"); +const lodash = require("lodash"); +const rule = require("../../../lib/rules/no-invalid-this"); +const RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Helpers @@ -68,9 +68,9 @@ function MODULES(pattern) { function extractPatterns(patterns, type) { // Clone and apply the pattern environment. - let patternsList = patterns.map(function(pattern) { + const patternsList = patterns.map(function(pattern) { return pattern[type].map(function(applyCondition) { - let thisPattern = lodash.cloneDeep(pattern); + const thisPattern = lodash.cloneDeep(pattern); applyCondition(thisPattern); @@ -93,12 +93,12 @@ function extractPatterns(patterns, type) { // Tests //------------------------------------------------------------------------------ -let errors = [ +const errors = [ {message: "Unexpected 'this'.", type: "ThisExpression"}, {message: "Unexpected 'this'.", type: "ThisExpression"} ]; -let patterns = [ +const patterns = [ // Global. { @@ -532,7 +532,7 @@ let patterns = [ } ]; -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-invalid-this", rule, { valid: extractPatterns(patterns, "valid"), diff --git a/tests/lib/rules/no-irregular-whitespace.js b/tests/lib/rules/no-irregular-whitespace.js index ed24a3343e3..af46d8555e5 100644 --- a/tests/lib/rules/no-irregular-whitespace.js +++ b/tests/lib/rules/no-irregular-whitespace.js @@ -9,20 +9,20 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-irregular-whitespace"), +const rule = require("../../../lib/rules/no-irregular-whitespace"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); -let expectedErrors = [{ +const expectedErrors = [{ message: "Irregular whitespace not allowed.", type: "Program" }]; -let expectedCommentErrors = [{ +const expectedCommentErrors = [{ message: "Irregular whitespace not allowed.", type: "Program", line: 1, diff --git a/tests/lib/rules/no-iterator.js b/tests/lib/rules/no-iterator.js index 1b39fa29031..8db7a87c653 100644 --- a/tests/lib/rules/no-iterator.js +++ b/tests/lib/rules/no-iterator.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-iterator"), +const rule = require("../../../lib/rules/no-iterator"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-iterator", rule, { valid: [ diff --git a/tests/lib/rules/no-label-var.js b/tests/lib/rules/no-label-var.js index 9b2e67ebfa4..800461e26dd 100644 --- a/tests/lib/rules/no-label-var.js +++ b/tests/lib/rules/no-label-var.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-label-var"), +const rule = require("../../../lib/rules/no-label-var"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-label-var", rule, { valid: [ diff --git a/tests/lib/rules/no-labels.js b/tests/lib/rules/no-labels.js index abdc2321967..3ab6ff139a0 100644 --- a/tests/lib/rules/no-labels.js +++ b/tests/lib/rules/no-labels.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-labels"), +const rule = require("../../../lib/rules/no-labels"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-labels", rule, { diff --git a/tests/lib/rules/no-lone-blocks.js b/tests/lib/rules/no-lone-blocks.js index e84a45fd5a6..87ed3642170 100644 --- a/tests/lib/rules/no-lone-blocks.js +++ b/tests/lib/rules/no-lone-blocks.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-lone-blocks"), +const rule = require("../../../lib/rules/no-lone-blocks"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-lone-blocks", rule, { valid: [ diff --git a/tests/lib/rules/no-lonely-if.js b/tests/lib/rules/no-lonely-if.js index fc8f9ca406e..7834bd06cda 100644 --- a/tests/lib/rules/no-lonely-if.js +++ b/tests/lib/rules/no-lonely-if.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-lonely-if"), +const rule = require("../../../lib/rules/no-lonely-if"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-lonely-if", rule, { diff --git a/tests/lib/rules/no-loop-func.js b/tests/lib/rules/no-loop-func.js index 014c634ac43..6df6abf8d01 100644 --- a/tests/lib/rules/no-loop-func.js +++ b/tests/lib/rules/no-loop-func.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-loop-func"), +const rule = require("../../../lib/rules/no-loop-func"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(), +const ruleTester = new RuleTester(), expectedErrorMessage = "Don't make functions within a loop."; ruleTester.run("no-loop-func", rule, { diff --git a/tests/lib/rules/no-magic-numbers.js b/tests/lib/rules/no-magic-numbers.js index 5818221f47b..ab12d790b67 100644 --- a/tests/lib/rules/no-magic-numbers.js +++ b/tests/lib/rules/no-magic-numbers.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-magic-numbers"), +const rule = require("../../../lib/rules/no-magic-numbers"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Helpers //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-magic-numbers", rule, { valid: [ diff --git a/tests/lib/rules/no-mixed-operators.js b/tests/lib/rules/no-mixed-operators.js index 18e9d64fe0d..c0955f6d9e0 100644 --- a/tests/lib/rules/no-mixed-operators.js +++ b/tests/lib/rules/no-mixed-operators.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-mixed-operators"), +const rule = require("../../../lib/rules/no-mixed-operators"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-mixed-operators", rule, { valid: [ diff --git a/tests/lib/rules/no-mixed-requires.js b/tests/lib/rules/no-mixed-requires.js index 1a5769709e0..a9a9d1cded7 100644 --- a/tests/lib/rules/no-mixed-requires.js +++ b/tests/lib/rules/no-mixed-requires.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-mixed-requires"), +const rule = require("../../../lib/rules/no-mixed-requires"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-mixed-requires", rule, { valid: [ diff --git a/tests/lib/rules/no-mixed-spaces-and-tabs.js b/tests/lib/rules/no-mixed-spaces-and-tabs.js index 554629c716c..d806a03396d 100644 --- a/tests/lib/rules/no-mixed-spaces-and-tabs.js +++ b/tests/lib/rules/no-mixed-spaces-and-tabs.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-mixed-spaces-and-tabs"), +const rule = require("../../../lib/rules/no-mixed-spaces-and-tabs"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-mixed-spaces-and-tabs", rule, { diff --git a/tests/lib/rules/no-multi-spaces.js b/tests/lib/rules/no-multi-spaces.js index b4fcb445caf..f77dd23ce56 100644 --- a/tests/lib/rules/no-multi-spaces.js +++ b/tests/lib/rules/no-multi-spaces.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-multi-spaces"), +const rule = require("../../../lib/rules/no-multi-spaces"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-multi-spaces", rule, { diff --git a/tests/lib/rules/no-multi-str.js b/tests/lib/rules/no-multi-str.js index b285a963f7a..1708b842327 100644 --- a/tests/lib/rules/no-multi-str.js +++ b/tests/lib/rules/no-multi-str.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-multi-str"), +const rule = require("../../../lib/rules/no-multi-str"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-multi-str", rule, { valid: [ diff --git a/tests/lib/rules/no-multiple-empty-lines.js b/tests/lib/rules/no-multiple-empty-lines.js index 4191439833c..893ae6d06b0 100644 --- a/tests/lib/rules/no-multiple-empty-lines.js +++ b/tests/lib/rules/no-multiple-empty-lines.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-multiple-empty-lines"), +const rule = require("../../../lib/rules/no-multiple-empty-lines"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); /** * Creates the expected error message object for the specified number of lines @@ -24,7 +24,7 @@ let ruleTester = new RuleTester(); * @private */ function getExpectedError(lines) { - let message = lines === 1 + const message = lines === 1 ? "More than 1 blank line not allowed." : "More than " + lines + " blank lines not allowed."; diff --git a/tests/lib/rules/no-native-reassign.js b/tests/lib/rules/no-native-reassign.js index 294639a0980..7c1e193800e 100644 --- a/tests/lib/rules/no-native-reassign.js +++ b/tests/lib/rules/no-native-reassign.js @@ -10,14 +10,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-native-reassign"), +const rule = require("../../../lib/rules/no-native-reassign"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-native-reassign", rule, { valid: [ diff --git a/tests/lib/rules/no-negated-condition.js b/tests/lib/rules/no-negated-condition.js index 572c76d1c3d..81d46efc0dc 100644 --- a/tests/lib/rules/no-negated-condition.js +++ b/tests/lib/rules/no-negated-condition.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-negated-condition"), +const rule = require("../../../lib/rules/no-negated-condition"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-negated-condition", rule, { diff --git a/tests/lib/rules/no-negated-in-lhs.js b/tests/lib/rules/no-negated-in-lhs.js index ba5ae071cf9..633c6154964 100644 --- a/tests/lib/rules/no-negated-in-lhs.js +++ b/tests/lib/rules/no-negated-in-lhs.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-negated-in-lhs"), +const rule = require("../../../lib/rules/no-negated-in-lhs"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-negated-in-lhs", rule, { valid: [ diff --git a/tests/lib/rules/no-nested-ternary.js b/tests/lib/rules/no-nested-ternary.js index 6fa8ec50204..a1e30a70355 100644 --- a/tests/lib/rules/no-nested-ternary.js +++ b/tests/lib/rules/no-nested-ternary.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-nested-ternary"), +const rule = require("../../../lib/rules/no-nested-ternary"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-nested-ternary", rule, { valid: [ diff --git a/tests/lib/rules/no-new-func.js b/tests/lib/rules/no-new-func.js index 833e3ed85f5..f0ac2f9e05d 100644 --- a/tests/lib/rules/no-new-func.js +++ b/tests/lib/rules/no-new-func.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-new-func"), +const rule = require("../../../lib/rules/no-new-func"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-new-func", rule, { valid: [ diff --git a/tests/lib/rules/no-new-object.js b/tests/lib/rules/no-new-object.js index 223d447281a..929997295d8 100644 --- a/tests/lib/rules/no-new-object.js +++ b/tests/lib/rules/no-new-object.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-new-object"), +const rule = require("../../../lib/rules/no-new-object"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-new-object", rule, { valid: [ diff --git a/tests/lib/rules/no-new-require.js b/tests/lib/rules/no-new-require.js index 24e2cc4410a..70af4ee411e 100644 --- a/tests/lib/rules/no-new-require.js +++ b/tests/lib/rules/no-new-require.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-new-require"), +const rule = require("../../../lib/rules/no-new-require"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-new-require", rule, { valid: [ diff --git a/tests/lib/rules/no-new-symbol.js b/tests/lib/rules/no-new-symbol.js index 231d6d4b8b6..b68fb7a9de4 100644 --- a/tests/lib/rules/no-new-symbol.js +++ b/tests/lib/rules/no-new-symbol.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-new-symbol"), +const rule = require("../../../lib/rules/no-new-symbol"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-new-symbol", rule, { valid: [ diff --git a/tests/lib/rules/no-new-wrappers.js b/tests/lib/rules/no-new-wrappers.js index 1d48a417da7..132db507a0b 100644 --- a/tests/lib/rules/no-new-wrappers.js +++ b/tests/lib/rules/no-new-wrappers.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-new-wrappers"), +const rule = require("../../../lib/rules/no-new-wrappers"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-new-wrappers", rule, { valid: [ diff --git a/tests/lib/rules/no-new.js b/tests/lib/rules/no-new.js index 275f98be5ce..36a974bfb31 100644 --- a/tests/lib/rules/no-new.js +++ b/tests/lib/rules/no-new.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-new"), +const rule = require("../../../lib/rules/no-new"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-new", rule, { valid: [ diff --git a/tests/lib/rules/no-obj-calls.js b/tests/lib/rules/no-obj-calls.js index 9e1e14cdeb0..6cf2bb8bf16 100644 --- a/tests/lib/rules/no-obj-calls.js +++ b/tests/lib/rules/no-obj-calls.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-obj-calls"), +const rule = require("../../../lib/rules/no-obj-calls"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-obj-calls", rule, { valid: [ diff --git a/tests/lib/rules/no-octal-escape.js b/tests/lib/rules/no-octal-escape.js index f9f850da2ad..a5f1e330fe2 100644 --- a/tests/lib/rules/no-octal-escape.js +++ b/tests/lib/rules/no-octal-escape.js @@ -10,14 +10,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-octal-escape"), +const rule = require("../../../lib/rules/no-octal-escape"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-octal-escape", rule, { valid: [ diff --git a/tests/lib/rules/no-octal.js b/tests/lib/rules/no-octal.js index 19842472689..ae34450ac5a 100644 --- a/tests/lib/rules/no-octal.js +++ b/tests/lib/rules/no-octal.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-octal"), +const rule = require("../../../lib/rules/no-octal"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-octal", rule, { valid: [ diff --git a/tests/lib/rules/no-param-reassign.js b/tests/lib/rules/no-param-reassign.js index 9873307b237..6e932036f37 100644 --- a/tests/lib/rules/no-param-reassign.js +++ b/tests/lib/rules/no-param-reassign.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-param-reassign"), +const rule = require("../../../lib/rules/no-param-reassign"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-param-reassign", rule, { diff --git a/tests/lib/rules/no-path-concat.js b/tests/lib/rules/no-path-concat.js index 62c25679c4d..d07116fa447 100644 --- a/tests/lib/rules/no-path-concat.js +++ b/tests/lib/rules/no-path-concat.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-path-concat"), +const rule = require("../../../lib/rules/no-path-concat"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-path-concat", rule, { diff --git a/tests/lib/rules/no-plusplus.js b/tests/lib/rules/no-plusplus.js index cd250c92898..f9d5fe6cc1a 100644 --- a/tests/lib/rules/no-plusplus.js +++ b/tests/lib/rules/no-plusplus.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-plusplus"), +const rule = require("../../../lib/rules/no-plusplus"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-plusplus", rule, { valid: [ diff --git a/tests/lib/rules/no-process-env.js b/tests/lib/rules/no-process-env.js index bfe25df27d0..e0971d36a1c 100644 --- a/tests/lib/rules/no-process-env.js +++ b/tests/lib/rules/no-process-env.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-process-env"), +const rule = require("../../../lib/rules/no-process-env"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-process-env", rule, { diff --git a/tests/lib/rules/no-process-exit.js b/tests/lib/rules/no-process-exit.js index bc47aa73ef1..2b9a48751f9 100644 --- a/tests/lib/rules/no-process-exit.js +++ b/tests/lib/rules/no-process-exit.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-process-exit"), +const rule = require("../../../lib/rules/no-process-exit"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-process-exit", rule, { diff --git a/tests/lib/rules/no-proto.js b/tests/lib/rules/no-proto.js index 9da8a0d47ad..4250a07c7f5 100644 --- a/tests/lib/rules/no-proto.js +++ b/tests/lib/rules/no-proto.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-proto"), +const rule = require("../../../lib/rules/no-proto"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-proto", rule, { valid: [ diff --git a/tests/lib/rules/no-prototype-builtins.js b/tests/lib/rules/no-prototype-builtins.js index 06b45dd5d9b..6b2845ee09f 100644 --- a/tests/lib/rules/no-prototype-builtins.js +++ b/tests/lib/rules/no-prototype-builtins.js @@ -9,15 +9,15 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-prototype-builtins"), +const rule = require("../../../lib/rules/no-prototype-builtins"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); -let valid = [ +const valid = [ { code: "Object.prototype.hasOwnProperty.call(foo, 'bar')" }, { code: "Object.prototype.isPrototypeOf.call(foo, 'bar')" }, { code: "Object.prototype.propertyIsEnumerable.call(foo, 'bar')" }, @@ -35,7 +35,7 @@ let valid = [ { code: "({}.propertyIsEnumerable.apply(foo, ['bar']))" } ]; -let invalid = [ +const invalid = [ { code: "foo.hasOwnProperty('bar')", errors: [{ diff --git a/tests/lib/rules/no-redeclare.js b/tests/lib/rules/no-redeclare.js index d9351ec564e..a535f24fecf 100644 --- a/tests/lib/rules/no-redeclare.js +++ b/tests/lib/rules/no-redeclare.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-redeclare"), +const rule = require("../../../lib/rules/no-redeclare"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-redeclare", rule, { valid: [ diff --git a/tests/lib/rules/no-regex-spaces.js b/tests/lib/rules/no-regex-spaces.js index 6908409d7c0..8bd67876703 100644 --- a/tests/lib/rules/no-regex-spaces.js +++ b/tests/lib/rules/no-regex-spaces.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-regex-spaces"), +const rule = require("../../../lib/rules/no-regex-spaces"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-regex-spaces", rule, { valid: [ diff --git a/tests/lib/rules/no-restricted-globals.js b/tests/lib/rules/no-restricted-globals.js index abcdcb0dbaf..fc5f44faf50 100644 --- a/tests/lib/rules/no-restricted-globals.js +++ b/tests/lib/rules/no-restricted-globals.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-restricted-globals"), +const rule = require("../../../lib/rules/no-restricted-globals"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-restricted-globals", rule, { valid: [ diff --git a/tests/lib/rules/no-restricted-imports.js b/tests/lib/rules/no-restricted-imports.js index c11706e33e8..9ce67fcf42f 100644 --- a/tests/lib/rules/no-restricted-imports.js +++ b/tests/lib/rules/no-restricted-imports.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-restricted-imports"), +const rule = require("../../../lib/rules/no-restricted-imports"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-restricted-imports", rule, { valid: [ diff --git a/tests/lib/rules/no-restricted-modules.js b/tests/lib/rules/no-restricted-modules.js index 87d15374470..74560b7a37d 100644 --- a/tests/lib/rules/no-restricted-modules.js +++ b/tests/lib/rules/no-restricted-modules.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-restricted-modules"), +const rule = require("../../../lib/rules/no-restricted-modules"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-restricted-modules", rule, { valid: [ diff --git a/tests/lib/rules/no-restricted-syntax.js b/tests/lib/rules/no-restricted-syntax.js index 007b44ea3e2..effe203cea4 100644 --- a/tests/lib/rules/no-restricted-syntax.js +++ b/tests/lib/rules/no-restricted-syntax.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-restricted-syntax"), +const rule = require("../../../lib/rules/no-restricted-syntax"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-restricted-syntax", rule, { valid: [ diff --git a/tests/lib/rules/no-return-assign.js b/tests/lib/rules/no-return-assign.js index ece38be3593..34fd9e59de0 100644 --- a/tests/lib/rules/no-return-assign.js +++ b/tests/lib/rules/no-return-assign.js @@ -9,19 +9,19 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-return-assign"), +const rule = require("../../../lib/rules/no-return-assign"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let error = { +const error = { message: "Return statement should not contain assignment.", type: "ReturnStatement" }; -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-return-assign", rule, { valid: [ diff --git a/tests/lib/rules/no-script-url.js b/tests/lib/rules/no-script-url.js index d611fbad282..feee5cb925d 100644 --- a/tests/lib/rules/no-script-url.js +++ b/tests/lib/rules/no-script-url.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-script-url"), +const rule = require("../../../lib/rules/no-script-url"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-script-url", rule, { valid: [ diff --git a/tests/lib/rules/no-self-assign.js b/tests/lib/rules/no-self-assign.js index cfafbed3885..e9cb049efdc 100644 --- a/tests/lib/rules/no-self-assign.js +++ b/tests/lib/rules/no-self-assign.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-self-assign"), +const rule = require("../../../lib/rules/no-self-assign"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-self-assign", rule, { valid: [ diff --git a/tests/lib/rules/no-self-compare.js b/tests/lib/rules/no-self-compare.js index 6af3a920c80..d3b869f6d3f 100644 --- a/tests/lib/rules/no-self-compare.js +++ b/tests/lib/rules/no-self-compare.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-self-compare"), +const rule = require("../../../lib/rules/no-self-compare"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-self-compare", rule, { valid: [ diff --git a/tests/lib/rules/no-sequences.js b/tests/lib/rules/no-sequences.js index a6d723e0d98..7f7ed21c056 100644 --- a/tests/lib/rules/no-sequences.js +++ b/tests/lib/rules/no-sequences.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-sequences"), +const rule = require("../../../lib/rules/no-sequences"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ @@ -30,7 +30,7 @@ function errors(column) { }]; } -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-sequences", rule, { diff --git a/tests/lib/rules/no-shadow-restricted-names.js b/tests/lib/rules/no-shadow-restricted-names.js index fcce94b26df..8de7dc9f954 100644 --- a/tests/lib/rules/no-shadow-restricted-names.js +++ b/tests/lib/rules/no-shadow-restricted-names.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-shadow-restricted-names"), +const rule = require("../../../lib/rules/no-shadow-restricted-names"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-shadow-restricted-names", rule, { valid: [ diff --git a/tests/lib/rules/no-shadow.js b/tests/lib/rules/no-shadow.js index 736776c541b..07d033b51d6 100644 --- a/tests/lib/rules/no-shadow.js +++ b/tests/lib/rules/no-shadow.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-shadow"), +const rule = require("../../../lib/rules/no-shadow"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-shadow", rule, { valid: [ diff --git a/tests/lib/rules/no-spaced-func.js b/tests/lib/rules/no-spaced-func.js index 5e92b1df7d6..42f0ba22bc7 100644 --- a/tests/lib/rules/no-spaced-func.js +++ b/tests/lib/rules/no-spaced-func.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-spaced-func"), +const rule = require("../../../lib/rules/no-spaced-func"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-spaced-func", rule, { valid: [ diff --git a/tests/lib/rules/no-sparse-arrays.js b/tests/lib/rules/no-sparse-arrays.js index 5c7689468ea..d177d0634d9 100644 --- a/tests/lib/rules/no-sparse-arrays.js +++ b/tests/lib/rules/no-sparse-arrays.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-sparse-arrays"), +const rule = require("../../../lib/rules/no-sparse-arrays"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-sparse-arrays", rule, { diff --git a/tests/lib/rules/no-sync.js b/tests/lib/rules/no-sync.js index 0c40f6895a2..49dbf5055cc 100644 --- a/tests/lib/rules/no-sync.js +++ b/tests/lib/rules/no-sync.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-sync"), +const rule = require("../../../lib/rules/no-sync"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-sync", rule, { valid: [ diff --git a/tests/lib/rules/no-ternary.js b/tests/lib/rules/no-ternary.js index 2a127d4b754..9a3005757df 100644 --- a/tests/lib/rules/no-ternary.js +++ b/tests/lib/rules/no-ternary.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-ternary"), +const rule = require("../../../lib/rules/no-ternary"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-ternary", rule, { valid: [ diff --git a/tests/lib/rules/no-this-before-super.js b/tests/lib/rules/no-this-before-super.js index 00ae4fd0a4b..e0fea2bcf35 100644 --- a/tests/lib/rules/no-this-before-super.js +++ b/tests/lib/rules/no-this-before-super.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-this-before-super"); -let RuleTester = require("../../../lib/testers/rule-tester"); +const rule = require("../../../lib/rules/no-this-before-super"); +const RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-this-before-super", rule, { valid: [ diff --git a/tests/lib/rules/no-throw-literal.js b/tests/lib/rules/no-throw-literal.js index 601b5f03d3b..054e12ffcc5 100644 --- a/tests/lib/rules/no-throw-literal.js +++ b/tests/lib/rules/no-throw-literal.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-throw-literal"), +const rule = require("../../../lib/rules/no-throw-literal"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-throw-literal", rule, { valid: [ diff --git a/tests/lib/rules/no-trailing-spaces.js b/tests/lib/rules/no-trailing-spaces.js index 6d462420eeb..a9ba1336391 100644 --- a/tests/lib/rules/no-trailing-spaces.js +++ b/tests/lib/rules/no-trailing-spaces.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-trailing-spaces"), +const rule = require("../../../lib/rules/no-trailing-spaces"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-trailing-spaces", rule, { diff --git a/tests/lib/rules/no-undef-init.js b/tests/lib/rules/no-undef-init.js index 37f8daa6fd8..2261608cd0a 100644 --- a/tests/lib/rules/no-undef-init.js +++ b/tests/lib/rules/no-undef-init.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-undef-init"), +const rule = require("../../../lib/rules/no-undef-init"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-undef-init", rule, { valid: [ diff --git a/tests/lib/rules/no-undef.js b/tests/lib/rules/no-undef.js index e11fd952611..014bd5549d0 100644 --- a/tests/lib/rules/no-undef.js +++ b/tests/lib/rules/no-undef.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-undef"), +const rule = require("../../../lib/rules/no-undef"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-undef", rule, { valid: [ diff --git a/tests/lib/rules/no-undefined.js b/tests/lib/rules/no-undefined.js index ac9742607af..5eb720c8393 100644 --- a/tests/lib/rules/no-undefined.js +++ b/tests/lib/rules/no-undefined.js @@ -9,16 +9,16 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-undefined"), +const rule = require("../../../lib/rules/no-undefined"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let errors = [{ message: "Unexpected use of undefined.", type: "Identifier"}]; +const errors = [{ message: "Unexpected use of undefined.", type: "Identifier"}]; -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-undefined", rule, { valid: [ diff --git a/tests/lib/rules/no-underscore-dangle.js b/tests/lib/rules/no-underscore-dangle.js index d4d484909da..7707b65a134 100644 --- a/tests/lib/rules/no-underscore-dangle.js +++ b/tests/lib/rules/no-underscore-dangle.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-underscore-dangle"), +const rule = require("../../../lib/rules/no-underscore-dangle"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-underscore-dangle", rule, { valid: [ diff --git a/tests/lib/rules/no-unexpected-multiline.js b/tests/lib/rules/no-unexpected-multiline.js index 39000a4872e..eb0e9f92b2b 100644 --- a/tests/lib/rules/no-unexpected-multiline.js +++ b/tests/lib/rules/no-unexpected-multiline.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-unexpected-multiline"), +const rule = require("../../../lib/rules/no-unexpected-multiline"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-unexpected-multiline", rule, { valid: [ diff --git a/tests/lib/rules/no-unmodified-loop-condition.js b/tests/lib/rules/no-unmodified-loop-condition.js index a7dca2e18bf..8263c6bf008 100644 --- a/tests/lib/rules/no-unmodified-loop-condition.js +++ b/tests/lib/rules/no-unmodified-loop-condition.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-unmodified-loop-condition"), +const rule = require("../../../lib/rules/no-unmodified-loop-condition"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-unmodified-loop-condition", rule, { valid: [ diff --git a/tests/lib/rules/no-unneeded-ternary.js b/tests/lib/rules/no-unneeded-ternary.js index 1b6606ad90b..40c9a79537d 100644 --- a/tests/lib/rules/no-unneeded-ternary.js +++ b/tests/lib/rules/no-unneeded-ternary.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-unneeded-ternary"), +const rule = require("../../../lib/rules/no-unneeded-ternary"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-unneeded-ternary", rule, { valid: [ diff --git a/tests/lib/rules/no-unreachable.js b/tests/lib/rules/no-unreachable.js index 8159b53df01..0100c0df027 100644 --- a/tests/lib/rules/no-unreachable.js +++ b/tests/lib/rules/no-unreachable.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-unreachable"), +const rule = require("../../../lib/rules/no-unreachable"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-unreachable", rule, { valid: [ diff --git a/tests/lib/rules/no-unsafe-finally.js b/tests/lib/rules/no-unsafe-finally.js index 4126e21d44a..88a76c33da5 100644 --- a/tests/lib/rules/no-unsafe-finally.js +++ b/tests/lib/rules/no-unsafe-finally.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-unsafe-finally"), +const rule = require("../../../lib/rules/no-unsafe-finally"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-unsafe-finally", rule, { valid: [ diff --git a/tests/lib/rules/no-unused-expressions.js b/tests/lib/rules/no-unused-expressions.js index 866954d2971..a24e7665a02 100644 --- a/tests/lib/rules/no-unused-expressions.js +++ b/tests/lib/rules/no-unused-expressions.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-unused-expressions"), +const rule = require("../../../lib/rules/no-unused-expressions"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-unused-expressions", rule, { valid: [ diff --git a/tests/lib/rules/no-unused-labels.js b/tests/lib/rules/no-unused-labels.js index bb43c85ba27..1cd2240746c 100644 --- a/tests/lib/rules/no-unused-labels.js +++ b/tests/lib/rules/no-unused-labels.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-unused-labels"), +const rule = require("../../../lib/rules/no-unused-labels"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-unused-labels", rule, { valid: [ diff --git a/tests/lib/rules/no-unused-vars.js b/tests/lib/rules/no-unused-vars.js index fe9758a713d..f7596d98277 100644 --- a/tests/lib/rules/no-unused-vars.js +++ b/tests/lib/rules/no-unused-vars.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-unused-vars"), +const rule = require("../../../lib/rules/no-unused-vars"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.defineRule("use-every-a", function(context) { diff --git a/tests/lib/rules/no-use-before-define.js b/tests/lib/rules/no-use-before-define.js index ec9af04257e..fdadf9e4bc7 100644 --- a/tests/lib/rules/no-use-before-define.js +++ b/tests/lib/rules/no-use-before-define.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-use-before-define"), +const rule = require("../../../lib/rules/no-use-before-define"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-use-before-define", rule, { valid: [ diff --git a/tests/lib/rules/no-useless-call.js b/tests/lib/rules/no-useless-call.js index a9a14d307c7..1f95fce470f 100644 --- a/tests/lib/rules/no-useless-call.js +++ b/tests/lib/rules/no-useless-call.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-useless-call"); -let RuleTester = require("../../../lib/testers/rule-tester"); +const rule = require("../../../lib/rules/no-useless-call"); +const RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-useless-call", rule, { valid: [ diff --git a/tests/lib/rules/no-useless-computed-key.js b/tests/lib/rules/no-useless-computed-key.js index 025a71ad7b0..1edcc5c1eff 100644 --- a/tests/lib/rules/no-useless-computed-key.js +++ b/tests/lib/rules/no-useless-computed-key.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-useless-computed-key"), +const rule = require("../../../lib/rules/no-useless-computed-key"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-useless-computed-key", rule, { valid: [ diff --git a/tests/lib/rules/no-useless-concat.js b/tests/lib/rules/no-useless-concat.js index a001f35721a..bb04457b89b 100644 --- a/tests/lib/rules/no-useless-concat.js +++ b/tests/lib/rules/no-useless-concat.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-useless-concat"), +const rule = require("../../../lib/rules/no-useless-concat"), RuleTester = require("../../../lib/testers/rule-tester"); @@ -17,7 +17,7 @@ let rule = require("../../../lib/rules/no-useless-concat"), // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-useless-concat", rule, { diff --git a/tests/lib/rules/no-useless-constructor.js b/tests/lib/rules/no-useless-constructor.js index 8b1be3b9a0a..7926e446d92 100644 --- a/tests/lib/rules/no-useless-constructor.js +++ b/tests/lib/rules/no-useless-constructor.js @@ -9,15 +9,15 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-useless-constructor"); -let RuleTester = require("../../../lib/testers/rule-tester"); +const rule = require("../../../lib/rules/no-useless-constructor"); +const RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); -let error = {message: "Useless constructor.", type: "MethodDefinition"}; +const ruleTester = new RuleTester(); +const error = {message: "Useless constructor.", type: "MethodDefinition"}; ruleTester.run("no-useless-constructor", rule, { valid: [ diff --git a/tests/lib/rules/no-useless-escape.js b/tests/lib/rules/no-useless-escape.js index b5471bd25ee..5537cbb1123 100644 --- a/tests/lib/rules/no-useless-escape.js +++ b/tests/lib/rules/no-useless-escape.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-useless-escape"), +const rule = require("../../../lib/rules/no-useless-escape"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-useless-escape", rule, { valid: [ diff --git a/tests/lib/rules/no-useless-rename.js b/tests/lib/rules/no-useless-rename.js index ed3a366b6d1..327ced4cf73 100644 --- a/tests/lib/rules/no-useless-rename.js +++ b/tests/lib/rules/no-useless-rename.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-useless-rename"), +const rule = require("../../../lib/rules/no-useless-rename"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-useless-rename", rule, { valid: [ diff --git a/tests/lib/rules/no-var.js b/tests/lib/rules/no-var.js index 4fee60277bf..82d8ccfcdce 100644 --- a/tests/lib/rules/no-var.js +++ b/tests/lib/rules/no-var.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-var"), +const rule = require("../../../lib/rules/no-var"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-var", rule, { valid: [ diff --git a/tests/lib/rules/no-void.js b/tests/lib/rules/no-void.js index 5f4a2a0901d..afe66910795 100644 --- a/tests/lib/rules/no-void.js +++ b/tests/lib/rules/no-void.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-void"), +const rule = require("../../../lib/rules/no-void"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-void", rule, { diff --git a/tests/lib/rules/no-warning-comments.js b/tests/lib/rules/no-warning-comments.js index 3fe57057bd7..b1aa3717839 100644 --- a/tests/lib/rules/no-warning-comments.js +++ b/tests/lib/rules/no-warning-comments.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-warning-comments"), +const rule = require("../../../lib/rules/no-warning-comments"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-warning-comments", rule, { valid: [ diff --git a/tests/lib/rules/no-whitespace-before-property.js b/tests/lib/rules/no-whitespace-before-property.js index df3751039bf..6645406fb3b 100644 --- a/tests/lib/rules/no-whitespace-before-property.js +++ b/tests/lib/rules/no-whitespace-before-property.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-whitespace-before-property"), +const rule = require("../../../lib/rules/no-whitespace-before-property"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-whitespace-before-property", rule, { diff --git a/tests/lib/rules/no-with.js b/tests/lib/rules/no-with.js index 962831d0ca3..8edbf060547 100644 --- a/tests/lib/rules/no-with.js +++ b/tests/lib/rules/no-with.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/no-with"), +const rule = require("../../../lib/rules/no-with"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("no-with", rule, { valid: [ diff --git a/tests/lib/rules/object-curly-newline.js b/tests/lib/rules/object-curly-newline.js index 4f93c9f8c19..f1308c846b2 100644 --- a/tests/lib/rules/object-curly-newline.js +++ b/tests/lib/rules/object-curly-newline.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/object-curly-newline"), +const rule = require("../../../lib/rules/object-curly-newline"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("object-curly-newline", rule, { valid: [ diff --git a/tests/lib/rules/object-curly-spacing.js b/tests/lib/rules/object-curly-spacing.js index 26c69cb9001..f11aefcf871 100644 --- a/tests/lib/rules/object-curly-spacing.js +++ b/tests/lib/rules/object-curly-spacing.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/object-curly-spacing"), +const rule = require("../../../lib/rules/object-curly-spacing"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("object-curly-spacing", rule, { diff --git a/tests/lib/rules/object-property-newline.js b/tests/lib/rules/object-property-newline.js index 9b12b6e3bae..730579b2942 100644 --- a/tests/lib/rules/object-property-newline.js +++ b/tests/lib/rules/object-property-newline.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/object-property-newline"), +const rule = require("../../../lib/rules/object-property-newline"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("object-property-newline", rule, { diff --git a/tests/lib/rules/object-shorthand.js b/tests/lib/rules/object-shorthand.js index cc68a3cbb8b..66f60cacc8a 100644 --- a/tests/lib/rules/object-shorthand.js +++ b/tests/lib/rules/object-shorthand.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/object-shorthand"), +const rule = require("../../../lib/rules/object-shorthand"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("object-shorthand", rule, { valid: [ diff --git a/tests/lib/rules/one-var-declaration-per-line.js b/tests/lib/rules/one-var-declaration-per-line.js index 8fb4514abde..830df6aabb6 100644 --- a/tests/lib/rules/one-var-declaration-per-line.js +++ b/tests/lib/rules/one-var-declaration-per-line.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/one-var-declaration-per-line"), +const rule = require("../../../lib/rules/one-var-declaration-per-line"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ @@ -37,7 +37,7 @@ function errorAt(line, column) { // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("one-var-declaration-per-line", rule, { valid: [ diff --git a/tests/lib/rules/one-var.js b/tests/lib/rules/one-var.js index f2b79dfd47e..f24328af5e5 100644 --- a/tests/lib/rules/one-var.js +++ b/tests/lib/rules/one-var.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/one-var"), +const rule = require("../../../lib/rules/one-var"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("one-var", rule, { valid: [ diff --git a/tests/lib/rules/operator-assignment.js b/tests/lib/rules/operator-assignment.js index ef9305ca6e5..e11b18775aa 100644 --- a/tests/lib/rules/operator-assignment.js +++ b/tests/lib/rules/operator-assignment.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/operator-assignment"), +const rule = require("../../../lib/rules/operator-assignment"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("operator-assignment", rule, { diff --git a/tests/lib/rules/operator-linebreak.js b/tests/lib/rules/operator-linebreak.js index f8456f06278..327c6e564a8 100644 --- a/tests/lib/rules/operator-linebreak.js +++ b/tests/lib/rules/operator-linebreak.js @@ -8,11 +8,11 @@ // Requirements //------------------------------------------------------------------------------ -let util = require("util"); -let rule = require("../../../lib/rules/operator-linebreak"), +const util = require("util"); +const rule = require("../../../lib/rules/operator-linebreak"), RuleTester = require("../../../lib/testers/rule-tester"); -let BAD_LN_BRK_MSG = "Bad line breaking before and after '%s'.", +const BAD_LN_BRK_MSG = "Bad line breaking before and after '%s'.", BEFORE_MSG = "'%s' should be placed at the beginning of the line.", AFTER_MSG = "'%s' should be placed at the end of the line.", NONE_MSG = "There should be no line break before or after '%s'."; @@ -21,7 +21,7 @@ let BAD_LN_BRK_MSG = "Bad line breaking before and after '%s'.", // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("operator-linebreak", rule, { diff --git a/tests/lib/rules/padded-blocks.js b/tests/lib/rules/padded-blocks.js index 59c9a96cc94..2c4b5febd11 100644 --- a/tests/lib/rules/padded-blocks.js +++ b/tests/lib/rules/padded-blocks.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/padded-blocks"), +const rule = require("../../../lib/rules/padded-blocks"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(), +const ruleTester = new RuleTester(), ALWAYS_MESSAGE = "Block must be padded by blank lines.", NEVER_MESSAGE = "Block must not be padded by blank lines."; diff --git a/tests/lib/rules/prefer-arrow-callback.js b/tests/lib/rules/prefer-arrow-callback.js index 715d6de0c70..a827dc49c72 100644 --- a/tests/lib/rules/prefer-arrow-callback.js +++ b/tests/lib/rules/prefer-arrow-callback.js @@ -9,19 +9,19 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/prefer-arrow-callback"); -let RuleTester = require("../../../lib/testers/rule-tester"); +const rule = require("../../../lib/rules/prefer-arrow-callback"); +const RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let errors = [{ +const errors = [{ message: "Unexpected function expression.", type: "FunctionExpression" }]; -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("prefer-arrow-callback", rule, { valid: [ diff --git a/tests/lib/rules/prefer-const.js b/tests/lib/rules/prefer-const.js index 99432f3fd4f..29c1813ad41 100644 --- a/tests/lib/rules/prefer-const.js +++ b/tests/lib/rules/prefer-const.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/prefer-const"), +const rule = require("../../../lib/rules/prefer-const"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("prefer-const", rule, { valid: [ diff --git a/tests/lib/rules/prefer-reflect.js b/tests/lib/rules/prefer-reflect.js index 7aa380e06da..c1602d477f7 100644 --- a/tests/lib/rules/prefer-reflect.js +++ b/tests/lib/rules/prefer-reflect.js @@ -8,14 +8,14 @@ //------------------------------------------------------------------------------ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/prefer-reflect"), +const rule = require("../../../lib/rules/prefer-reflect"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("prefer-reflect", rule, { valid: [ diff --git a/tests/lib/rules/prefer-rest-params.js b/tests/lib/rules/prefer-rest-params.js index 47faa9fbe96..464ae18e8fc 100644 --- a/tests/lib/rules/prefer-rest-params.js +++ b/tests/lib/rules/prefer-rest-params.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/prefer-rest-params"), +const rule = require("../../../lib/rules/prefer-rest-params"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("prefer-rest-params", rule, { valid: [ diff --git a/tests/lib/rules/prefer-spread.js b/tests/lib/rules/prefer-spread.js index 70107db5fdb..c2f9d384ae0 100644 --- a/tests/lib/rules/prefer-spread.js +++ b/tests/lib/rules/prefer-spread.js @@ -9,16 +9,16 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/prefer-spread"); -let RuleTester = require("../../../lib/testers/rule-tester"); +const rule = require("../../../lib/rules/prefer-spread"); +const RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let errors = [{message: "use the spread operator instead of the '.apply()'.", type: "CallExpression"}]; +const errors = [{message: "use the spread operator instead of the '.apply()'.", type: "CallExpression"}]; -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("prefer-spread", rule, { valid: [ diff --git a/tests/lib/rules/prefer-template.js b/tests/lib/rules/prefer-template.js index 6d9c58e7b05..60f03cbdd7c 100644 --- a/tests/lib/rules/prefer-template.js +++ b/tests/lib/rules/prefer-template.js @@ -9,19 +9,19 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/prefer-template"); -let RuleTester = require("../../../lib/testers/rule-tester"); +const rule = require("../../../lib/rules/prefer-template"); +const RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let errors = [{ +const errors = [{ message: "Unexpected string concatenation.", type: "BinaryExpression" }]; -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("prefer-template", rule, { valid: [ diff --git a/tests/lib/rules/quote-props.js b/tests/lib/rules/quote-props.js index 9a605af94d5..79842aca9aa 100644 --- a/tests/lib/rules/quote-props.js +++ b/tests/lib/rules/quote-props.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/quote-props"), +const rule = require("../../../lib/rules/quote-props"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("quote-props", rule, { valid: [ diff --git a/tests/lib/rules/quotes.js b/tests/lib/rules/quotes.js index 5254286256b..8ede995b959 100644 --- a/tests/lib/rules/quotes.js +++ b/tests/lib/rules/quotes.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/quotes"), +const rule = require("../../../lib/rules/quotes"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("quotes", rule, { valid: [ diff --git a/tests/lib/rules/radix.js b/tests/lib/rules/radix.js index 34524370a5c..dfbf190ffc2 100644 --- a/tests/lib/rules/radix.js +++ b/tests/lib/rules/radix.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/radix"), +const rule = require("../../../lib/rules/radix"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("radix", rule, { diff --git a/tests/lib/rules/require-jsdoc.js b/tests/lib/rules/require-jsdoc.js index 98c067812ec..73597622a50 100644 --- a/tests/lib/rules/require-jsdoc.js +++ b/tests/lib/rules/require-jsdoc.js @@ -4,14 +4,14 @@ */ "use strict"; -let rule = require("../../../lib/rules/require-jsdoc"), +const rule = require("../../../lib/rules/require-jsdoc"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("require-jsdoc", rule, { valid: [ diff --git a/tests/lib/rules/require-yield.js b/tests/lib/rules/require-yield.js index 647482476c8..0695e9e579b 100644 --- a/tests/lib/rules/require-yield.js +++ b/tests/lib/rules/require-yield.js @@ -9,16 +9,16 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/require-yield"); -let RuleTester = require("../../../lib/testers/rule-tester"); +const rule = require("../../../lib/rules/require-yield"); +const RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let errorMessage = "This generator function does not have 'yield'."; +const errorMessage = "This generator function does not have 'yield'."; -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("require-yield", rule, { valid: [ diff --git a/tests/lib/rules/rest-spread-spacing.js b/tests/lib/rules/rest-spread-spacing.js index b40e2651141..93975010240 100644 --- a/tests/lib/rules/rest-spread-spacing.js +++ b/tests/lib/rules/rest-spread-spacing.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/rest-spread-spacing"), +const rule = require("../../../lib/rules/rest-spread-spacing"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("rest-spread-spacing", rule, { valid: [ diff --git a/tests/lib/rules/semi-spacing.js b/tests/lib/rules/semi-spacing.js index eb821ebd3fd..304bcc99b70 100644 --- a/tests/lib/rules/semi-spacing.js +++ b/tests/lib/rules/semi-spacing.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/semi-spacing"), +const rule = require("../../../lib/rules/semi-spacing"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("semi-spacing", rule, { valid: [ diff --git a/tests/lib/rules/semi.js b/tests/lib/rules/semi.js index f3f848b4cc5..50fa3ac5d23 100644 --- a/tests/lib/rules/semi.js +++ b/tests/lib/rules/semi.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/semi"), +const rule = require("../../../lib/rules/semi"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("semi", rule, { valid: [ diff --git a/tests/lib/rules/sort-imports.js b/tests/lib/rules/sort-imports.js index e5047670ef6..c4834b5cf82 100644 --- a/tests/lib/rules/sort-imports.js +++ b/tests/lib/rules/sort-imports.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/sort-imports"), +const rule = require("../../../lib/rules/sort-imports"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(), +const ruleTester = new RuleTester(), parserOptions = { ecmaVersion: 6, sourceType: "module" diff --git a/tests/lib/rules/sort-vars.js b/tests/lib/rules/sort-vars.js index 89a7905dc88..0dfbaa0616a 100644 --- a/tests/lib/rules/sort-vars.js +++ b/tests/lib/rules/sort-vars.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/sort-vars"), +const rule = require("../../../lib/rules/sort-vars"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(), +const ruleTester = new RuleTester(), expectedError = { message: "Variables within the same declaration block should be sorted alphabetically.", type: "VariableDeclarator" diff --git a/tests/lib/rules/space-before-blocks.js b/tests/lib/rules/space-before-blocks.js index 7a6798c6e59..a6056458139 100644 --- a/tests/lib/rules/space-before-blocks.js +++ b/tests/lib/rules/space-before-blocks.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/space-before-blocks"), +const rule = require("../../../lib/rules/space-before-blocks"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(), +const ruleTester = new RuleTester(), neverArgs = ["never"], functionsOnlyArgs = [ { functions: "always", keywords: "never", classes: "never" } ], keywordOnlyArgs = [ { functions: "never", keywords: "always", classes: "never" } ], diff --git a/tests/lib/rules/space-before-function-paren.js b/tests/lib/rules/space-before-function-paren.js index f5e43765150..0703f6b78a4 100644 --- a/tests/lib/rules/space-before-function-paren.js +++ b/tests/lib/rules/space-before-function-paren.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/space-before-function-paren"), +const rule = require("../../../lib/rules/space-before-function-paren"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("space-before-function-paren", rule, { diff --git a/tests/lib/rules/space-in-parens.js b/tests/lib/rules/space-in-parens.js index 7114669ad02..9ed2aede538 100644 --- a/tests/lib/rules/space-in-parens.js +++ b/tests/lib/rules/space-in-parens.js @@ -8,17 +8,17 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/space-in-parens"), +const rule = require("../../../lib/rules/space-in-parens"), RuleTester = require("../../../lib/testers/rule-tester"); -let MISSING_SPACE_ERROR = "There must be a space inside this paren.", +const MISSING_SPACE_ERROR = "There must be a space inside this paren.", REJECTED_SPACE_ERROR = "There should be no spaces inside this paren."; //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("space-in-parens", rule, { diff --git a/tests/lib/rules/space-infix-ops.js b/tests/lib/rules/space-infix-ops.js index 24e4c06fa09..bd987f02dd0 100644 --- a/tests/lib/rules/space-infix-ops.js +++ b/tests/lib/rules/space-infix-ops.js @@ -9,11 +9,11 @@ // Requirements //------------------------------------------------------------------------------ -let path = require("path"), +const path = require("path"), rule = require("../../../lib/rules/space-infix-ops"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("space-infix-ops", rule, { valid: [ diff --git a/tests/lib/rules/space-unary-ops.js b/tests/lib/rules/space-unary-ops.js index 6930b92e5e5..f46644ee833 100644 --- a/tests/lib/rules/space-unary-ops.js +++ b/tests/lib/rules/space-unary-ops.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/space-unary-ops"), +const rule = require("../../../lib/rules/space-unary-ops"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("space-unary-ops", rule, { diff --git a/tests/lib/rules/spaced-comment.js b/tests/lib/rules/spaced-comment.js index ce2625c5c43..59199b3b51c 100644 --- a/tests/lib/rules/spaced-comment.js +++ b/tests/lib/rules/spaced-comment.js @@ -4,10 +4,10 @@ */ "use strict"; -let rule = require("../../../lib/rules/spaced-comment"), +const rule = require("../../../lib/rules/spaced-comment"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(), +const ruleTester = new RuleTester(), validShebangProgram = "#!/path/to/node\nvar a = 3;", invalidShebangProgram = "#!/path/to/node\n#!/second/shebang\nvar a = 3;"; diff --git a/tests/lib/rules/strict.js b/tests/lib/rules/strict.js index ce2a159ba6d..70eb064ffe2 100644 --- a/tests/lib/rules/strict.js +++ b/tests/lib/rules/strict.js @@ -9,10 +9,10 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/strict"), +const rule = require("../../../lib/rules/strict"), RuleTester = require("../../../lib/testers/rule-tester"); -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("strict", rule, { valid: [ diff --git a/tests/lib/rules/template-curly-spacing.js b/tests/lib/rules/template-curly-spacing.js index 76e14a473c7..6b03a2810a3 100644 --- a/tests/lib/rules/template-curly-spacing.js +++ b/tests/lib/rules/template-curly-spacing.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/template-curly-spacing"), +const rule = require("../../../lib/rules/template-curly-spacing"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("template-curly-spacing", rule, { valid: [ diff --git a/tests/lib/rules/unicode-bom.js b/tests/lib/rules/unicode-bom.js index d451aec79ca..c0068586a49 100644 --- a/tests/lib/rules/unicode-bom.js +++ b/tests/lib/rules/unicode-bom.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/unicode-bom"), +const rule = require("../../../lib/rules/unicode-bom"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("unicode-bom", rule, { diff --git a/tests/lib/rules/use-isnan.js b/tests/lib/rules/use-isnan.js index 254f4521c03..0c043ecf03d 100644 --- a/tests/lib/rules/use-isnan.js +++ b/tests/lib/rules/use-isnan.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/use-isnan"), +const rule = require("../../../lib/rules/use-isnan"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ @@ -17,7 +17,7 @@ let rule = require("../../../lib/rules/use-isnan"), //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("use-isnan", rule, { valid: [ diff --git a/tests/lib/rules/valid-jsdoc.js b/tests/lib/rules/valid-jsdoc.js index bad7dcaaac1..a2583ad4edf 100644 --- a/tests/lib/rules/valid-jsdoc.js +++ b/tests/lib/rules/valid-jsdoc.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/valid-jsdoc"), +const rule = require("../../../lib/rules/valid-jsdoc"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("valid-jsdoc", rule, { diff --git a/tests/lib/rules/valid-typeof.js b/tests/lib/rules/valid-typeof.js index 8b67d82b62f..b1591b32b9a 100644 --- a/tests/lib/rules/valid-typeof.js +++ b/tests/lib/rules/valid-typeof.js @@ -8,14 +8,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/valid-typeof"), +const rule = require("../../../lib/rules/valid-typeof"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("valid-typeof", rule, { diff --git a/tests/lib/rules/vars-on-top.js b/tests/lib/rules/vars-on-top.js index dae81450da5..2ee78a9bae5 100644 --- a/tests/lib/rules/vars-on-top.js +++ b/tests/lib/rules/vars-on-top.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/vars-on-top"), +const rule = require("../../../lib/rules/vars-on-top"), EslintTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new EslintTester(); +const ruleTester = new EslintTester(); ruleTester.run("vars-on-top", rule, { diff --git a/tests/lib/rules/wrap-iife.js b/tests/lib/rules/wrap-iife.js index cd402e2a56b..9470ee5b629 100644 --- a/tests/lib/rules/wrap-iife.js +++ b/tests/lib/rules/wrap-iife.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/wrap-iife"), +const rule = require("../../../lib/rules/wrap-iife"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ @@ -17,7 +17,7 @@ let rule = require("../../../lib/rules/wrap-iife"), //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("wrap-iife", rule, { valid: [ diff --git a/tests/lib/rules/wrap-regex.js b/tests/lib/rules/wrap-regex.js index d9128fd610c..af409734e79 100644 --- a/tests/lib/rules/wrap-regex.js +++ b/tests/lib/rules/wrap-regex.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/wrap-regex"), +const rule = require("../../../lib/rules/wrap-regex"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ @@ -17,7 +17,7 @@ let rule = require("../../../lib/rules/wrap-regex"), //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("wrap-regex", rule, { valid: [ diff --git a/tests/lib/rules/yield-star-spacing.js b/tests/lib/rules/yield-star-spacing.js index 52b81b36156..0a387387d2b 100644 --- a/tests/lib/rules/yield-star-spacing.js +++ b/tests/lib/rules/yield-star-spacing.js @@ -9,14 +9,14 @@ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/yield-star-spacing"), +const rule = require("../../../lib/rules/yield-star-spacing"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("yield-star-spacing", rule, { diff --git a/tests/lib/rules/yoda.js b/tests/lib/rules/yoda.js index b32f6bff97f..b8df739ccc5 100644 --- a/tests/lib/rules/yoda.js +++ b/tests/lib/rules/yoda.js @@ -8,14 +8,14 @@ //------------------------------------------------------------------------------ // Requirements //------------------------------------------------------------------------------ -let rule = require("../../../lib/rules/yoda"), +const rule = require("../../../lib/rules/yoda"), RuleTester = require("../../../lib/testers/rule-tester"); //------------------------------------------------------------------------------ // Tests //------------------------------------------------------------------------------ -let ruleTester = new RuleTester(); +const ruleTester = new RuleTester(); ruleTester.run("yoda", rule, { valid: [ diff --git a/tests/lib/testers/rule-tester.js b/tests/lib/testers/rule-tester.js index b4426064f27..89253a9fc6d 100644 --- a/tests/lib/testers/rule-tester.js +++ b/tests/lib/testers/rule-tester.js @@ -10,7 +10,7 @@ // Requirements //------------------------------------------------------------------------------ -let sinon = require("sinon"), +const sinon = require("sinon"), eslint = require("../../../lib/eslint"), RuleTester = require("../../../lib/testers/rule-tester"), assert = require("chai").assert; @@ -223,7 +223,7 @@ describe("RuleTester", function() { }); it("should throw an error if invalid code specifies wrong column", function() { - let wrongColumn = 10, + const wrongColumn = 10, expectedErrorMessage = "Error column should be 1"; assert.throws(function() { @@ -452,7 +452,7 @@ describe("RuleTester", function() { it("should pass-through the parser to the rule", function() { assert.doesNotThrow(function() { - let spy = sinon.spy(eslint, "verify"); + const spy = sinon.spy(eslint, "verify"); ruleTester.run("no-eval", require("../../fixtures/testers/rule-tester/no-eval"), { valid: [ @@ -521,7 +521,7 @@ describe("RuleTester", function() { }); it("should correctly set the global configuration", function() { - let config = { global: { test: true } }; + const config = { global: { test: true } }; RuleTester.setDefaultConfig(config); assert( @@ -531,7 +531,7 @@ describe("RuleTester", function() { }); it("should correctly reset the global configuration", function() { - let config = { global: { test: true } }; + const config = { global: { test: true } }; RuleTester.setDefaultConfig(config); RuleTester.resetDefaultConfig(); @@ -564,7 +564,7 @@ describe("RuleTester", function() { }); it("should pass-through the global config to the tester then to the to rule", function() { - let config = { global: { test: true } }; + const config = { global: { test: true } }; RuleTester.setDefaultConfig(config); ruleTester = new RuleTester(); diff --git a/tests/lib/token-store.js b/tests/lib/token-store.js index 46aa699f3fd..903199427ae 100644 --- a/tests/lib/token-store.js +++ b/tests/lib/token-store.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, espree = require("espree"), TokenStore = require("../../lib/token-store"); @@ -17,7 +17,7 @@ let assert = require("chai").assert, // Constants //------------------------------------------------------------------------------ -let SOURCE_CODE = "var answer = a * b\n call();\n", +const SOURCE_CODE = "var answer = a * b\n call();\n", AST = espree.parse(SOURCE_CODE, { loc: true, range: true, tokens: true }), TOKENS = AST.tokens, Program = AST, @@ -37,11 +37,10 @@ let SOURCE_CODE = "var answer = a * b\n call();\n", * @returns {void} */ function check(tokens, expected) { - let length = tokens.length, - i; + const length = tokens.length; assert.equal(length, expected.length); - for (i = 0; i < length; i++) { + for (let i = 0; i < length; i++) { assert.equal(tokens[i].value, expected[i]); } } @@ -51,7 +50,7 @@ function check(tokens, expected) { //------------------------------------------------------------------------------ describe("TokenStore", function() { - let store = new TokenStore(TOKENS); + const store = new TokenStore(TOKENS); describe("when calling getTokens", function() { @@ -347,14 +346,14 @@ describe("TokenStore", function() { describe("when calling getTokenByRangeStart", function() { it("should return identifier token", function() { - let result = store.getTokenByRangeStart(4); + const result = store.getTokenByRangeStart(4); assert.equal(result.type, "Identifier"); assert.equal(result.value, "answer"); }); it("should return null when token doesn't exist", function() { - let result = store.getTokenByRangeStart(5); + const result = store.getTokenByRangeStart(5); assert.isNull(result); }); diff --git a/tests/lib/util/comment-event-generator.js b/tests/lib/util/comment-event-generator.js index c0933f367b2..eb97005ec94 100644 --- a/tests/lib/util/comment-event-generator.js +++ b/tests/lib/util/comment-event-generator.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("assert"), +const assert = require("assert"), EventEmitter = require("events").EventEmitter, sinon = require("sinon"), espree = require("espree"), @@ -28,18 +28,18 @@ describe("NodeEventGenerator", function() { ); it("should generate comment events without duplicate.", function() { - let emitter = new EventEmitter(); + const emitter = new EventEmitter(); let generator = new NodeEventGenerator(emitter); - let code = "//foo\nvar zzz /*aaa*/ = 777;\n//bar"; - let ast = espree.parse(code, { + const code = "//foo\nvar zzz /*aaa*/ = 777;\n//bar"; + const ast = espree.parse(code, { range: true, loc: true, comments: true, attachComment: true, tokens: true }); - let sourceCode = new SourceCode(code, ast); - let expected = [ + const sourceCode = new SourceCode(code, ast); + const expected = [ ["Program", ast], ["LineComment", ast.comments[0]], // foo diff --git a/tests/lib/util/glob-util.js b/tests/lib/util/glob-util.js index 99ad3852d81..fab5bebaccf 100644 --- a/tests/lib/util/glob-util.js +++ b/tests/lib/util/glob-util.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, path = require("path"), os = require("os"), sh = require("shelljs"), @@ -27,7 +27,7 @@ let fixtureDir; * @private */ function getFixturePath() { - let args = Array.prototype.slice.call(arguments); + const args = Array.prototype.slice.call(arguments); args.unshift(fs.realpathSync(fixtureDir)); return path.join.apply(path, args); @@ -52,94 +52,94 @@ describe("globUtil", function() { describe("resolveFileGlobPatterns()", function() { it("should convert a directory name with no provided extensions into a glob pattern", function() { - let patterns = ["one-js-file"]; - let opts = { + const patterns = ["one-js-file"]; + const opts = { cwd: getFixturePath("glob-util") }; - let result = globUtil.resolveFileGlobPatterns(patterns, opts); + const result = globUtil.resolveFileGlobPatterns(patterns, opts); assert.deepEqual(result, ["one-js-file/**/*.js"]); }); it("should convert an absolute directory name with no provided extensions into a posix glob pattern", function() { - let patterns = [getFixturePath("glob-util", "one-js-file")]; - let opts = { + const patterns = [getFixturePath("glob-util", "one-js-file")]; + const opts = { cwd: getFixturePath("glob-util") }; - let result = globUtil.resolveFileGlobPatterns(patterns, opts); - let expected = [getFixturePath("glob-util", "one-js-file").replace(/\\/g, "/") + "/**/*.js"]; + const result = globUtil.resolveFileGlobPatterns(patterns, opts); + const expected = [getFixturePath("glob-util", "one-js-file").replace(/\\/g, "/") + "/**/*.js"]; assert.deepEqual(result, expected); }); it("should convert a directory name with a single provided extension into a glob pattern", function() { - let patterns = ["one-js-file"]; - let opts = { + const patterns = ["one-js-file"]; + const opts = { cwd: getFixturePath("glob-util"), extensions: [".jsx"] }; - let result = globUtil.resolveFileGlobPatterns(patterns, opts); + const result = globUtil.resolveFileGlobPatterns(patterns, opts); assert.deepEqual(result, ["one-js-file/**/*.jsx"]); }); it("should convert a directory name with multiple provided extensions into a glob pattern", function() { - let patterns = ["one-js-file"]; - let opts = { + const patterns = ["one-js-file"]; + const opts = { cwd: getFixturePath("glob-util"), extensions: [".jsx", ".js"] }; - let result = globUtil.resolveFileGlobPatterns(patterns, opts); + const result = globUtil.resolveFileGlobPatterns(patterns, opts); assert.deepEqual(result, ["one-js-file/**/*.{jsx,js}"]); }); it("should convert multiple directory names into glob patterns", function() { - let patterns = ["one-js-file", "two-js-files"]; - let opts = { + const patterns = ["one-js-file", "two-js-files"]; + const opts = { cwd: getFixturePath("glob-util") }; - let result = globUtil.resolveFileGlobPatterns(patterns, opts); + const result = globUtil.resolveFileGlobPatterns(patterns, opts); assert.deepEqual(result, ["one-js-file/**/*.js", "two-js-files/**/*.js"]); }); it("should remove leading './' from glob patterns", function() { - let patterns = ["./one-js-file"]; - let opts = { + const patterns = ["./one-js-file"]; + const opts = { cwd: getFixturePath("glob-util") }; - let result = globUtil.resolveFileGlobPatterns(patterns, opts); + const result = globUtil.resolveFileGlobPatterns(patterns, opts); assert.deepEqual(result, ["one-js-file/**/*.js"]); }); it("should convert a directory name with a trailing '/' into a glob pattern", function() { - let patterns = ["one-js-file/"]; - let opts = { + const patterns = ["one-js-file/"]; + const opts = { cwd: getFixturePath("glob-util") }; - let result = globUtil.resolveFileGlobPatterns(patterns, opts); + const result = globUtil.resolveFileGlobPatterns(patterns, opts); assert.deepEqual(result, ["one-js-file/**/*.js"]); }); it("should return filenames as they are", function() { - let patterns = ["some-file.js"]; - let opts = { + const patterns = ["some-file.js"]; + const opts = { cwd: getFixturePath("glob-util") }; - let result = globUtil.resolveFileGlobPatterns(patterns, opts); + const result = globUtil.resolveFileGlobPatterns(patterns, opts); assert.deepEqual(result, ["some-file.js"]); }); it("should convert backslashes into forward slashes", function() { - let patterns = ["one-js-file\\example.js"]; - let opts = { + const patterns = ["one-js-file\\example.js"]; + const opts = { cwd: getFixturePath() }; - let result = globUtil.resolveFileGlobPatterns(patterns, opts); + const result = globUtil.resolveFileGlobPatterns(patterns, opts); assert.deepEqual(result, ["one-js-file/example.js"]); }); @@ -149,25 +149,25 @@ describe("globUtil", function() { describe("listFilesToProcess()", function() { it("should return an array with a resolved (absolute) filename", function() { - let patterns = [getFixturePath("glob-util", "one-js-file", "**/*.js")]; - let result = globUtil.listFilesToProcess(patterns, { + const patterns = [getFixturePath("glob-util", "one-js-file", "**/*.js")]; + const result = globUtil.listFilesToProcess(patterns, { cwd: getFixturePath() }); - let file1 = getFixturePath("glob-util", "one-js-file", "baz.js"); + const file1 = getFixturePath("glob-util", "one-js-file", "baz.js"); assert.isArray(result); assert.deepEqual(result, [{filename: file1, ignored: false}]); }); it("should return all files matching a glob pattern", function() { - let patterns = [getFixturePath("glob-util", "two-js-files", "**/*.js")]; - let result = globUtil.listFilesToProcess(patterns, { + const patterns = [getFixturePath("glob-util", "two-js-files", "**/*.js")]; + const result = globUtil.listFilesToProcess(patterns, { cwd: getFixturePath() }); - let file1 = getFixturePath("glob-util", "two-js-files", "bar.js"); - let file2 = getFixturePath("glob-util", "two-js-files", "foo.js"); + const file1 = getFixturePath("glob-util", "two-js-files", "bar.js"); + const file2 = getFixturePath("glob-util", "two-js-files", "foo.js"); assert.equal(result.length, 2); assert.deepEqual(result, [ @@ -177,17 +177,17 @@ describe("globUtil", function() { }); it("should return all files matching multiple glob patterns", function() { - let patterns = [ + const patterns = [ getFixturePath("glob-util", "two-js-files", "**/*.js"), getFixturePath("glob-util", "one-js-file", "**/*.js") ]; - let result = globUtil.listFilesToProcess(patterns, { + const result = globUtil.listFilesToProcess(patterns, { cwd: getFixturePath() }); - let file1 = getFixturePath("glob-util", "two-js-files", "bar.js"); - let file2 = getFixturePath("glob-util", "two-js-files", "foo.js"); - let file3 = getFixturePath("glob-util", "one-js-file", "baz.js"); + const file1 = getFixturePath("glob-util", "two-js-files", "bar.js"); + const file2 = getFixturePath("glob-util", "two-js-files", "foo.js"); + const file3 = getFixturePath("glob-util", "one-js-file", "baz.js"); assert.equal(result.length, 3); assert.deepEqual(result, [ @@ -198,20 +198,20 @@ describe("globUtil", function() { }); it("should not return hidden files for standard glob patterns", function() { - let patterns = [getFixturePath("glob-util", "hidden", "**/*.js")]; - let result = globUtil.listFilesToProcess(patterns); + const patterns = [getFixturePath("glob-util", "hidden", "**/*.js")]; + const result = globUtil.listFilesToProcess(patterns); assert.equal(result.length, 0); }); it("should return hidden files if included in glob pattern", function() { - let patterns = [getFixturePath("glob-util", "hidden", "**/.*.js")]; - let result = globUtil.listFilesToProcess(patterns, { + const patterns = [getFixturePath("glob-util", "hidden", "**/.*.js")]; + const result = globUtil.listFilesToProcess(patterns, { cwd: getFixturePath(), dotfiles: true }); - let file1 = getFixturePath("glob-util", "hidden", ".foo.js"); + const file1 = getFixturePath("glob-util", "hidden", ".foo.js"); assert.equal(result.length, 1); assert.deepEqual(result, [ @@ -220,9 +220,9 @@ describe("globUtil", function() { }); it("should silently ignore default ignored files if not passed explicitly", function() { - let directory = getFixturePath("glob-util", "hidden"); - let patterns = [directory]; - let result = globUtil.listFilesToProcess(patterns, { + const directory = getFixturePath("glob-util", "hidden"); + const patterns = [directory]; + const result = globUtil.listFilesToProcess(patterns, { cwd: getFixturePath() }); @@ -230,9 +230,9 @@ describe("globUtil", function() { }); it("should ignore and warn for default ignored files when passed explicitly", function() { - let filename = getFixturePath("glob-util", "hidden", ".foo.js"); - let patterns = [filename]; - let result = globUtil.listFilesToProcess(patterns, { + const filename = getFixturePath("glob-util", "hidden", ".foo.js"); + const patterns = [filename]; + const result = globUtil.listFilesToProcess(patterns, { cwd: getFixturePath() }); @@ -241,9 +241,9 @@ describe("globUtil", function() { }); it("should silently ignore default ignored files if not passed explicitly even if ignore is false", function() { - let directory = getFixturePath("glob-util", "hidden"); - let patterns = [directory]; - let result = globUtil.listFilesToProcess(patterns, { + const directory = getFixturePath("glob-util", "hidden"); + const patterns = [directory]; + const result = globUtil.listFilesToProcess(patterns, { cwd: getFixturePath(), ignore: false }); @@ -252,9 +252,9 @@ describe("globUtil", function() { }); it("should not ignore default ignored files when passed explicitly if ignore is false", function() { - let filename = getFixturePath("glob-util", "hidden", ".foo.js"); - let patterns = [filename]; - let result = globUtil.listFilesToProcess(patterns, { + const filename = getFixturePath("glob-util", "hidden", ".foo.js"); + const patterns = [filename]; + const result = globUtil.listFilesToProcess(patterns, { cwd: getFixturePath(), ignore: false }); @@ -264,8 +264,8 @@ describe("globUtil", function() { }); it("should not return a file which does not exist", function() { - let patterns = ["tests/fixtures/glob-util/hidden/bar.js"]; - let result = globUtil.listFilesToProcess(patterns); + const patterns = ["tests/fixtures/glob-util/hidden/bar.js"]; + const result = globUtil.listFilesToProcess(patterns); assert.equal(result.length, 0); }); @@ -273,46 +273,46 @@ describe("globUtil", function() { it("should not return an ignored file", function() { // Relying here on the .eslintignore from the repo root - let patterns = ["tests/fixtures/glob-util/ignored/**/*.js"]; - let result = globUtil.listFilesToProcess(patterns); + const patterns = ["tests/fixtures/glob-util/ignored/**/*.js"]; + const result = globUtil.listFilesToProcess(patterns); assert.equal(result.length, 0); }); it("should return an ignored file, if ignore option is turned off", function() { - let options = { ignore: false }; - let patterns = [getFixturePath("glob-util", "ignored", "**/*.js")]; - let result = globUtil.listFilesToProcess(patterns, options); + const options = { ignore: false }; + const patterns = [getFixturePath("glob-util", "ignored", "**/*.js")]; + const result = globUtil.listFilesToProcess(patterns, options); assert.equal(result.length, 1); }); it("should not return a file from a glob if it matches a pattern in an ignore file", function() { - let options = { ignore: true, ignorePath: getFixturePath("glob-util", "ignored", ".eslintignore") }; - let patterns = [getFixturePath("glob-util", "ignored", "**/*.js")]; - let result = globUtil.listFilesToProcess(patterns, options); + const options = { ignore: true, ignorePath: getFixturePath("glob-util", "ignored", ".eslintignore") }; + const patterns = [getFixturePath("glob-util", "ignored", "**/*.js")]; + const result = globUtil.listFilesToProcess(patterns, options); assert.equal(result.length, 0); }); it("should not return a file from a glob if matching a specified ignore pattern", function() { - let options = { ignore: true, ignorePattern: "foo.js", cwd: getFixturePath() }; - let patterns = [getFixturePath("glob-util", "ignored", "**/*.js")]; - let result = globUtil.listFilesToProcess(patterns, options); + const options = { ignore: true, ignorePattern: "foo.js", cwd: getFixturePath() }; + const patterns = [getFixturePath("glob-util", "ignored", "**/*.js")]; + const result = globUtil.listFilesToProcess(patterns, options); assert.equal(result.length, 0); }); it("should return a file only once if listed in more than 1 pattern", function() { - let patterns = [ + const patterns = [ getFixturePath("glob-util", "one-js-file", "**/*.js"), getFixturePath("glob-util", "one-js-file", "baz.js") ]; - let result = globUtil.listFilesToProcess(patterns, { + const result = globUtil.listFilesToProcess(patterns, { cwd: path.join(fixtureDir, "..") }); - let file1 = getFixturePath("glob-util", "one-js-file", "baz.js"); + const file1 = getFixturePath("glob-util", "one-js-file", "baz.js"); assert.isArray(result); assert.deepEqual(result, [ @@ -321,10 +321,10 @@ describe("globUtil", function() { }); it("should set 'ignored: true' for files that are explicitly specified but ignored", function() { - let options = { ignore: true, ignorePattern: "foo.js", cwd: getFixturePath() }; - let filename = getFixturePath("glob-util", "ignored", "foo.js"); - let patterns = [filename]; - let result = globUtil.listFilesToProcess(patterns, options); + const options = { ignore: true, ignorePattern: "foo.js", cwd: getFixturePath() }; + const filename = getFixturePath("glob-util", "ignored", "foo.js"); + const patterns = [filename]; + const result = globUtil.listFilesToProcess(patterns, options); assert.equal(result.length, 1); assert.deepEqual(result, [ @@ -333,11 +333,11 @@ describe("globUtil", function() { }); it("should not return files from default ignored folders", function() { - let options = { cwd: getFixturePath("glob-util") }; - let glob = getFixturePath("glob-util", "**/*.js"); - let patterns = [glob]; - let result = globUtil.listFilesToProcess(patterns, options); - let resultFilenames = result.map(function(resultObj) { + const options = { cwd: getFixturePath("glob-util") }; + const glob = getFixturePath("glob-util", "**/*.js"); + const patterns = [glob]; + const result = globUtil.listFilesToProcess(patterns, options); + const resultFilenames = result.map(function(resultObj) { return resultObj.filename; }); @@ -345,11 +345,11 @@ describe("globUtil", function() { }); it("should return unignored files from default ignored folders", function() { - let options = { ignorePattern: "!/node_modules/dependency.js", cwd: getFixturePath("glob-util") }; - let glob = getFixturePath("glob-util", "**/*.js"); - let patterns = [glob]; - let result = globUtil.listFilesToProcess(patterns, options); - let unignoredFilename = getFixturePath("glob-util", "node_modules", "dependency.js"); + const options = { ignorePattern: "!/node_modules/dependency.js", cwd: getFixturePath("glob-util") }; + const glob = getFixturePath("glob-util", "**/*.js"); + const patterns = [glob]; + const result = globUtil.listFilesToProcess(patterns, options); + const unignoredFilename = getFixturePath("glob-util", "node_modules", "dependency.js"); assert.includeDeepMembers(result, [{filename: unignoredFilename, ignored: false}]); }); diff --git a/tests/lib/util/module-resolver.js b/tests/lib/util/module-resolver.js index 2b8cfd20e08..7fa00f6a746 100644 --- a/tests/lib/util/module-resolver.js +++ b/tests/lib/util/module-resolver.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let path = require("path"), +const path = require("path"), assert = require("chai").assert, leche = require("leche"), ModuleResolver = require("../../../lib/util/module-resolver"); @@ -17,7 +17,7 @@ let path = require("path"), // Data //------------------------------------------------------------------------------ -let FIXTURES_PATH = path.resolve(__dirname, "../../fixtures/module-resolver"); +const FIXTURES_PATH = path.resolve(__dirname, "../../fixtures/module-resolver"); //------------------------------------------------------------------------------ // Tests @@ -37,7 +37,7 @@ describe("ModuleResolver", function() { ], function(name, lookupPath, expected) { it("should find the correct location of a file", function() { - let resolver = new ModuleResolver(), + const resolver = new ModuleResolver(), result = resolver.resolve(name, lookupPath); assert.equal(result, expected); diff --git a/tests/lib/util/node-event-generator.js b/tests/lib/util/node-event-generator.js index 12db5251a60..c9dd283383f 100644 --- a/tests/lib/util/node-event-generator.js +++ b/tests/lib/util/node-event-generator.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("assert"), +const assert = require("assert"), EventEmitter = require("events").EventEmitter, sinon = require("sinon"), EventGeneratorTester = require("../../../lib/testers/event-generator-tester"), @@ -32,7 +32,7 @@ describe("NodeEventGenerator", function() { }); it("should generate events for entering AST node.", function() { - let dummyNode = {type: "Foo", value: 1}; + const dummyNode = {type: "Foo", value: 1}; generator.enterNode(dummyNode); @@ -41,7 +41,7 @@ describe("NodeEventGenerator", function() { }); it("should generate events for exitting AST node.", function() { - let dummyNode = {type: "Foo", value: 1}; + const dummyNode = {type: "Foo", value: 1}; generator.leaveNode(dummyNode); diff --git a/tests/lib/util/npm-util.js b/tests/lib/util/npm-util.js index 649cb63380f..8a5e8b6a093 100644 --- a/tests/lib/util/npm-util.js +++ b/tests/lib/util/npm-util.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, fs = require("fs"), shell = require("shelljs"), sinon = require("sinon"), @@ -71,13 +71,13 @@ describe("npmUtil", function() { }); }); - let fn = npmUtil.checkDevDeps.bind(null, ["some-package"]); + const fn = npmUtil.checkDevDeps.bind(null, ["some-package"]); assert.doesNotThrow(fn); }); it("should throw with message when parsing invalid package.json", function() { - let logInfo = sandbox.stub(log, "info"); + const logInfo = sandbox.stub(log, "info"); sandbox.stub(fs, "existsSync", function() { return true; @@ -86,7 +86,7 @@ describe("npmUtil", function() { return "{ \"not: \"valid json\" }"; }); - let fn = npmUtil.checkDevDeps.bind(null, ["some-package"]); + const fn = npmUtil.checkDevDeps.bind(null, ["some-package"]); assert.throws(fn, "SyntaxError: Unexpected token v"); assert(logInfo.calledOnce); @@ -139,7 +139,7 @@ describe("npmUtil", function() { }); }); - let fn = npmUtil.checkDeps.bind(null, ["some-package"]); + const fn = npmUtil.checkDeps.bind(null, ["some-package"]); assert.doesNotThrow(fn); @@ -148,7 +148,7 @@ describe("npmUtil", function() { }); it("should throw with message when parsing invalid package.json", function() { - let logInfo = sandbox.stub(log, "info"); + const logInfo = sandbox.stub(log, "info"); sandbox.stub(fs, "existsSync", function() { return true; @@ -157,7 +157,7 @@ describe("npmUtil", function() { return "{ \"not: \"valid json\" }"; }); - let fn = npmUtil.checkDevDeps.bind(null, ["some-package"]); + const fn = npmUtil.checkDevDeps.bind(null, ["some-package"]); assert.throws(fn, "SyntaxError: Unexpected token v"); assert(logInfo.calledOnce); @@ -190,7 +190,7 @@ describe("npmUtil", function() { describe("installSyncSaveDev()", function() { it("should invoke npm to install a single desired package", function() { - let stub = sandbox.stub(shell, "exec"); + const stub = sandbox.stub(shell, "exec"); npmUtil.installSyncSaveDev("desired-package"); assert(stub.calledOnce); @@ -199,7 +199,7 @@ describe("npmUtil", function() { }); it("should accept an array of packages to install", function() { - let stub = sandbox.stub(shell, "exec"); + const stub = sandbox.stub(shell, "exec"); npmUtil.installSyncSaveDev(["first-package", "second-package"]); assert(stub.calledOnce); diff --git a/tests/lib/util/path-util.js b/tests/lib/util/path-util.js index bae6d6ff9d6..961b3644662 100644 --- a/tests/lib/util/path-util.js +++ b/tests/lib/util/path-util.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let path = require("path"), +const path = require("path"), assert = require("chai").assert, sinon = require("sinon"), pathUtil = require("../../../lib/util/path-util"); @@ -22,29 +22,29 @@ describe("pathUtil", function() { describe("convertPathToPosix()", function() { it("should remove a leading './'", function() { - let input = "./relative/file/path.js"; - let result = pathUtil.convertPathToPosix(input); + const input = "./relative/file/path.js"; + const result = pathUtil.convertPathToPosix(input); assert.equal(result, "relative/file/path.js"); }); it("should remove interior '../'", function() { - let input = "./relative/file/../path.js"; - let result = pathUtil.convertPathToPosix(input); + const input = "./relative/file/../path.js"; + const result = pathUtil.convertPathToPosix(input); assert.equal(result, "relative/path.js"); }); it("should not remove a leading '../'", function() { - let input = "../parent/file/path.js"; - let result = pathUtil.convertPathToPosix(input); + const input = "../parent/file/path.js"; + const result = pathUtil.convertPathToPosix(input); assert.equal(result, "../parent/file/path.js"); }); it("should convert windows path seperators into posix style path seperators", function() { - let input = "windows\\style\\path.js"; - let result = pathUtil.convertPathToPosix(input); + const input = "windows\\style\\path.js"; + const result = pathUtil.convertPathToPosix(input); assert.equal(result, "windows/style/path.js"); }); @@ -54,16 +54,16 @@ describe("pathUtil", function() { describe("getRelativePath()", function() { it("should return a path relative to the provided base path", function() { - let filePath = "/absolute/file/path.js"; - let basePath = "/absolute/"; - let result = pathUtil.getRelativePath(filePath, basePath); + const filePath = "/absolute/file/path.js"; + const basePath = "/absolute/"; + const result = pathUtil.getRelativePath(filePath, basePath); assert.equal(result, path.normalize("file/path.js")); }); it("should throw if the base path is not absolute", function() { - let filePath = "/absolute/file/path.js"; - let basePath = "somewhere/"; + const filePath = "/absolute/file/path.js"; + const basePath = "somewhere/"; assert.throws(function() { pathUtil.getRelativePath(filePath, basePath); @@ -71,13 +71,13 @@ describe("pathUtil", function() { }); it("should treat relative file path arguments as being relative to process.cwd", function() { - let filePath = "file/path.js"; - let basePath = "/absolute/file"; + const filePath = "file/path.js"; + const basePath = "/absolute/file"; sinon.stub(process, "cwd", function() { return "/absolute/"; }); - let result = pathUtil.getRelativePath(filePath, basePath); + const result = pathUtil.getRelativePath(filePath, basePath); assert.equal(result, "path.js"); @@ -85,8 +85,8 @@ describe("pathUtil", function() { }); it("should strip a leading '/' if no baseDir is provided", function() { - let filePath = "/absolute/file/path.js"; - let result = pathUtil.getRelativePath(filePath); + const filePath = "/absolute/file/path.js"; + const result = pathUtil.getRelativePath(filePath); assert.equal(result, "absolute/file/path.js"); }); diff --git a/tests/lib/util/rule-fixer.js b/tests/lib/util/rule-fixer.js index a3ade7f6d44..b93b3d0ab5c 100644 --- a/tests/lib/util/rule-fixer.js +++ b/tests/lib/util/rule-fixer.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, RuleFixer = require("../../../lib/util/rule-fixer"); //------------------------------------------------------------------------------ @@ -27,7 +27,7 @@ describe("RuleFixer", function() { it("should return an object with the correct information when called", function() { - let result = fixer.insertTextBefore({ range: [0, 1] }, "Hi"); + const result = fixer.insertTextBefore({ range: [0, 1] }, "Hi"); assert.deepEqual(result, { range: [0, 0], @@ -42,7 +42,7 @@ describe("RuleFixer", function() { it("should return an object with the correct information when called", function() { - let result = fixer.insertTextBeforeRange([0, 1], "Hi"); + const result = fixer.insertTextBeforeRange([0, 1], "Hi"); assert.deepEqual(result, { range: [0, 0], @@ -57,7 +57,7 @@ describe("RuleFixer", function() { it("should return an object with the correct information when called", function() { - let result = fixer.insertTextAfter({ range: [0, 1] }, "Hi"); + const result = fixer.insertTextAfter({ range: [0, 1] }, "Hi"); assert.deepEqual(result, { range: [1, 1], @@ -72,7 +72,7 @@ describe("RuleFixer", function() { it("should return an object with the correct information when called", function() { - let result = fixer.insertTextAfterRange([0, 1], "Hi"); + const result = fixer.insertTextAfterRange([0, 1], "Hi"); assert.deepEqual(result, { range: [1, 1], @@ -87,7 +87,7 @@ describe("RuleFixer", function() { it("should return an object with the correct information when called", function() { - let result = fixer.remove({ range: [0, 1] }); + const result = fixer.remove({ range: [0, 1] }); assert.deepEqual(result, { range: [0, 1], @@ -102,7 +102,7 @@ describe("RuleFixer", function() { it("should return an object with the correct information when called", function() { - let result = fixer.removeRange([0, 1]); + const result = fixer.removeRange([0, 1]); assert.deepEqual(result, { range: [0, 1], @@ -118,7 +118,7 @@ describe("RuleFixer", function() { it("should return an object with the correct information when called", function() { - let result = fixer.replaceText({ range: [0, 1] }, "Hi"); + const result = fixer.replaceText({ range: [0, 1] }, "Hi"); assert.deepEqual(result, { range: [0, 1], @@ -133,7 +133,7 @@ describe("RuleFixer", function() { it("should return an object with the correct information when called", function() { - let result = fixer.replaceTextRange([0, 1], "Hi"); + const result = fixer.replaceTextRange([0, 1], "Hi"); assert.deepEqual(result, { range: [0, 1], diff --git a/tests/lib/util/source-code-fixer.js b/tests/lib/util/source-code-fixer.js index 8506d15fb7d..05d0e4035d8 100644 --- a/tests/lib/util/source-code-fixer.js +++ b/tests/lib/util/source-code-fixer.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, espree = require("espree"), SourceCode = require("../../../lib/util/source-code"), SourceCodeFixer = require("../../../lib/util/source-code-fixer"); @@ -17,9 +17,9 @@ let assert = require("chai").assert, // Helpers //------------------------------------------------------------------------------ -let TEST_CODE = "var answer = 6 * 7;", +const TEST_CODE = "var answer = 6 * 7;", TEST_AST = espree.parse(TEST_CODE, { loc: true, range: true, tokens: true, comment: true }); -let INSERT_AT_END = { +const INSERT_AT_END = { message: "End", fix: { range: [ TEST_CODE.length, TEST_CODE.length ], @@ -133,7 +133,7 @@ describe("SourceCodeFixer", function() { describe("constructor", function() { it("Should not be able to add anything to this", function() { - let result = new SourceCodeFixer(); + const result = new SourceCodeFixer(); assert.throws(function() { result.test = 1; @@ -150,7 +150,7 @@ describe("SourceCodeFixer", function() { }); it("Should have empty output if sourceCode is not provided", function() { - let result = SourceCodeFixer.applyFixes(null, [ INSERT_AT_END ]); + const result = SourceCodeFixer.applyFixes(null, [ INSERT_AT_END ]); assert.equal(result.output.length, 0); }); @@ -158,28 +158,28 @@ describe("SourceCodeFixer", function() { describe("Text Insertion", function() { it("should insert text at the end of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_AT_END ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_AT_END ]); assert.equal(result.output, TEST_CODE + INSERT_AT_END.fix.text); assert.equal(result.messages.length, 0); }); it("should insert text at the beginning of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_AT_START ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_AT_START ]); assert.equal(result.output, INSERT_AT_START.fix.text + TEST_CODE); assert.equal(result.messages.length, 0); }); it("should insert text in the middle of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_IN_MIDDLE ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_IN_MIDDLE ]); assert.equal(result.output, TEST_CODE.replace("6 *", INSERT_IN_MIDDLE.fix.text + "6 *")); assert.equal(result.messages.length, 0); }); it("should insert text at the beginning, middle, and end of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_IN_MIDDLE, INSERT_AT_START, INSERT_AT_END ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_IN_MIDDLE, INSERT_AT_START, INSERT_AT_END ]); assert.equal(result.output, INSERT_AT_START.fix.text + TEST_CODE.replace("6 *", INSERT_IN_MIDDLE.fix.text + "6 *") + INSERT_AT_END.fix.text); assert.equal(result.messages.length, 0); @@ -191,7 +191,7 @@ describe("SourceCodeFixer", function() { describe("Text Replacement", function() { it("should replace text at the end of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_VAR ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_VAR ]); assert.equal(result.messages.length, 0); assert.equal(result.output, TEST_CODE.replace("var", "let")); @@ -199,7 +199,7 @@ describe("SourceCodeFixer", function() { }); it("should replace text at the beginning of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_ID ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_ID ]); assert.equal(result.messages.length, 0); assert.equal(result.output, TEST_CODE.replace("answer", "foo")); @@ -207,7 +207,7 @@ describe("SourceCodeFixer", function() { }); it("should replace text in the middle of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_NUM ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_NUM ]); assert.equal(result.messages.length, 0); assert.equal(result.output, TEST_CODE.replace("6", "5")); @@ -215,7 +215,7 @@ describe("SourceCodeFixer", function() { }); it("should replace text at the beginning and end of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_ID, REPLACE_VAR, REPLACE_NUM ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_ID, REPLACE_VAR, REPLACE_NUM ]); assert.equal(result.messages.length, 0); assert.equal(result.output, "let foo = 5 * 7;"); @@ -227,7 +227,7 @@ describe("SourceCodeFixer", function() { describe("Text Removal", function() { it("should remove text at the start of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_START ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_START ]); assert.equal(result.messages.length, 0); assert.equal(result.output, TEST_CODE.replace("var ", "")); @@ -235,7 +235,7 @@ describe("SourceCodeFixer", function() { }); it("should remove text in the middle of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_MIDDLE ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_MIDDLE ]); assert.equal(result.messages.length, 0); assert.equal(result.output, TEST_CODE.replace("answer", "a")); @@ -243,7 +243,7 @@ describe("SourceCodeFixer", function() { }); it("should remove text towards the end of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_END ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_END ]); assert.equal(result.messages.length, 0); assert.equal(result.output, TEST_CODE.replace(" * 7", "")); @@ -251,7 +251,7 @@ describe("SourceCodeFixer", function() { }); it("should remove text at the beginning, middle, and end of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_END, REMOVE_START, REMOVE_MIDDLE ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_END, REMOVE_START, REMOVE_MIDDLE ]); assert.equal(result.messages.length, 0); assert.equal(result.output, "a = 6;"); @@ -262,7 +262,7 @@ describe("SourceCodeFixer", function() { describe("Combination", function() { it("should replace text at the beginning, remove text in the middle, and insert text at the end", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_AT_END, REMOVE_END, REPLACE_VAR ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_AT_END, REMOVE_END, REPLACE_VAR ]); assert.equal(result.output, "let answer = 6;// end"); assert.isTrue(result.fixed); @@ -270,7 +270,7 @@ describe("SourceCodeFixer", function() { }); it("should only apply one fix when ranges overlap", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_MIDDLE, REPLACE_ID ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_MIDDLE, REPLACE_ID ]); assert.equal(result.output, TEST_CODE.replace("answer", "a")); assert.equal(result.messages.length, 1); @@ -279,7 +279,7 @@ describe("SourceCodeFixer", function() { }); it("should apply one fix when the end of one range is the same as the start of a previous range overlap", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_START, REPLACE_ID ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_START, REPLACE_ID ]); assert.equal(result.output, TEST_CODE.replace("answer", "foo")); assert.equal(result.messages.length, 1); @@ -288,7 +288,7 @@ describe("SourceCodeFixer", function() { }); it("should only apply one fix when ranges overlap and one message has no fix", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_MIDDLE, REPLACE_ID, NO_FIX ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_MIDDLE, REPLACE_ID, NO_FIX ]); assert.equal(result.output, TEST_CODE.replace("answer", "a")); assert.equal(result.messages.length, 2); @@ -298,8 +298,8 @@ describe("SourceCodeFixer", function() { }); it("should apply the same fix when ranges overlap regardless of order", function() { - let result1 = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_MIDDLE, REPLACE_ID]); - let result2 = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_ID, REMOVE_MIDDLE]); + const result1 = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_MIDDLE, REPLACE_ID]); + const result2 = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_ID, REMOVE_MIDDLE]); assert.equal(result1.output, result2.output); }); @@ -308,7 +308,7 @@ describe("SourceCodeFixer", function() { describe("No Fixes", function() { it("should only apply one fix when ranges overlap and one message has no fix", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ NO_FIX ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ NO_FIX ]); assert.equal(result.output, TEST_CODE); assert.equal(result.messages.length, 1); @@ -317,7 +317,7 @@ describe("SourceCodeFixer", function() { }); it("should sort the no fix messages correctly", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_ID, NO_FIX2, NO_FIX1 ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_ID, NO_FIX2, NO_FIX1 ]); assert.equal(result.output, TEST_CODE.replace("answer", "foo")); assert.equal(result.messages.length, 2); @@ -331,7 +331,7 @@ describe("SourceCodeFixer", function() { describe("BOM manipulations", function() { it("should insert BOM with an insertion of '\uFEFF' at 0", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_BOM ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_BOM ]); assert.equal(result.output, "\uFEFF" + TEST_CODE); assert.isTrue(result.fixed); @@ -339,7 +339,7 @@ describe("SourceCodeFixer", function() { }); it("should insert BOM with an insertion of '\uFEFFfoobar' at 0", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_BOM_WITH_TEXT ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_BOM_WITH_TEXT ]); assert.equal(result.output, "\uFEFF// start\n" + TEST_CODE); assert.isTrue(result.fixed); @@ -347,7 +347,7 @@ describe("SourceCodeFixer", function() { }); it("should remove BOM with a negative range", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_BOM ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_BOM ]); assert.equal(result.output, TEST_CODE); assert.isTrue(result.fixed); @@ -355,7 +355,7 @@ describe("SourceCodeFixer", function() { }); it("should replace BOM with a negative range and 'foobar'", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_BOM_WITH_TEXT ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_BOM_WITH_TEXT ]); assert.equal(result.output, "// start\n" + TEST_CODE); assert.isTrue(result.fixed); @@ -379,28 +379,28 @@ describe("SourceCodeFixer", function() { describe("Text Insertion", function() { it("should insert text at the end of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_AT_END ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_AT_END ]); assert.equal(result.output, "\uFEFF" + TEST_CODE + INSERT_AT_END.fix.text); assert.equal(result.messages.length, 0); }); it("should insert text at the beginning of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_AT_START ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_AT_START ]); assert.equal(result.output, "\uFEFF" + INSERT_AT_START.fix.text + TEST_CODE); assert.equal(result.messages.length, 0); }); it("should insert text in the middle of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_IN_MIDDLE ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_IN_MIDDLE ]); assert.equal(result.output, "\uFEFF" + TEST_CODE.replace("6 *", INSERT_IN_MIDDLE.fix.text + "6 *")); assert.equal(result.messages.length, 0); }); it("should insert text at the beginning, middle, and end of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_IN_MIDDLE, INSERT_AT_START, INSERT_AT_END ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_IN_MIDDLE, INSERT_AT_START, INSERT_AT_END ]); assert.equal(result.output, "\uFEFF" + INSERT_AT_START.fix.text + TEST_CODE.replace("6 *", INSERT_IN_MIDDLE.fix.text + "6 *") + INSERT_AT_END.fix.text); assert.equal(result.messages.length, 0); @@ -411,7 +411,7 @@ describe("SourceCodeFixer", function() { describe("Text Replacement", function() { it("should replace text at the end of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_VAR ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_VAR ]); assert.equal(result.messages.length, 0); assert.equal(result.output, "\uFEFF" + TEST_CODE.replace("var", "let")); @@ -419,7 +419,7 @@ describe("SourceCodeFixer", function() { }); it("should replace text at the beginning of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_ID ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_ID ]); assert.equal(result.messages.length, 0); assert.equal(result.output, "\uFEFF" + TEST_CODE.replace("answer", "foo")); @@ -427,7 +427,7 @@ describe("SourceCodeFixer", function() { }); it("should replace text in the middle of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_NUM ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_NUM ]); assert.equal(result.messages.length, 0); assert.equal(result.output, "\uFEFF" + TEST_CODE.replace("6", "5")); @@ -435,7 +435,7 @@ describe("SourceCodeFixer", function() { }); it("should replace text at the beginning and end of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_ID, REPLACE_VAR, REPLACE_NUM ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_ID, REPLACE_VAR, REPLACE_NUM ]); assert.equal(result.messages.length, 0); assert.equal(result.output, "\uFEFFlet foo = 5 * 7;"); @@ -447,7 +447,7 @@ describe("SourceCodeFixer", function() { describe("Text Removal", function() { it("should remove text at the start of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_START ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_START ]); assert.equal(result.messages.length, 0); assert.equal(result.output, "\uFEFF" + TEST_CODE.replace("var ", "")); @@ -455,7 +455,7 @@ describe("SourceCodeFixer", function() { }); it("should remove text in the middle of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_MIDDLE ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_MIDDLE ]); assert.equal(result.messages.length, 0); assert.equal(result.output, "\uFEFF" + TEST_CODE.replace("answer", "a")); @@ -463,7 +463,7 @@ describe("SourceCodeFixer", function() { }); it("should remove text towards the end of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_END ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_END ]); assert.equal(result.messages.length, 0); assert.equal(result.output, "\uFEFF" + TEST_CODE.replace(" * 7", "")); @@ -471,7 +471,7 @@ describe("SourceCodeFixer", function() { }); it("should remove text at the beginning, middle, and end of the code", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_END, REMOVE_START, REMOVE_MIDDLE ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_END, REMOVE_START, REMOVE_MIDDLE ]); assert.equal(result.messages.length, 0); assert.equal(result.output, "\uFEFFa = 6;"); @@ -482,7 +482,7 @@ describe("SourceCodeFixer", function() { describe("Combination", function() { it("should replace text at the beginning, remove text in the middle, and insert text at the end", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_AT_END, REMOVE_END, REPLACE_VAR ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_AT_END, REMOVE_END, REPLACE_VAR ]); assert.equal(result.output, "\uFEFFlet answer = 6;// end"); assert.isTrue(result.fixed); @@ -490,7 +490,7 @@ describe("SourceCodeFixer", function() { }); it("should only apply one fix when ranges overlap", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_MIDDLE, REPLACE_ID ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_MIDDLE, REPLACE_ID ]); assert.equal(result.output, "\uFEFF" + TEST_CODE.replace("answer", "a")); assert.equal(result.messages.length, 1); @@ -499,7 +499,7 @@ describe("SourceCodeFixer", function() { }); it("should apply one fix when the end of one range is the same as the start of a previous range overlap", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_START, REPLACE_ID ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_START, REPLACE_ID ]); assert.equal(result.output, "\uFEFF" + TEST_CODE.replace("answer", "foo")); assert.equal(result.messages.length, 1); @@ -508,7 +508,7 @@ describe("SourceCodeFixer", function() { }); it("should only apply one fix when ranges overlap and one message has no fix", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_MIDDLE, REPLACE_ID, NO_FIX ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_MIDDLE, REPLACE_ID, NO_FIX ]); assert.equal(result.output, "\uFEFF" + TEST_CODE.replace("answer", "a")); assert.equal(result.messages.length, 2); @@ -518,8 +518,8 @@ describe("SourceCodeFixer", function() { }); it("should apply the same fix when ranges overlap regardless of order", function() { - let result1 = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_MIDDLE, REPLACE_ID]); - let result2 = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_ID, REMOVE_MIDDLE]); + const result1 = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_MIDDLE, REPLACE_ID]); + const result2 = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_ID, REMOVE_MIDDLE]); assert.equal(result1.output, result2.output); }); @@ -529,7 +529,7 @@ describe("SourceCodeFixer", function() { describe("No Fixes", function() { it("should only apply one fix when ranges overlap and one message has no fix", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ NO_FIX ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ NO_FIX ]); assert.equal(result.output, "\uFEFF" + TEST_CODE); assert.equal(result.messages.length, 1); @@ -542,7 +542,7 @@ describe("SourceCodeFixer", function() { describe("BOM manipulations", function() { it("should insert BOM with an insertion of '\uFEFF' at 0", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_BOM ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_BOM ]); assert.equal(result.output, "\uFEFF" + TEST_CODE); assert.isTrue(result.fixed); @@ -550,7 +550,7 @@ describe("SourceCodeFixer", function() { }); it("should insert BOM with an insertion of '\uFEFFfoobar' at 0", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_BOM_WITH_TEXT ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ INSERT_BOM_WITH_TEXT ]); assert.equal(result.output, "\uFEFF// start\n" + TEST_CODE); assert.isTrue(result.fixed); @@ -558,7 +558,7 @@ describe("SourceCodeFixer", function() { }); it("should remove BOM with a negative range", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_BOM ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REMOVE_BOM ]); assert.equal(result.output, TEST_CODE); assert.isTrue(result.fixed); @@ -566,7 +566,7 @@ describe("SourceCodeFixer", function() { }); it("should replace BOM with a negative range and 'foobar'", function() { - let result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_BOM_WITH_TEXT ]); + const result = SourceCodeFixer.applyFixes(sourceCode, [ REPLACE_BOM_WITH_TEXT ]); assert.equal(result.output, "// start\n" + TEST_CODE); assert.isTrue(result.fixed); diff --git a/tests/lib/util/source-code-util.js b/tests/lib/util/source-code-util.js index df66fc108dc..aa720fb09da 100644 --- a/tests/lib/util/source-code-util.js +++ b/tests/lib/util/source-code-util.js @@ -9,18 +9,17 @@ // Requirements //------------------------------------------------------------------------------ -let path = require("path"), +const path = require("path"), fs = require("fs"), os = require("os"), assert = require("chai").assert, sinon = require("sinon"), sh = require("shelljs"), - proxyquire = require("proxyquire"), globUtil = require("../../../lib/util/glob-util"), SourceCode = require("../../../lib/util/source-code"); -proxyquire = proxyquire.noCallThru().noPreserveCache(); -let originalDir = process.cwd(); +const proxyquire = require("proxyquire").noCallThru().noPreserveCache(); +const originalDir = process.cwd(); //------------------------------------------------------------------------------ // Tests @@ -37,7 +36,7 @@ describe("SourceCodeUtil", function() { * @private */ function getFixturePath() { - let args = Array.prototype.slice.call(arguments); + const args = Array.prototype.slice.call(arguments); args.unshift(fixtureDir); let filepath = path.join.apply(path, args); @@ -50,11 +49,11 @@ describe("SourceCodeUtil", function() { } } - let log = { + const log = { info: sinon.spy(), error: sinon.spy() }; - let requireStubs = { + const requireStubs = { "../logging": log }; @@ -82,48 +81,48 @@ describe("SourceCodeUtil", function() { describe("getSourceCodeOfFiles()", function() { it("should handle single string filename arguments", function() { - let filename = getFixturePath("foo.js"); - let sourceCode = getSourceCodeOfFiles(filename, {cwd: fixtureDir}); + const filename = getFixturePath("foo.js"); + const sourceCode = getSourceCodeOfFiles(filename, {cwd: fixtureDir}); assert.isObject(sourceCode); }); it("should accept an array of string filenames", function() { - let fooFilename = getFixturePath("foo.js"); - let barFilename = getFixturePath("bar.js"); - let sourceCode = getSourceCodeOfFiles([fooFilename, barFilename], {cwd: fixtureDir}); + const fooFilename = getFixturePath("foo.js"); + const barFilename = getFixturePath("bar.js"); + const sourceCode = getSourceCodeOfFiles([fooFilename, barFilename], {cwd: fixtureDir}); assert.isObject(sourceCode); }); it("should accept a glob argument", function() { - let glob = getFixturePath("*.js"); - let filename = getFixturePath("foo.js"); - let sourceCode = getSourceCodeOfFiles(glob, {cwd: fixtureDir}); + const glob = getFixturePath("*.js"); + const filename = getFixturePath("foo.js"); + const sourceCode = getSourceCodeOfFiles(glob, {cwd: fixtureDir}); assert.isObject(sourceCode); assert.property(sourceCode, filename); }); it("should accept a relative filename", function() { - let filename = "foo.js"; - let sourceCode = getSourceCodeOfFiles(filename, {cwd: fixtureDir}); + const filename = "foo.js"; + const sourceCode = getSourceCodeOfFiles(filename, {cwd: fixtureDir}); assert.isObject(sourceCode); assert.property(sourceCode, getFixturePath(filename)); }); it("should accept a relative path to a file in a parent directory", function() { - let filename = "../foo.js"; - let sourceCode = getSourceCodeOfFiles(filename, {cwd: getFixturePath("nested")}); + const filename = "../foo.js"; + const sourceCode = getSourceCodeOfFiles(filename, {cwd: getFixturePath("nested")}); assert.isObject(sourceCode); assert.property(sourceCode, getFixturePath("foo.js")); }); it("should accept a callback", function() { - let filename = getFixturePath("foo.js"); - let spy = sinon.spy(); + const filename = getFixturePath("foo.js"); + const spy = sinon.spy(); process.chdir(fixtureDir); getSourceCodeOfFiles(filename, spy); @@ -132,8 +131,8 @@ describe("SourceCodeUtil", function() { }); it("should call the callback with total number of files being processed", function() { - let filename = getFixturePath("foo.js"); - let spy = sinon.spy(); + const filename = getFixturePath("foo.js"); + const spy = sinon.spy(); process.chdir(fixtureDir); getSourceCodeOfFiles(filename, spy); @@ -142,8 +141,8 @@ describe("SourceCodeUtil", function() { }); it("should use default options if none are provided", function() { - let filename = getFixturePath("foo.js"); - let spy = sinon.spy(globUtil, "resolveFileGlobPatterns"); + const filename = getFixturePath("foo.js"); + const spy = sinon.spy(globUtil, "resolveFileGlobPatterns"); getSourceCodeOfFiles(filename); assert(spy.called); @@ -151,23 +150,23 @@ describe("SourceCodeUtil", function() { }); it("should create an object with located filenames as keys", function() { - let fooFilename = getFixturePath("foo.js"); - let barFilename = getFixturePath("bar.js"); - let sourceCode = getSourceCodeOfFiles([fooFilename, barFilename], {cwd: fixtureDir}); + const fooFilename = getFixturePath("foo.js"); + const barFilename = getFixturePath("bar.js"); + const sourceCode = getSourceCodeOfFiles([fooFilename, barFilename], {cwd: fixtureDir}); assert.property(sourceCode, fooFilename); assert.property(sourceCode, barFilename); }); it("should should not include non-existent filesnames in results", function() { - let filename = getFixturePath("missing.js"); - let sourceCode = getSourceCodeOfFiles(filename, {cwd: fixtureDir}); + const filename = getFixturePath("missing.js"); + const sourceCode = getSourceCodeOfFiles(filename, {cwd: fixtureDir}); assert.notProperty(sourceCode, filename); }); it("should throw for files with parsing errors", function() { - let filename = getFixturePath("parse-error", "parse-error.js"); + const filename = getFixturePath("parse-error", "parse-error.js"); assert.throw(function() { getSourceCodeOfFiles(filename, {cwd: fixtureDir}); @@ -176,16 +175,16 @@ describe("SourceCodeUtil", function() { }); it("should obtain the sourceCode of a file", function() { - let filename = getFixturePath("foo.js"); - let sourceCode = getSourceCodeOfFiles(filename, {cwd: fixtureDir}); + const filename = getFixturePath("foo.js"); + const sourceCode = getSourceCodeOfFiles(filename, {cwd: fixtureDir}); assert.isObject(sourceCode); assert.instanceOf(sourceCode[filename], SourceCode); }); it("should obtain the sourceCode of JSX files", function() { - let filename = getFixturePath("jsx", "foo.jsx"); - let options = { + const filename = getFixturePath("jsx", "foo.jsx"); + const options = { cwd: fixtureDir, parserOptions: { ecmaFeatures: { @@ -193,27 +192,27 @@ describe("SourceCodeUtil", function() { } } }; - let sourceCode = getSourceCodeOfFiles(filename, options); + const sourceCode = getSourceCodeOfFiles(filename, options); assert.isObject(sourceCode); assert.instanceOf(sourceCode[filename], SourceCode); }); it("should honor .eslintignore files by default", function() { - let glob = getFixturePath("*.js"); - let unignoredFilename = getFixturePath("foo.js"); - let ignoredFilename = getFixturePath("ignored.js"); - let sourceCode = getSourceCodeOfFiles(glob, {cwd: fixtureDir}); + const glob = getFixturePath("*.js"); + const unignoredFilename = getFixturePath("foo.js"); + const ignoredFilename = getFixturePath("ignored.js"); + const sourceCode = getSourceCodeOfFiles(glob, {cwd: fixtureDir}); assert.property(sourceCode, unignoredFilename); assert.notProperty(sourceCode, ignoredFilename); }); it("should obtain the sourceCode of all files in a specified folder", function() { - let folder = getFixturePath("nested"); - let fooFile = getFixturePath("nested/foo.js"); - let barFile = getFixturePath("nested/bar.js"); - let sourceCode = getSourceCodeOfFiles(folder, {cwd: fixtureDir}); + const folder = getFixturePath("nested"); + const fooFile = getFixturePath("nested/foo.js"); + const barFile = getFixturePath("nested/bar.js"); + const sourceCode = getSourceCodeOfFiles(folder, {cwd: fixtureDir}); assert.equal(Object.keys(sourceCode).length, 2); assert.instanceOf(sourceCode[fooFile], SourceCode); @@ -221,38 +220,38 @@ describe("SourceCodeUtil", function() { }); it("should accept cli options", function() { - let pattern = getFixturePath("ext"); - let abcFile = getFixturePath("ext/foo.abc"); - let cliOptions = {extensions: [".abc"], cwd: fixtureDir}; - let sourceCode = getSourceCodeOfFiles(pattern, cliOptions); + const pattern = getFixturePath("ext"); + const abcFile = getFixturePath("ext/foo.abc"); + const cliOptions = {extensions: [".abc"], cwd: fixtureDir}; + const sourceCode = getSourceCodeOfFiles(pattern, cliOptions); assert.equal(Object.keys(sourceCode).length, 1); assert.instanceOf(sourceCode[abcFile], SourceCode); }); it("should execute the callback function, if provided", function() { - let callback = sinon.spy(); - let filename = getFixturePath("foo.js"); + const callback = sinon.spy(); + const filename = getFixturePath("foo.js"); getSourceCodeOfFiles(filename, {cwd: fixtureDir}, callback); assert(callback.calledOnce); }); it("should execute callback function once per file", function() { - let callback = sinon.spy(); - let fooFilename = getFixturePath("foo.js"); - let barFilename = getFixturePath("bar.js"); + const callback = sinon.spy(); + const fooFilename = getFixturePath("foo.js"); + const barFilename = getFixturePath("bar.js"); getSourceCodeOfFiles([fooFilename, barFilename], {cwd: fixtureDir}, callback); assert.equal(callback.callCount, 2); }); it("should call callback function with total number of files with sourceCode", function() { - let callback = sinon.spy(); - let firstFn = getFixturePath("foo.js"); - let secondFn = getFixturePath("bar.js"); - let thirdFn = getFixturePath("nested/foo.js"); - let missingFn = getFixturePath("missing.js"); + const callback = sinon.spy(); + const firstFn = getFixturePath("foo.js"); + const secondFn = getFixturePath("bar.js"); + const thirdFn = getFixturePath("nested/foo.js"); + const missingFn = getFixturePath("missing.js"); getSourceCodeOfFiles([firstFn, secondFn, thirdFn, missingFn], {cwd: fixtureDir}, callback); assert(callback.calledWith(3)); diff --git a/tests/lib/util/source-code.js b/tests/lib/util/source-code.js index 44576cd8040..f2afad9bbad 100644 --- a/tests/lib/util/source-code.js +++ b/tests/lib/util/source-code.js @@ -8,7 +8,7 @@ // Requirements //------------------------------------------------------------------------------ -let fs = require("fs"), +const fs = require("fs"), path = require("path"), assert = require("chai").assert, espree = require("espree"), @@ -21,7 +21,7 @@ let fs = require("fs"), // Helpers //------------------------------------------------------------------------------ -let DEFAULT_CONFIG = { +const DEFAULT_CONFIG = { ecmaVersion: 6, comment: true, tokens: true, @@ -29,7 +29,7 @@ let DEFAULT_CONFIG = { loc: true }; -let AST = espree.parse("let foo = bar;", DEFAULT_CONFIG), +const AST = espree.parse("let foo = bar;", DEFAULT_CONFIG), TEST_CODE = "var answer = 6 * 7;"; //------------------------------------------------------------------------------ @@ -41,8 +41,8 @@ describe("SourceCode", function() { describe("new SourceCode()", function() { it("should create a new instance when called with valid data", function() { - let ast = { comments: [], tokens: [], loc: {}, range: [] }; - let sourceCode = new SourceCode("foo;", ast); + const ast = { comments: [], tokens: [], loc: {}, range: [] }; + const sourceCode = new SourceCode("foo;", ast); assert.isObject(sourceCode); assert.equal(sourceCode.text, "foo;"); @@ -50,8 +50,8 @@ describe("SourceCode", function() { }); it("should split text into lines when called with valid data", function() { - let ast = { comments: [], tokens: [], loc: {}, range: [] }; - let sourceCode = new SourceCode("foo;\nbar;", ast); + const ast = { comments: [], tokens: [], loc: {}, range: [] }; + const sourceCode = new SourceCode("foo;\nbar;", ast); assert.isObject(sourceCode); assert.equal(sourceCode.lines.length, 2); @@ -93,19 +93,19 @@ describe("SourceCode", function() { }); it("should store all tokens and comments sorted by range", function() { - let comments = [ + const comments = [ { range: [0, 2] }, { range: [10, 12] } ]; - let tokens = [ + const tokens = [ { range: [3, 8] }, { range: [8, 10] }, { range: [12, 20] } ]; - let sourceCode = new SourceCode("", { comments: comments, tokens: tokens, loc: {}, range: [] }); + const sourceCode = new SourceCode("", { comments: comments, tokens: tokens, loc: {}, range: [] }); - let actual = sourceCode.tokensAndComments; - let expected = [comments[0], tokens[0], tokens[1], comments[1], tokens[2]]; + const actual = sourceCode.tokensAndComments; + const expected = [comments[0], tokens[0], tokens[1], comments[1], tokens[2]]; assert.deepEqual(actual, expected); }); @@ -114,7 +114,7 @@ describe("SourceCode", function() { let sourceCode; beforeEach(function() { - let ast = { comments: [], tokens: [], loc: {}, range: [] }; + const ast = { comments: [], tokens: [], loc: {}, range: [] }; sourceCode = new SourceCode("\uFEFFconsole.log('hello');", ast); }); @@ -132,7 +132,7 @@ describe("SourceCode", function() { let sourceCode; beforeEach(function() { - let ast = { comments: [], tokens: [], loc: {}, range: [] }; + const ast = { comments: [], tokens: [], loc: {}, range: [] }; sourceCode = new SourceCode("console.log('hello');", ast); }); @@ -147,21 +147,21 @@ describe("SourceCode", function() { }); describe("when it read a UTF-8 file (has BOM), SourceCode", function() { - let UTF8_FILE = path.resolve(__dirname, "../../fixtures/utf8-bom.js"); - let text = fs.readFileSync( + const UTF8_FILE = path.resolve(__dirname, "../../fixtures/utf8-bom.js"); + const text = fs.readFileSync( UTF8_FILE, "utf8" ).replace(/\r\n/g, "\n"); // <-- For autocrlf of "git for Windows" let sourceCode; beforeEach(function() { - let ast = { comments: [], tokens: [], loc: {}, range: [] }; + const ast = { comments: [], tokens: [], loc: {}, range: [] }; sourceCode = new SourceCode(text, ast); }); it("to be clear, check the file has UTF-8 BOM.", function() { - let buffer = fs.readFileSync(UTF8_FILE); + const buffer = fs.readFileSync(UTF8_FILE); assert.equal(buffer[0], 0xEF); assert.equal(buffer[1], 0xBB); @@ -183,7 +183,7 @@ describe("SourceCode", function() { describe("getJSDocComment()", function() { - let sandbox = sinon.sandbox.create(), + const sandbox = sinon.sandbox.create(), filename = "foo.js"; beforeEach(function() { @@ -196,7 +196,7 @@ describe("SourceCode", function() { it("should not take a JSDoc comment from a FunctionDeclaration parent node when the node is a FunctionExpression", function() { - let code = [ + const code = [ "/** Desc*/", "function Foo(){var t = function(){}}" ].join("\n"); @@ -208,13 +208,13 @@ describe("SourceCode", function() { * @private */ function assertJSDoc(node) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.equal(jsdoc, null); } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("FunctionExpression", spy); eslint.verify(code, { rules: {}}, filename, true); @@ -224,7 +224,7 @@ describe("SourceCode", function() { it("should not take a JSDoc comment from a VariableDeclaration parent node when the node is a FunctionExpression inside a NewExpression", function() { - let code = [ + const code = [ "/** Desc*/", "var x = new Foo(function(){});" ].join("\n"); @@ -236,13 +236,13 @@ describe("SourceCode", function() { * @private */ function assertJSDoc(node) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.equal(jsdoc, null); } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("FunctionExpression", spy); eslint.verify(code, { rules: {}}, filename, true); @@ -252,7 +252,7 @@ describe("SourceCode", function() { it("should not take a JSDoc comment from a FunctionExpression parent node when the node is a FunctionExpression", function() { - let code = [ + const code = [ "/** Desc*/", "var f = function(){var t = function(arg){}}" ].join("\n"); @@ -265,14 +265,14 @@ describe("SourceCode", function() { */ function assertJSDoc(node) { if (node.params.length === 1) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.equal(jsdoc, null); } } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("FunctionExpression", spy); eslint.verify(code, { rules: {}}, filename, true); @@ -281,7 +281,7 @@ describe("SourceCode", function() { }); it("should get JSDoc comment for FunctionExpression in a CallExpression", function() { - let code = [ + const code = [ "call(", " /** Documentation. */", " function(argName) {", @@ -297,14 +297,14 @@ describe("SourceCode", function() { * @private */ function assertJSDoc(node) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.equal(jsdoc.type, "Block"); assert.equal(jsdoc.value, "* Documentation. "); } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("FunctionExpression", spy); eslint.verify(code, {rules: {}}, filename, true); @@ -313,7 +313,7 @@ describe("SourceCode", function() { it("should get JSDoc comment for node when the node is a FunctionDeclaration", function() { - let code = [ + const code = [ "/** Desc*/", "function Foo(){}" ].join("\n"); @@ -325,14 +325,14 @@ describe("SourceCode", function() { * @private */ function assertJSDoc(node) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.equal(jsdoc.type, "Block"); assert.equal(jsdoc.value, "* Desc"); } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("FunctionDeclaration", spy); eslint.verify(code, { rules: {}}, filename, true); @@ -342,7 +342,7 @@ describe("SourceCode", function() { it("should get JSDoc comment for node when the node is a FunctionDeclaration but its parent is an export", function() { - let code = [ + const code = [ "/** Desc*/", "export function Foo(){}" ].join("\n"); @@ -354,14 +354,14 @@ describe("SourceCode", function() { * @private */ function assertJSDoc(node) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.equal(jsdoc.type, "Block"); assert.equal(jsdoc.value, "* Desc"); } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("FunctionDeclaration", spy); eslint.verify(code, { parserOptions: { sourceType: "module" }, rules: {}}, filename, true); @@ -372,7 +372,7 @@ describe("SourceCode", function() { it("should get JSDoc comment for node when the node is a FunctionDeclaration but not the first statement", function() { - let code = [ + const code = [ "'use strict';", "/** Desc*/", "function Foo(){}" @@ -385,14 +385,14 @@ describe("SourceCode", function() { * @private */ function assertJSDoc(node) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.equal(jsdoc.type, "Block"); assert.equal(jsdoc.value, "* Desc"); } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("FunctionDeclaration", spy); eslint.verify(code, { rules: {}}, filename, true); @@ -403,7 +403,7 @@ describe("SourceCode", function() { it("should not get JSDoc comment for node when the node is a FunctionDeclaration inside of an IIFE without a JSDoc comment", function() { - let code = [ + const code = [ "/** Desc*/", "(function(){", "function Foo(){}", @@ -417,13 +417,13 @@ describe("SourceCode", function() { * @private */ function assertJSDoc(node) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.isNull(jsdoc); } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("FunctionDeclaration", spy); eslint.verify(code, { rules: {}}, filename, true); @@ -433,7 +433,7 @@ describe("SourceCode", function() { it("should get JSDoc comment for node when the node is a FunctionDeclaration and there are multiple comments", function() { - let code = [ + const code = [ "/* Code is good */", "/** Desc*/", "function Foo(){}" @@ -446,14 +446,14 @@ describe("SourceCode", function() { * @private */ function assertJSDoc(node) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.equal(jsdoc.type, "Block"); assert.equal(jsdoc.value, "* Desc"); } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("FunctionDeclaration", spy); eslint.verify(code, { rules: {}}, filename, true); @@ -463,7 +463,7 @@ describe("SourceCode", function() { it("should get JSDoc comment for node when the node is a FunctionDeclaration inside of an IIFE", function() { - let code = [ + const code = [ "/** Code is good */", "(function() {", "/** Desc*/", @@ -478,14 +478,14 @@ describe("SourceCode", function() { * @private */ function assertJSDoc(node) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.equal(jsdoc.type, "Block"); assert.equal(jsdoc.value, "* Desc"); } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("FunctionDeclaration", spy); eslint.verify(code, { rules: {}}, filename, true); @@ -494,7 +494,7 @@ describe("SourceCode", function() { it("should get JSDoc comment for node when the node is a FunctionExpression inside of an object literal", function() { - let code = [ + const code = [ "/** Code is good */", "var o = {", "/** Desc*/", @@ -509,14 +509,14 @@ describe("SourceCode", function() { * @private */ function assertJSDoc(node) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.equal(jsdoc.type, "Block"); assert.equal(jsdoc.value, "* Desc"); } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("FunctionExpression", spy); eslint.verify(code, { rules: {}}, filename, true); @@ -525,7 +525,7 @@ describe("SourceCode", function() { it("should get JSDoc comment for node when the node is a ArrowFunctionExpression inside of an object literal", function() { - let code = [ + const code = [ "/** Code is good */", "var o = {", "/** Desc*/", @@ -540,14 +540,14 @@ describe("SourceCode", function() { * @private */ function assertJSDoc(node) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.equal(jsdoc.type, "Block"); assert.equal(jsdoc.value, "* Desc"); } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("ArrowFunctionExpression", spy); eslint.verify(code, { parserOptions: { ecmaVersion: 6 }, rules: {}}, filename, true); @@ -556,7 +556,7 @@ describe("SourceCode", function() { it("should get JSDoc comment for node when the node is a FunctionExpression in an assignment", function() { - let code = [ + const code = [ "/** Code is good */", "/** Desc*/", "Foo.bar = function(){}" @@ -569,14 +569,14 @@ describe("SourceCode", function() { * @private */ function assertJSDoc(node) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.equal(jsdoc.type, "Block"); assert.equal(jsdoc.value, "* Desc"); } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("FunctionExpression", spy); eslint.verify(code, { rules: {}}, filename, true); @@ -585,7 +585,7 @@ describe("SourceCode", function() { it("should get JSDoc comment for node when the node is a FunctionExpression in an assignment inside an IIFE", function() { - let code = [ + const code = [ "/** Code is good */", "(function iife() {", "/** Desc*/", @@ -601,15 +601,15 @@ describe("SourceCode", function() { */ function assertJSDoc(node) { if (!node.id) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.equal(jsdoc.type, "Block"); assert.equal(jsdoc.value, "* Desc"); } } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("FunctionExpression", spy); eslint.verify(code, { rules: {}}, filename, true); @@ -618,7 +618,7 @@ describe("SourceCode", function() { it("should not get JSDoc comment for node when the node is a FunctionExpression in an assignment inside an IIFE without a JSDoc comment", function() { - let code = [ + const code = [ "/** Code is good */", "(function iife() {", "//* whatever", @@ -634,14 +634,14 @@ describe("SourceCode", function() { */ function assertJSDoc(node) { if (!node.id) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.isNull(jsdoc); } } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("FunctionExpression", spy); eslint.verify(code, { rules: {}}, filename, true); @@ -650,7 +650,7 @@ describe("SourceCode", function() { it("should not get JSDoc comment for node when the node is a FunctionExpression inside of a CallExpression", function() { - let code = [ + const code = [ "/** Code is good */", "module.exports = (function() {", "}());" @@ -664,14 +664,14 @@ describe("SourceCode", function() { */ function assertJSDoc(node) { if (!node.id) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.isNull(jsdoc); } } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("FunctionExpression", spy); eslint.verify(code, { rules: {}}, filename, true); @@ -680,7 +680,7 @@ describe("SourceCode", function() { it("should not get JSDoc comment for node when the node is a FunctionExpression in an assignment inside an IIFE without a JSDoc comment", function() { - let code = [ + const code = [ "/**", " * Merges two objects together.", " * @param {Object} target of the cloning operation", @@ -702,14 +702,14 @@ describe("SourceCode", function() { */ function assertJSDoc(node) { if (node.id) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.isNull(jsdoc); } } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("FunctionExpression", spy); eslint.verify(code, { rules: {}}, filename, true); @@ -718,7 +718,7 @@ describe("SourceCode", function() { it("should get JSDoc comment for node when the node is a ClassExpression", function() { - let code = [ + const code = [ "/** Merges two objects together.*/", "var A = class {", "};" @@ -731,14 +731,14 @@ describe("SourceCode", function() { * @private */ function assertJSDoc(node) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.equal(jsdoc.type, "Block"); assert.equal(jsdoc.value, "* Merges two objects together."); } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("ClassExpression", spy); eslint.verify(code, { rules: {}, parserOptions: { ecmaVersion: 6 }}, filename, true); @@ -747,7 +747,7 @@ describe("SourceCode", function() { it("should get JSDoc comment for node when the node is a ClassDeclaration", function() { - let code = [ + const code = [ "/** Merges two objects together.*/", "class A {", "};" @@ -760,14 +760,14 @@ describe("SourceCode", function() { * @private */ function assertJSDoc(node) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.equal(jsdoc.type, "Block"); assert.equal(jsdoc.value, "* Merges two objects together."); } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("ClassDeclaration", spy); eslint.verify(code, { rules: {}, parserOptions: { ecmaVersion: 6 }}, filename, true); @@ -776,7 +776,7 @@ describe("SourceCode", function() { it("should not get JSDoc comment for class method even if the class has jsdoc present", function() { - let code = [ + const code = [ "/** Merges two objects together.*/", "var A = class {", " constructor(xs) {}", @@ -790,13 +790,13 @@ describe("SourceCode", function() { * @private */ function assertJSDoc(node) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.isNull(jsdoc); } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("FunctionExpression", spy); eslint.verify(code, { rules: {}, parserOptions: { ecmaVersion: 6 }}, filename, true); @@ -805,7 +805,7 @@ describe("SourceCode", function() { it("should get JSDoc comment for function expression even if function has blank lines on top", function() { - let code = [ + const code = [ "/** Merges two objects together.*/", "var A = ", " ", @@ -822,14 +822,14 @@ describe("SourceCode", function() { * @private */ function assertJSDoc(node) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.equal(jsdoc.type, "Block"); assert.equal(jsdoc.value, "* Merges two objects together."); } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("FunctionExpression", spy); eslint.verify(code, { rules: {}, parserOptions: { ecmaVersion: 6 }}, filename, true); @@ -838,7 +838,7 @@ describe("SourceCode", function() { it("should not get JSDoc comment for function declaration when the function has blank lines on top", function() { - let code = [ + const code = [ "/** Merges two objects together.*/", " ", " ", @@ -854,13 +854,13 @@ describe("SourceCode", function() { * @private */ function assertJSDoc(node) { - let sourceCode = eslint.getSourceCode(); - let jsdoc = sourceCode.getJSDocComment(node); + const sourceCode = eslint.getSourceCode(); + const jsdoc = sourceCode.getJSDocComment(node); assert.isNull(jsdoc); } - let spy = sandbox.spy(assertJSDoc); + const spy = sandbox.spy(assertJSDoc); eslint.on("FunctionDeclaration", spy); eslint.verify(code, { rules: {}, parserOptions: { ecmaVersion: 6 }}, filename, true); @@ -870,7 +870,7 @@ describe("SourceCode", function() { }); describe("getComments()", function() { - let config = { rules: {} }; + const config = { rules: {} }; /** * Check comment count @@ -881,8 +881,8 @@ describe("SourceCode", function() { */ function assertCommentCount(leading, trailing) { return function(node) { - let sourceCode = eslint.getSourceCode(); - let comments = sourceCode.getComments(node); + const sourceCode = eslint.getSourceCode(); + const comments = sourceCode.getComments(node); assert.equal(comments.leading.length, leading); assert.equal(comments.trailing.length, trailing); @@ -890,7 +890,7 @@ describe("SourceCode", function() { } it("should attach them to all nodes", function() { - let code = [ + const code = [ "// my line comment", "var a = 42;", "/* my block comment */" @@ -907,7 +907,7 @@ describe("SourceCode", function() { }); it("should not attach leading comments from previous node", function() { - let code = [ + const code = [ "function a() {", " var b = {", " // comment", @@ -929,7 +929,7 @@ describe("SourceCode", function() { }); it("should not attach duplicate leading comments from previous node", function() { - let code = [ + const code = [ "//foo", "var zzz /*aaa*/ = 777;", "//bar" @@ -949,55 +949,55 @@ describe("SourceCode", function() { describe("getLines()", function() { it("should get proper lines when using \\n as a line break", function() { - let code = "a;\nb;", + const code = "a;\nb;", ast = espree.parse(code, DEFAULT_CONFIG), sourceCode = new SourceCode(code, ast); - let lines = sourceCode.getLines(); + const lines = sourceCode.getLines(); assert.equal(lines[0], "a;"); assert.equal(lines[1], "b;"); }); it("should get proper lines when using \\r\\n as a line break", function() { - let code = "a;\r\nb;", + const code = "a;\r\nb;", ast = espree.parse(code, DEFAULT_CONFIG), sourceCode = new SourceCode(code, ast); - let lines = sourceCode.getLines(); + const lines = sourceCode.getLines(); assert.equal(lines[0], "a;"); assert.equal(lines[1], "b;"); }); it("should get proper lines when using \\r as a line break", function() { - let code = "a;\rb;", + const code = "a;\rb;", ast = espree.parse(code, DEFAULT_CONFIG), sourceCode = new SourceCode(code, ast); - let lines = sourceCode.getLines(); + const lines = sourceCode.getLines(); assert.equal(lines[0], "a;"); assert.equal(lines[1], "b;"); }); it("should get proper lines when using \\u2028 as a line break", function() { - let code = "a;\u2028b;", + const code = "a;\u2028b;", ast = espree.parse(code, DEFAULT_CONFIG), sourceCode = new SourceCode(code, ast); - let lines = sourceCode.getLines(); + const lines = sourceCode.getLines(); assert.equal(lines[0], "a;"); assert.equal(lines[1], "b;"); }); it("should get proper lines when using \\u2029 as a line break", function() { - let code = "a;\u2029b;", + const code = "a;\u2029b;", ast = espree.parse(code, DEFAULT_CONFIG), sourceCode = new SourceCode(code, ast); - let lines = sourceCode.getLines(); + const lines = sourceCode.getLines(); assert.equal(lines[0], "a;"); assert.equal(lines[1], "b;"); @@ -1016,49 +1016,49 @@ describe("SourceCode", function() { }); it("should retrieve all text when used without parameters", function() { - let text = sourceCode.getText(); + const text = sourceCode.getText(); assert.equal(text, TEST_CODE); }); it("should retrieve all text for root node", function() { - let text = sourceCode.getText(ast); + const text = sourceCode.getText(ast); assert.equal(text, TEST_CODE); }); it("should clamp to valid range when retrieving characters before start of source", function() { - let text = sourceCode.getText(ast, 2, 0); + const text = sourceCode.getText(ast, 2, 0); assert.equal(text, TEST_CODE); }); it("should retrieve all text for binary expression", function() { - let node = ast.body[0].declarations[0].init; - let text = sourceCode.getText(node); + const node = ast.body[0].declarations[0].init; + const text = sourceCode.getText(node); assert.equal(text, "6 * 7"); }); it("should retrieve all text plus two characters before for binary expression", function() { - let node = ast.body[0].declarations[0].init; - let text = sourceCode.getText(node, 2); + const node = ast.body[0].declarations[0].init; + const text = sourceCode.getText(node, 2); assert.equal(text, "= 6 * 7"); }); it("should retrieve all text plus one character after for binary expression", function() { - let node = ast.body[0].declarations[0].init; - let text = sourceCode.getText(node, 0, 1); + const node = ast.body[0].declarations[0].init; + const text = sourceCode.getText(node, 0, 1); assert.equal(text, "6 * 7;"); }); it("should retrieve all text plus two characters before and one character after for binary expression", function() { - let node = ast.body[0].declarations[0].init; - let text = sourceCode.getText(node, 2, 1); + const node = ast.body[0].declarations[0].init; + const text = sourceCode.getText(node, 2, 1); assert.equal(text, "= 6 * 7;"); }); @@ -1068,35 +1068,35 @@ describe("SourceCode", function() { describe("getNodeByRangeIndex()", function() { - let sourceCode, - ast; + let sourceCode; beforeEach(function() { - ast = espree.parse(TEST_CODE, DEFAULT_CONFIG); + const ast = espree.parse(TEST_CODE, DEFAULT_CONFIG); + sourceCode = new SourceCode(TEST_CODE, ast); }); it("should retrieve a node starting at the given index", function() { - let node = sourceCode.getNodeByRangeIndex(4); + const node = sourceCode.getNodeByRangeIndex(4); assert.equal(node.type, "Identifier"); }); it("should retrieve a node containing the given index", function() { - let node = sourceCode.getNodeByRangeIndex(6); + const node = sourceCode.getNodeByRangeIndex(6); assert.equal(node.type, "Identifier"); }); it("should retrieve a node that is exactly the given index", function() { - let node = sourceCode.getNodeByRangeIndex(13); + const node = sourceCode.getNodeByRangeIndex(13); assert.equal(node.type, "Literal"); assert.equal(node.value, 6); }); it("should retrieve a node ending with the given index", function() { - let node = sourceCode.getNodeByRangeIndex(9); + const node = sourceCode.getNodeByRangeIndex(9); assert.equal(node.type, "Identifier"); }); @@ -1118,7 +1118,7 @@ describe("SourceCode", function() { }); it("should attach the node's parent", function() { - let node = sourceCode.getNodeByRangeIndex(14); + const node = sourceCode.getNodeByRangeIndex(14); assert.property(node, "parent"); assert.equal(node.parent.type, "VariableDeclarator"); @@ -1154,7 +1154,7 @@ describe("SourceCode", function() { ], function(code, expected) { it("should return true when there is one space between tokens", function() { - let ast = espree.parse(code, DEFAULT_CONFIG), + const ast = espree.parse(code, DEFAULT_CONFIG), sourceCode = new SourceCode(code, ast); assert.equal( @@ -1171,28 +1171,28 @@ describe("SourceCode", function() { describe("eslint.verify()", function() { - let CONFIG = { + const CONFIG = { parserOptions: { ecmaVersion: 6 } }; it("should work when passed a SourceCode object without a config", function() { - let ast = espree.parse(TEST_CODE, DEFAULT_CONFIG); + const ast = espree.parse(TEST_CODE, DEFAULT_CONFIG); - let sourceCode = new SourceCode(TEST_CODE, ast), + const sourceCode = new SourceCode(TEST_CODE, ast), messages = eslint.verify(sourceCode); assert.equal(messages.length, 0); }); it("should work when passed a SourceCode object containing ES6 syntax and config", function() { - let sourceCode = new SourceCode("let foo = bar;", AST), + const sourceCode = new SourceCode("let foo = bar;", AST), messages = eslint.verify(sourceCode, CONFIG); assert.equal(messages.length, 0); }); it("should report an error when using let and blockBindings is false", function() { - let sourceCode = new SourceCode("let foo = bar;", AST), + const sourceCode = new SourceCode("let foo = bar;", AST), messages = eslint.verify(sourceCode, { parserOptions: { ecmaVersion: 6 }, rules: { "no-unused-vars": 2 } diff --git a/tests/templates/pr-create.md.ejs.js b/tests/templates/pr-create.md.ejs.js index ed3b2887a34..f8e47b4f665 100644 --- a/tests/templates/pr-create.md.ejs.js +++ b/tests/templates/pr-create.md.ejs.js @@ -9,7 +9,7 @@ // Requirements //------------------------------------------------------------------------------ -let assert = require("chai").assert, +const assert = require("chai").assert, fs = require("fs"), path = require("path"), ejs = require("ejs"); @@ -18,7 +18,7 @@ let assert = require("chai").assert, // Data //------------------------------------------------------------------------------ -let TEMPLATE_TEXT = fs.readFileSync(path.resolve(__dirname, "../../templates/pr-create.md.ejs"), "utf8"); +const TEMPLATE_TEXT = fs.readFileSync(path.resolve(__dirname, "../../templates/pr-create.md.ejs"), "utf8"); //------------------------------------------------------------------------------ // Tests @@ -27,7 +27,7 @@ let TEMPLATE_TEXT = fs.readFileSync(path.resolve(__dirname, "../../templates/pr- describe("pr-create.md.ejs", function() { it("should say LGTM when there are no problems with the pull request", function() { - let result = ejs.render(TEMPLATE_TEXT, { + const result = ejs.render(TEMPLATE_TEXT, { payload: { sender: { login: "nzakas" @@ -41,7 +41,7 @@ describe("pr-create.md.ejs", function() { }); it("should mention commit message format when there's one commit and an invalid commit message is found", function() { - let result = ejs.render(TEMPLATE_TEXT, { + const result = ejs.render(TEMPLATE_TEXT, { payload: { sender: { login: "nzakas" @@ -65,7 +65,7 @@ describe("pr-create.md.ejs", function() { }); it("should mention commit message length when there's a message longer than 72 characters", function() { - let result = ejs.render(TEMPLATE_TEXT, { + const result = ejs.render(TEMPLATE_TEXT, { payload: { sender: { login: "nzakas" @@ -89,7 +89,7 @@ describe("pr-create.md.ejs", function() { }); it("should not mention commit message length when there's a multi-line message with first line not over 72 characters", function() { - let result = ejs.render(TEMPLATE_TEXT, { + const result = ejs.render(TEMPLATE_TEXT, { payload: { sender: { login: "nzakas" @@ -113,7 +113,7 @@ describe("pr-create.md.ejs", function() { }); it("should not mention missing issue when there's one documentation commit", function() { - let result = ejs.render(TEMPLATE_TEXT, { + const result = ejs.render(TEMPLATE_TEXT, { payload: { sender: { login: "nzakas" @@ -138,7 +138,7 @@ describe("pr-create.md.ejs", function() { ["Breaking", "Build", "Chore", "Docs", "Fix", "New", "Update", "Upgrade"].forEach(function(type) { it("should not mention missing issue or length check when there's one " + type + " commit", function() { - let result = ejs.render(TEMPLATE_TEXT, { + const result = ejs.render(TEMPLATE_TEXT, { payload: { sender: { login: "nzakas" @@ -163,7 +163,7 @@ describe("pr-create.md.ejs", function() { }); it("should mention missing issue when there's a missing closing paren", function() { - let result = ejs.render(TEMPLATE_TEXT, { + const result = ejs.render(TEMPLATE_TEXT, { payload: { sender: { login: "nzakas"