diff --git a/lib/cli.js b/lib/cli.js index 9452e9f86..b5af80d86 100644 --- a/lib/cli.js +++ b/lib/cli.js @@ -106,8 +106,8 @@ exports.run = async () => { // eslint-disable-line complexity 'strip-aliased': true, 'unknown-options-as-args': false }) - .usage('$0 [...]') // eslint-disable-line unicorn/string-content - .usage('$0 debug [...]') // eslint-disable-line unicorn/string-content + .usage('$0 [...]') + .usage('$0 debug [...]') .usage('$0 reset-cache') .options({ color: { @@ -118,13 +118,13 @@ exports.run = async () => { // eslint-disable-line complexity description: 'Specific JavaScript file for AVA to read its config from, instead of using package.json or ava.config.* files' } }) - .command('* [...]', 'Run tests', yargs => yargs.options(FLAGS).positional('pattern', { // eslint-disable-line unicorn/string-content + .command('* [...]', 'Run tests', yargs => yargs.options(FLAGS).positional('pattern', { array: true, describe: 'Glob patterns to select what test files to run. Leave empty if you want AVA to run all test files instead', type: 'string' })) .command( - 'debug [...]', // eslint-disable-line unicorn/string-content + 'debug [...]', 'Activate Node.js inspector and run a single test file', yargs => yargs.options(FLAGS).options({ break: { diff --git a/lib/concordance-options.js b/lib/concordance-options.js index b419ef9e4..5af411cc9 100644 --- a/lib/concordance-options.js +++ b/lib/concordance-options.js @@ -88,7 +88,7 @@ const colorTheme = { string: { open: ansiStyles.blue.open, close: ansiStyles.blue.close, - line: {open: forceColor.blue('\''), close: forceColor.blue('\'')}, // eslint-disable-line unicorn/string-content + line: {open: forceColor.blue('\''), close: forceColor.blue('\'')}, multiline: {start: forceColor.blue('`'), end: forceColor.blue('`')}, controlPicture: ansiStyles.grey, diff: { diff --git a/lib/load-config.js b/lib/load-config.js index 1b7c05acb..f0807f9d3 100644 --- a/lib/load-config.js +++ b/lib/load-config.js @@ -12,7 +12,7 @@ const EXPERIMENTS = new Set(); // *Very* rudimentary support for loading ava.config.js files containing an `export default` statement. const evaluateJsConfig = configFile => { const contents = fs.readFileSync(configFile, 'utf8'); - const script = new vm.Script(`'use strict';(()=>{let __export__;\n${contents.replace(/export default/g, '__export__ =')};return __export__;})()`, { // eslint-disable-line unicorn/string-content + const script = new vm.Script(`'use strict';(()=>{let __export__;\n${contents.replace(/export default/g, '__export__ =')};return __export__;})()`, { filename: configFile, lineOffset: -1 }); diff --git a/package-lock.json b/package-lock.json index 043485f18..0f8cc2a93 100644 --- a/package-lock.json +++ b/package-lock.json @@ -579,45 +579,45 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.26.0.tgz", - "integrity": "sha512-4yUnLv40bzfzsXcTAtZyTjbiGUXMrcIJcIMioI22tSOyAxpdXiZ4r7YQUU8Jj6XXrLz9d5aMHPQf5JFR7h27Nw==", + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.27.0.tgz", + "integrity": "sha512-/my+vVHRN7zYgcp0n4z5A6HAK7bvKGBiswaM5zIlOQczsxj/aiD7RcgD+dvVFuwFaGh5+kM7XA6Q6PN0bvb1tw==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "2.26.0", + "@typescript-eslint/experimental-utils": "2.27.0", "functional-red-black-tree": "^1.0.1", "regexpp": "^3.0.0", "tsutils": "^3.17.1" } }, "@typescript-eslint/experimental-utils": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.26.0.tgz", - "integrity": "sha512-RELVoH5EYd+JlGprEyojUv9HeKcZqF7nZUGSblyAw1FwOGNnmQIU8kxJ69fttQvEwCsX5D6ECJT8GTozxrDKVQ==", + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.27.0.tgz", + "integrity": "sha512-vOsYzjwJlY6E0NJRXPTeCGqjv5OHgRU1kzxHKWJVPjDYGbPgLudBXjIlc+OD1hDBZ4l1DLbOc5VjofKahsu9Jw==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.26.0", + "@typescript-eslint/typescript-estree": "2.27.0", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" } }, "@typescript-eslint/parser": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.26.0.tgz", - "integrity": "sha512-+Xj5fucDtdKEVGSh9353wcnseMRkPpEAOY96EEenN7kJVrLqy/EVwtIh3mxcUz8lsFXW1mT5nN5vvEam/a5HiQ==", + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.27.0.tgz", + "integrity": "sha512-HFUXZY+EdwrJXZo31DW4IS1ujQW3krzlRjBrFRrJcMDh0zCu107/nRfhk/uBasO8m0NVDbBF5WZKcIUMRO7vPg==", "dev": true, "requires": { "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.26.0", - "@typescript-eslint/typescript-estree": "2.26.0", + "@typescript-eslint/experimental-utils": "2.27.0", + "@typescript-eslint/typescript-estree": "2.27.0", "eslint-visitor-keys": "^1.1.0" } }, "@typescript-eslint/typescript-estree": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.26.0.tgz", - "integrity": "sha512-3x4SyZCLB4zsKsjuhxDLeVJN6W29VwBnYpCsZ7vIdPel9ZqLfIZJgJXO47MNUkurGpQuIBALdPQKtsSnWpE1Yg==", + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.27.0.tgz", + "integrity": "sha512-t2miCCJIb/FU8yArjAvxllxbTiyNqaXJag7UOpB5DVoM3+xnjeOngtqlJkLRnMtzaRcJhe3CIR9RmL40omubhg==", "dev": true, "requires": { "debug": "^4.1.1", @@ -944,6 +944,12 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", @@ -2500,9 +2506,9 @@ } }, "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", + "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", "dev": true }, "supports-color": { @@ -2568,9 +2574,9 @@ } }, "eslint-config-xo-typescript": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/eslint-config-xo-typescript/-/eslint-config-xo-typescript-0.26.0.tgz", - "integrity": "sha512-0bBfXLQX5F7JgJx5HIrSx3bGZk2D8W0uhYXB0jv6L0ztmWl4yqfCn6J4zgjUqMCsahHIjyaafBWrnc6eVaETWg==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/eslint-config-xo-typescript/-/eslint-config-xo-typescript-0.27.0.tgz", + "integrity": "sha512-aBRN8Nb6sc5oFIIuJoqr9uGCPGkVAVU2sRKN/RQ3iDt0AdrI/jgbgRQXpsAf3V8oK2013satUokRbHG6e7mrkQ==", "dev": true }, "eslint-formatter-pretty": { @@ -3083,9 +3089,9 @@ } }, "eslint-plugin-prettier": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", - "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.3.tgz", + "integrity": "sha512-+HG5jmu/dN3ZV3T6eCD7a4BlAySdN7mLIbJYo0z1cFQuI+r2DiTJEFeF68ots93PsnrMxbzIZ2S/ieX+mkrBeQ==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -3098,9 +3104,9 @@ "dev": true }, "eslint-plugin-unicorn": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-17.2.0.tgz", - "integrity": "sha512-0kYjrywf0kQxevFz571KrDfYMIRZ5Kq6dDgPU1EEBFeC181r+fAaPatBScWX+/hisKJ4+eCRFebxTeVylsSYmw==", + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-18.0.1.tgz", + "integrity": "sha512-Y4bgygek4x4ogeMcSHr6MZi3frBPZ80eIpMOsxew7jAblb53OYflpRh0an62Z6jv/fw7D3TkXauqLOBWbT9adg==", "dev": true, "requires": { "ci-info": "^2.0.0", @@ -3110,10 +3116,10 @@ "import-modules": "^2.0.0", "lodash": "^4.17.15", "read-pkg-up": "^7.0.1", - "regexp-tree": "^0.1.20", + "regexp-tree": "^0.1.21", "reserved-words": "^0.1.2", "safe-regex": "^2.1.1", - "semver": "^7.1.2" + "semver": "^7.1.3" }, "dependencies": { "read-pkg-up": { @@ -3137,9 +3143,9 @@ } }, "semver": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", - "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.2.2.tgz", + "integrity": "sha512-Zo84u6o2PebMSK3zjJ6Zp5wi8VnQZnEaCP13Ul/lt1ANsLACxnJxq4EEm1PY94/por1Hm9+7xpIswdS5AkieMA==", "dev": true }, "type-fest": { @@ -3151,9 +3157,9 @@ } }, "eslint-rule-docs": { - "version": "1.1.185", - "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.185.tgz", - "integrity": "sha512-1sea+uWAA76814hpwKb6IIXAx3catuivoYOlwgf96RFOhNfuE+LWsG7asIHUkAQ1Vx4SN/kfpU+lTXXnu1gg/w==", + "version": "1.1.186", + "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.186.tgz", + "integrity": "sha512-EwnjyJ0Go9V5e7fbq3JGnfUy1Is3p79oyBQANFPx72mK9t9jv8W2ox3wHc7RS2DPJneLak5n/4zRWYHFiB1HsA==", "dev": true }, "eslint-scope": { @@ -3704,14 +3710,15 @@ "dev": true }, "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", "dev": true, "requires": { + "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" } }, "fs.realpath": { @@ -4847,12 +4854,13 @@ } }, "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", "dev": true, "requires": { - "graceful-fs": "^4.1.6" + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" } }, "jsprim": { @@ -5109,7 +5117,6 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, "requires": { "p-defer": "^1.0.0" } @@ -5175,10 +5182,9 @@ } }, "mem": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/mem/-/mem-6.0.1.tgz", - "integrity": "sha512-uIRYASflIsXqvKe+7aXbLrydaRzz4qiK6amqZDQI++eRtW3UoKtnDcGeCAOREgll7YMxO5E4VB9+3B0LFmy96g==", - "dev": true, + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-6.1.0.tgz", + "integrity": "sha512-RlbnLQgRHk5lwqTtpEkBTQ2ll/CG/iB+J4Hy2Wh97PjgZgXgWJWrFF+XXujh3UUVLvR4OOTgZzcWMMwnehlEUg==", "requires": { "map-age-cleaner": "^0.1.3", "mimic-fn": "^3.0.0" @@ -5187,8 +5193,7 @@ "mimic-fn": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.0.0.tgz", - "integrity": "sha512-PiVO95TKvhiwgSwg1IdLYlCTdul38yZxZMIcnDSFIBUm4BNZha2qpQ4GpJ++15bHoKDtrW2D69lMfFwdFYtNZQ==", - "dev": true + "integrity": "sha512-PiVO95TKvhiwgSwg1IdLYlCTdul38yZxZMIcnDSFIBUm4BNZha2qpQ4GpJ++15bHoKDtrW2D69lMfFwdFYtNZQ==" } } }, @@ -5968,8 +5973,7 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" }, "p-event": { "version": "4.1.0", @@ -6275,9 +6279,9 @@ "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" }, "prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.4.tgz", + "integrity": "sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w==", "dev": true }, "prettier-linter-helpers": { @@ -7011,18 +7015,29 @@ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, "sinon": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.0.1.tgz", - "integrity": "sha512-iTTyiQo5T94jrOx7X7QLBZyucUJ2WvL9J13+96HMfm2CGoJYbIPqRfl6wgNcqmzk0DI28jeGx5bUTXizkrqBmg==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.0.2.tgz", + "integrity": "sha512-0uF8Q/QHkizNUmbK3LRFqx5cpTttEVXudywY9Uwzy8bTfZUhljZ7ARzSxnRHWYWtVTeh4Cw+tTb3iU21FQVO9A==", "dev": true, "requires": { - "@sinonjs/commons": "^1.7.0", - "@sinonjs/fake-timers": "^6.0.0", + "@sinonjs/commons": "^1.7.2", + "@sinonjs/fake-timers": "^6.0.1", "@sinonjs/formatio": "^5.0.1", "@sinonjs/samsam": "^5.0.3", "diff": "^4.0.2", "nise": "^4.0.1", "supports-color": "^7.1.0" + }, + "dependencies": { + "@sinonjs/commons": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.2.tgz", + "integrity": "sha512-+DUO6pnp3udV/v2VfUWgaY5BIE1IfT7lLfeDzPVeMT1XKkaAp9LgSI9x5RtrFQoZ9Oi0PgXQQHPaoKu7dCjVxw==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + } } }, "slash": { @@ -10296,9 +10311,9 @@ } }, "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", "dev": true }, "unset-value": { @@ -10586,20 +10601,20 @@ "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" }, "xo": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/xo/-/xo-0.28.2.tgz", - "integrity": "sha512-7xOuOQHVcqZ07+Za8eemzJA0PfFdfqE9vCAJaJL0Jc1iBT1lVrNnc/tccGPmwN2rN4iRtHVCFxDLT5ILJ4UyUA==", + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/xo/-/xo-0.29.1.tgz", + "integrity": "sha512-ohlXtUatjHi4f7dRF+c/nv08zyB3+iROxwfX3xEIw2J5Tk5j4I/bPqx4tUzESVHFCh5tQbu528ZEPJmM5P3c/g==", "dev": true, "requires": { - "@typescript-eslint/eslint-plugin": "^2.23.0", - "@typescript-eslint/parser": "^2.23.0", + "@typescript-eslint/eslint-plugin": "^2.27.0", + "@typescript-eslint/parser": "^2.27.0", "arrify": "^2.0.1", "cosmiconfig": "^6.0.0", "debug": "^4.1.0", "eslint": "^6.8.0", "eslint-config-prettier": "^6.10.0", "eslint-config-xo": "^0.29.0", - "eslint-config-xo-typescript": "^0.26.0", + "eslint-config-xo-typescript": "^0.27.0", "eslint-formatter-pretty": "^3.0.1", "eslint-import-resolver-webpack": "^0.12.1", "eslint-plugin-ava": "^10.0.1", @@ -10609,10 +10624,10 @@ "eslint-plugin-node": "^11.0.0", "eslint-plugin-prettier": "^3.1.2", "eslint-plugin-promise": "^4.2.1", - "eslint-plugin-unicorn": "^17.2.0", + "eslint-plugin-unicorn": "^18.0.1", "find-cache-dir": "^3.3.1", "find-up": "^4.1.0", - "fs-extra": "^8.1.0", + "fs-extra": "^9.0.0", "get-stdin": "^7.0.0", "globby": "^9.0.0", "has-flag": "^4.0.0", @@ -10626,10 +10641,10 @@ "open-editor": "^2.0.1", "p-reduce": "^2.1.0", "path-exists": "^4.0.0", - "prettier": "^1.15.2", + "prettier": "^2.0.4", "resolve-cwd": "^3.0.0", "resolve-from": "^5.0.0", - "semver": "^7.1.3", + "semver": "^7.2.1", "slash": "^3.0.0", "to-absolute-glob": "^2.0.2", "typescript": "^3.0.0", @@ -10884,9 +10899,9 @@ } }, "semver": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", - "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.2.2.tgz", + "integrity": "sha512-Zo84u6o2PebMSK3zjJ6Zp5wi8VnQZnEaCP13Ul/lt1ANsLACxnJxq4EEm1PY94/por1Hm9+7xpIswdS5AkieMA==", "dev": true }, "to-regex-range": { diff --git a/package.json b/package.json index 67e9b30c2..27be8e999 100644 --- a/package.json +++ b/package.json @@ -88,6 +88,7 @@ "lodash": "^4.17.15", "matcher": "^2.1.0", "md5-hex": "^3.0.1", + "mem": "^6.1.0", "ms": "^2.1.2", "ora": "^4.0.3", "p-map": "^4.0.0", @@ -116,14 +117,13 @@ "esm": "^3.2.25", "execa": "^4.0.0", "get-stream": "^5.1.0", - "mem": "^6.0.1", "nyc": "^15.0.1", "p-event": "^4.1.0", "proxyquire": "^2.1.3", "react": "^16.13.1", "react-test-renderer": "^16.13.1", "replace-string": "^3.0.0", - "sinon": "^9.0.1", + "sinon": "^9.0.2", "source-map-fixtures": "^2.1.0", "tap": "^14.10.7", "temp-write": "^4.0.0", @@ -131,7 +131,7 @@ "touch": "^3.1.0", "tsd": "^0.11.0", "typescript": "^3.8.3", - "xo": "^0.28.2", + "xo": "^0.29.1", "zen-observable": "^0.8.15" }, "xo": { @@ -151,16 +151,21 @@ "files": "*.d.ts", "rules": { "@typescript-eslint/member-ordering": "off", + "@typescript-eslint/prefer-readonly-parameter-types": "off", "@typescript-eslint/prefer-function-type": "off", "@typescript-eslint/unified-signatures": "off" } }, { - "files": "test-d/*.ts", + "files": "test-{d,tap}/**/*.ts", "rules": { "@typescript-eslint/explicit-function-return-type": "off", "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/no-unsafe-call": "off", + "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/no-unsafe-return": "off", "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/prefer-readonly-parameter-types": "off", "no-unused-vars": "off" } }, diff --git a/test-tap/api.js b/test-tap/api.js index 8b025912e..fc97acd8c 100644 --- a/test-tap/api.js +++ b/test-tap/api.js @@ -599,12 +599,12 @@ test('emits dependencies for test files', t => { require: [path.resolve('test-tap/fixture/with-dependencies/require-custom.js')] }); - const testFiles = [ + const testFiles = new Set([ path.resolve('test-tap/fixture/with-dependencies/no-tests.js'), path.resolve('test-tap/fixture/with-dependencies/test.js'), path.resolve('test-tap/fixture/with-dependencies/test-failure.js'), path.resolve('test-tap/fixture/with-dependencies/test-uncaught-exception.js') - ]; + ]); const sourceFiles = [ path.resolve('test-tap/fixture/with-dependencies/dep-1.js'), @@ -615,7 +615,7 @@ test('emits dependencies for test files', t => { api.on('run', plan => { plan.status.on('stateChange', evt => { if (evt.type === 'dependencies') { - t.true(testFiles.includes(evt.testFile)); + t.true(testFiles.has(evt.testFile)); t.strictDeepEqual(evt.dependencies.slice(-3), sourceFiles); } }); diff --git a/test-tap/assert.js b/test-tap/assert.js index 137938fbf..13bb650a0 100644 --- a/test-tap/assert.js +++ b/test-tap/assert.js @@ -259,11 +259,11 @@ test('.is()', t => { }); passes(t, () => { - assertions.is(NaN, NaN); + assertions.is(Number.NaN, Number.NaN); }); passes(t, () => { - assertions.is(0 / 0, NaN); + assertions.is(0 / 0, Number.NaN); }); passes(t, () => { @@ -322,11 +322,11 @@ test('.is()', t => { }); fails(t, () => { - assertions.is(0, NaN); + assertions.is(0, Number.NaN); }); fails(t, () => { - assertions.is('foo', NaN); + assertions.is('foo', Number.NaN); }); failsWith(t, () => { @@ -421,11 +421,11 @@ test('.not()', t => { }); fails(t, () => { - assertions.not(NaN, NaN); + assertions.not(Number.NaN, Number.NaN); }); fails(t, () => { - assertions.not(0 / 0, NaN); + assertions.not(0 / 0, Number.NaN); }); failsWith(t, () => { @@ -1479,7 +1479,7 @@ test('.snapshot()', t => { }, { assertion: 'snapshot', message: 'Did not match snapshot', - values: [{label: 'Difference:', formatted: ' {\n- foo: \'not bar\',\n+ foo: \'bar\',\n }'}] // eslint-disable-line unicorn/string-content + values: [{label: 'Difference:', formatted: ' {\n- foo: \'not bar\',\n+ foo: \'bar\',\n }'}] }); } } @@ -1490,7 +1490,7 @@ test('.snapshot()', t => { }, { assertion: 'snapshot', message: 'different message, also not included in snapshot report', - values: [{label: 'Difference:', formatted: ' {\n- foo: \'not bar\',\n+ foo: \'bar\',\n }'}] // eslint-disable-line unicorn/string-content + values: [{label: 'Difference:', formatted: ' {\n- foo: \'not bar\',\n+ foo: \'bar\',\n }'}] }); { @@ -1503,7 +1503,7 @@ test('.snapshot()', t => { }, { assertion: 'snapshot', message: 'my message', - values: [{label: 'Difference:', formatted: ' {\n- foo: \'not bar\',\n+ foo: \'bar\',\n }'}] // eslint-disable-line unicorn/string-content + values: [{label: 'Difference:', formatted: ' {\n- foo: \'not bar\',\n+ foo: \'bar\',\n }'}] }); } } diff --git a/test-tap/fixture/_generate-source-map-initial.js b/test-tap/fixture/_generate-source-map-initial.js index 218c33db9..239bf7f36 100644 --- a/test-tap/fixture/_generate-source-map-initial.js +++ b/test-tap/fixture/_generate-source-map-initial.js @@ -3,7 +3,6 @@ const fs = require('fs'); const path = require('path'); const babel = require('@babel/core'); -/* eslint-disable unicorn/string-content */ const transformed = babel.transform(` import {mapFile} from 'source-map-fixtures'; import test from '../../'; @@ -24,7 +23,6 @@ const run = () => fixture.run(); sourceMaps: true, presets: ['@ava/stage-4'] }); -/* eslint-enable unicorn/string-content */ fs.writeFileSync( path.join(__dirname, 'source-map-initial.js'), diff --git a/test-tap/helper/simulate-tty.js b/test-tap/helper/simulate-tty.js index bc1878c9c..406aa50dd 100644 --- a/test-tap/helper/simulate-tty.js +++ b/test-tap/helper/simulate-tty.js @@ -34,7 +34,7 @@ const simulateTTY = (stream, colorDepth, hasColors) => { // typical testing conditions and tricks AVA into using its fake TTY logic. if (process.env.AVA_SIMULATE_TTY) { const colorDepth = process.env.AVA_TTY_COLOR_DEPTH ? - parseInt(process.env.AVA_TTY_COLOR_DEPTH, 10) : + Number.parseInt(process.env.AVA_TTY_COLOR_DEPTH, 10) : undefined; const hasColors = process.env.AVA_TTY_HAS_COLORS !== undefined; diff --git a/test-tap/integration/config.js b/test-tap/integration/config.js index 3ef11824e..25df91996 100644 --- a/test-tap/integration/config.js +++ b/test-tap/integration/config.js @@ -48,7 +48,7 @@ test('use current working directory if `package.json` is not found', () => { const cliPath = require.resolve('../../cli.js'); const avaPath = require.resolve('../../'); - fs.writeFileSync(testFilePath, `const test = require(${JSON.stringify(avaPath)});\ntest('test', t => { t.pass(); });`); // eslint-disable-line unicorn/string-content + fs.writeFileSync(testFilePath, `const test = require(${JSON.stringify(avaPath)});\ntest('test', t => { t.pass(); });`); return execa(process.execPath, [cliPath], {cwd, env: {AVA_FORCE_CI: 'ci'}}); }); diff --git a/test-tap/integration/node-arguments.js b/test-tap/integration/node-arguments.js index 2d6c7d835..b807808e8 100644 --- a/test-tap/integration/node-arguments.js +++ b/test-tap/integration/node-arguments.js @@ -17,7 +17,7 @@ test('reads node arguments from config', t => { test('detects incomplete --node-arguments', t => { t.plan(2); - execCli(['--node-arguments="--foo=\'bar"', 'node-arguments.js'], (err, stdout, stderr) => { // eslint-disable-line unicorn/string-content + execCli(['--node-arguments="--foo=\'bar"', 'node-arguments.js'], (err, stdout, stderr) => { t.ok(err); t.match(stderr, /Could not parse `--node-arguments` value. Make sure all strings are closed and backslashes are used correctly./); }); diff --git a/test-tap/integration/snapshots.js b/test-tap/integration/snapshots.js index cbaad8dae..110e2e8b0 100644 --- a/test-tap/integration/snapshots.js +++ b/test-tap/integration/snapshots.js @@ -44,7 +44,6 @@ test('appends to existing snapshots', t => { const cwd = tempy.directory(); fs.writeFileSync(path.join(cwd, 'package.json'), '{}'); - // eslint-disable-next-line unicorn/string-content const initial = `const test = require(${JSON.stringify(avaPath)}) test('one', t => { t.snapshot({one: true}) @@ -55,7 +54,6 @@ test('one', t => { return run().then(result => { t.match(result.stdout, /1 test passed/); - // eslint-disable-next-line unicorn/string-content fs.writeFileSync(path.join(cwd, 'test.js'), `${initial} test('two', t => { t.snapshot({two: true}) @@ -64,7 +62,6 @@ test('two', t => { }).then(result => { t.match(result.stdout, /2 tests passed/); - // eslint-disable-next-line unicorn/string-content fs.writeFileSync(path.join(cwd, 'test.js'), `${initial} test('two', t => { t.snapshot({two: false})