diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6ae649972..56239e0c1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,7 +29,7 @@ jobs: node-version: ${{ matrix.node-version }} cache: npm - name: Upgrade npm - run: npm install --global npm@^8.12 + run: npm install --global npm@^8.18 - run: npm install --no-audit - run: npm run cover - uses: codecov/codecov-action@v2 @@ -50,7 +50,7 @@ jobs: node-version: ^18 cache: npm - name: Upgrade npm - run: npm install --global npm@^8.12 + run: npm install --global npm@^8.18 - run: npm install --no-audit - run: npm i typescript@${TS_VERSION} env: @@ -68,7 +68,7 @@ jobs: node-version: ^18 cache: npm - name: Upgrade npm - run: if [[ "$(npm -v)" != "8.12.0" ]]; then npm install --global npm@8.12.0; fi + run: if [[ "$(npm -v)" != "8.18.0" ]]; then npm install --global npm@8.18.0; fi - run: npm install --no-audit - name: Test package-lock for unexpected modifications run: | @@ -89,7 +89,7 @@ jobs: with: node-version: ^18 - name: Upgrade npm - run: npm install --global npm@^8.12 + run: npm install --global npm@^8.18 - run: npm install --no-package-lock --no-audit - run: npm run cover @@ -103,6 +103,6 @@ jobs: node-version: ^18 cache: npm - name: Upgrade npm - run: npm install --global npm@^8.12 + run: npm install --global npm@^8.18 - run: npm install --no-audit - run: npx xo diff --git a/.xo-config.cjs b/.xo-config.cjs index 896e8001f..138d98b07 100644 --- a/.xo-config.cjs +++ b/.xo-config.cjs @@ -36,6 +36,7 @@ module.exports = { { files: 'examples/**', rules: { + 'ava/no-ignored-test-files': 'off', 'ava/no-only-test': 'off', 'unicorn/prefer-module': 'off', }, diff --git a/lib/worker/line-numbers.js b/lib/worker/line-numbers.js index 92f609667..bf3280311 100644 --- a/lib/worker/line-numbers.js +++ b/lib/worker/line-numbers.js @@ -61,7 +61,7 @@ function findTest(locations, declaration) { const range = (start, end) => Array.from({length: end - start + 1}).fill(start).map((element, index) => element + index); const translate = (sourceMap, pos) => { - if (sourceMap === undefined) { + if (sourceMap === null) { return pos; } @@ -88,7 +88,7 @@ export default function lineNumberSelection({file, lineNumbers = []}) { let locations = parse(file); let lookedForSourceMap = false; - let sourceMap; + let sourceMap = null; return () => { if (!lookedForSourceMap) { @@ -98,7 +98,13 @@ export default function lineNumberSelection({file, lineNumbers = []}) { // Source maps are not available before then. sourceMap = findSourceMap(file); - if (sourceMap !== undefined) { + if (sourceMap === undefined) { + // Prior to Node.js 18.8.0, the value when a source map could not be found was `undefined`. + // This changed to `null` in . + sourceMap = null; + } + + if (sourceMap !== null) { locations = locations.map(({start, end}) => ({ start: translate(sourceMap, start), end: translate(sourceMap, end), diff --git a/package-lock.json b/package-lock.json index 715bfaf0f..33334eb00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ava", - "version": "4.3.1", + "version": "4.3.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ava", - "version": "4.3.1", + "version": "4.3.3", "license": "MIT", "dependencies": { "acorn": "^8.7.1", @@ -107,11 +107,11 @@ }, "node_modules/@ava/test": { "version": "0.0.0", - "resolved": "git+ssh://git@github.com/avajs/test.git#11bf71930d4467f405f865b897a6691d18ab0a90", + "resolved": "git+ssh://git@github.com/avajs/test.git#77d7e1f5a51c02c9536648b274e3c30a0ad7dded", "dev": true, "license": "MIT", "dependencies": { - "@ava/v4": "npm:ava@4.0.0-rc.1" + "@ava/v4": "npm:ava@4.3.3" }, "bin": { "test-ava": "cli.js" @@ -221,63 +221,62 @@ }, "node_modules/@ava/v4": { "name": "ava", - "version": "4.0.0-rc.1", - "resolved": "https://registry.npmjs.org/ava/-/ava-4.0.0-rc.1.tgz", - "integrity": "sha512-ibYMBSeG0z2L0My3yJtxK0NNMcP5uN/TMZnNJ2FvHa3rGg6UpLglVh/2wjWvuc1kTGPy32liwoneFITQ85wbbg==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/ava/-/ava-4.3.3.tgz", + "integrity": "sha512-9Egq/d9R74ExrWohHeqUlexjDbgZJX5jA1Wq4KCTqc3wIfpGEK79zVy4rBtofJ9YKIxs4PzhJ8BgbW5PlAYe6w==", "dev": true, "dependencies": { - "acorn": "^8.5.0", + "acorn": "^8.7.1", "acorn-walk": "^8.2.0", "ansi-styles": "^6.1.0", "arrgv": "^1.0.2", "arrify": "^3.0.0", "callsites": "^4.0.0", - "cbor": "^8.0.2", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", + "cbor": "^8.1.0", + "chalk": "^5.0.1", + "chokidar": "^3.5.3", "chunkd": "^2.0.1", - "ci-info": "^3.2.0", + "ci-info": "^3.3.1", "ci-parallel-vars": "^1.0.1", "clean-yaml-object": "^0.1.0", "cli-truncate": "^3.1.0", - "code-excerpt": "^3.0.0", + "code-excerpt": "^4.0.0", "common-path-prefix": "^3.0.0", "concordance": "^5.0.4", "currently-unhandled": "^0.4.1", - "debug": "^4.3.2", - "del": "^6.0.0", - "emittery": "^0.10.0", - "equal-length": "^1.0.1", - "figures": "^4.0.0", - "globby": "^12.0.2", - "ignore-by-default": "^2.0.0", + "debug": "^4.3.4", + "del": "^6.1.1", + "emittery": "^0.11.0", + "figures": "^4.0.1", + "globby": "^13.1.1", + "ignore-by-default": "^2.1.0", "indent-string": "^5.0.0", "is-error": "^2.2.2", "is-plain-object": "^5.0.0", "is-promise": "^4.0.0", "matcher": "^5.0.0", - "mem": "^9.0.1", + "mem": "^9.0.2", "ms": "^2.1.3", - "p-event": "^4.2.0", - "p-map": "^5.2.0", - "picomatch": "^2.3.0", + "p-event": "^5.0.1", + "p-map": "^5.4.0", + "picomatch": "^2.3.1", "pkg-conf": "^4.0.0", - "plur": "^4.0.0", + "plur": "^5.1.0", "pretty-ms": "^7.0.1", "resolve-cwd": "^3.0.0", "slash": "^3.0.0", - "stack-utils": "^2.0.3", + "stack-utils": "^2.0.5", "strip-ansi": "^7.0.1", - "supertap": "^2.0.0", + "supertap": "^3.0.1", "temp-dir": "^2.0.0", - "write-file-atomic": "^3.0.3", - "yargs": "^17.2.1" + "write-file-atomic": "^4.0.1", + "yargs": "^17.5.1" }, "bin": { "ava": "entrypoints/cli.mjs" }, "engines": { - "node": ">=12.22 <13 || >=14.17 <15 || >=16.4 <17 || >=17" + "node": ">=12.22 <13 || >=14.17 <15 || >=16.4 <17 || >=18" }, "peerDependencies": { "@ava/typescript": "*" @@ -288,229 +287,6 @@ } } }, - "node_modules/@ava/v4/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@ava/v4/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@ava/v4/node_modules/chalk/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@ava/v4/node_modules/code-excerpt": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-3.0.0.tgz", - "integrity": "sha512-VHNTVhd7KsLGOqfX3SyeO8RyYPMp1GJOg194VITk04WMYCv4plV68YWe6TJZxd9MhobjtpMRnVky01gqZsalaw==", - "dev": true, - "dependencies": { - "convert-to-spaces": "^1.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@ava/v4/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@ava/v4/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@ava/v4/node_modules/convert-to-spaces": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", - "integrity": "sha512-cj09EBuObp9gZNQCzc7hByQyrs6jVGE+o9kSJmeUoj+GiPiJvi5LYqEH/Hmme4+MTLHM+Ejtq+FChpjjEnsPdQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/@ava/v4/node_modules/emittery": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", - "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/@ava/v4/node_modules/globby": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", - "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", - "dev": true, - "dependencies": { - "array-union": "^3.0.1", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.7", - "ignore": "^5.1.9", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@ava/v4/node_modules/globby/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@ava/v4/node_modules/p-event": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", - "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", - "dev": true, - "dependencies": { - "p-timeout": "^3.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@ava/v4/node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dev": true, - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@ava/v4/node_modules/plur": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", - "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", - "dev": true, - "dependencies": { - "irregular-plurals": "^3.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@ava/v4/node_modules/supertap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supertap/-/supertap-2.0.0.tgz", - "integrity": "sha512-jRzcXlCeDYvKoZGA5oRhYyR3jUIYu0enkSxtmAgHRlD7HwrovTpH4bDSi0py9FtuA8si9cW/fKommJHuaoDHJA==", - "dev": true, - "dependencies": { - "arrify": "^2.0.1", - "indent-string": "^4.0.0", - "js-yaml": "^3.14.0", - "serialize-error": "^7.0.1", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@ava/v4/node_modules/supertap/node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@ava/v4/node_modules/supertap/node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@ava/v4/node_modules/supertap/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@ava/v4/node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, "node_modules/@babel/code-frame": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", @@ -1642,18 +1418,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-union": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", - "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/array.prototype.flat": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", @@ -2639,15 +2403,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/equal-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", - "integrity": "sha512-TK2m7MvWPt/v3dan0BCNp99pytIE5UGrUj7F0KZirNX8xz8fDFUAZfgm8uB5FuQq9u0sMeDocYBfEhsd1nwGoA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -6393,15 +6148,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", diff --git a/package.json b/package.json index e04b89a4c..69a3d9f20 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ava", - "version": "4.3.1", + "version": "4.3.3", "description": "Node.js test runner that lets you develop with confidence.", "license": "MIT", "repository": "avajs/ava", @@ -157,7 +157,7 @@ } }, "volta": { - "node": "18.3.0", - "npm": "8.12.0" + "node": "18.8.0", + "npm": "8.18.0" } } diff --git a/test-tap/reporters/default.edgecases.v18.log b/test-tap/reporters/default.edgecases.v18.log index 83bd6a2aa..0aef8246b 100644 --- a/test-tap/reporters/default.edgecases.v18.log +++ b/test-tap/reporters/default.edgecases.v18.log @@ -17,6 +17,10 @@ ---tty-stream-chunk-separator Uncaught exception in ast-syntax-error.cjs + ~/test-tap/fixture/report/edgecases/ast-syntax-error.cjs:3 + const fn = do { + ^^ + SyntaxError: Unexpected token 'do' ---tty-stream-chunk-separator diff --git a/test-tap/reporters/tap.edgecases.v18.log b/test-tap/reporters/tap.edgecases.v18.log index ba4f57781..0b7bcf535 100644 --- a/test-tap/reporters/tap.edgecases.v18.log +++ b/test-tap/reporters/tap.edgecases.v18.log @@ -1,6 +1,10 @@ TAP version 13 ---tty-stream-chunk-separator -not ok 1 - SyntaxError: Unexpected token 'do' +not ok 1 - ~/test-tap/fixture/report/edgecases/ast-syntax-error.cjs:3 +const fn = do { + ^^ + +SyntaxError: Unexpected token 'do' --- name: SyntaxError message: Unexpected token 'do'