diff --git a/packages/runner/src/utils/error.ts b/packages/runner/src/utils/error.ts index 3b8a62579e04..2916086e7578 100644 --- a/packages/runner/src/utils/error.ts +++ b/packages/runner/src/utils/error.ts @@ -1,4 +1,4 @@ -import { deepClone, format, getOwnProperties, getType } from '@vitest/utils' +import { deepClone, format, getOwnProperties, getType, stringify } from '@vitest/utils' import type { DiffOptions } from '@vitest/utils/diff' import { unifiedDiff } from '@vitest/utils/diff' @@ -123,6 +123,11 @@ export function processError(err: any, options: DiffOptions = {}) { if (err.showDiff || (err.showDiff === undefined && err.expected !== undefined && err.actual !== undefined)) err.diff = unifiedDiff(replacedActual, replacedExpected, options) + if (typeof err.expected !== 'string') + err.expected = stringify(err.expected, 10) + if (typeof err.actual !== 'string') + err.actual = stringify(err.actual, 10) + // some Error implementations don't allow rewriting message try { if (typeof err.message === 'string') diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 125cf37b9b83..0b3921a1fcbe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -115,7 +115,7 @@ importers: '@iconify-json/carbon': 1.1.13 '@unocss/reset': 0.48.3 '@vite-pwa/vitepress': 0.0.4_vite-plugin-pwa@0.14.1 - '@vitejs/plugin-vue': 4.0.0_vite@4.0.0+vue@3.2.47 + '@vitejs/plugin-vue': 4.1.0_vite@4.0.0+vue@3.2.47 esno: 0.16.3 fast-glob: 3.2.12 fs-extra: 10.1.0 @@ -240,10 +240,10 @@ importers: react-dom: 18.0.0_react@18.0.0 devDependencies: '@testing-library/react': 13.3.0_zpnidt7m3osuk7shl3s4oenomq - '@types/node': 18.13.0 - '@types/react': 18.0.27 + '@types/node': 18.15.3 + '@types/react': 18.0.28 '@vitejs/plugin-react': 3.1.0 - jsdom: 21.1.0 + jsdom: 21.1.1 typescript: 4.8.4 vitest: link:../../packages/vitest @@ -292,8 +292,8 @@ importers: '@types/react-test-renderer': 17.0.2 '@vitejs/plugin-react': 3.1.0_vite@4.0.0 '@vitest/ui': link:../../packages/ui - happy-dom: 8.2.6 - jsdom: 21.1.0 + happy-dom: 8.9.0 + jsdom: 21.1.1 react-test-renderer: 17.0.2_react@17.0.2 vite: 4.0.0 vitest: link:../../packages/vitest @@ -501,9 +501,9 @@ importers: vitest: workspace:* vue: latest devDependencies: - '@vitejs/plugin-vue': 4.0.0_vite@4.0.0+vue@3.2.47 - '@vue/test-utils': 2.2.10_vue@3.2.47 - jsdom: 21.1.0 + '@vitejs/plugin-vue': 4.1.0_vite@4.0.0+vue@3.2.47 + '@vue/test-utils': 2.3.1_vue@3.2.47 + jsdom: 21.1.1 vite: 4.0.0 vite-plugin-ruby: 3.1.2_vite@4.0.0 vitest: link:../../packages/vitest @@ -559,9 +559,9 @@ importers: dependencies: vue: 3.2.47 devDependencies: - '@vitejs/plugin-vue': 4.0.0_vite@4.0.0+vue@3.2.47 + '@vitejs/plugin-vue': 4.1.0_vite@4.0.0+vue@3.2.47 '@vue/test-utils': 2.0.2_vue@3.2.47 - jsdom: 21.1.0 + jsdom: 21.1.1 unplugin-auto-import: 0.11.2_vite@4.0.0 unplugin-vue-components: 0.22.4_vite@4.0.0+vue@3.2.47 vite: 4.0.0 @@ -578,9 +578,9 @@ importers: dependencies: vue: 3.2.47 devDependencies: - '@vitejs/plugin-vue': 4.0.0_vite@4.0.0+vue@3.2.47 + '@vitejs/plugin-vue': 4.1.0_vite@4.0.0+vue@3.2.47 '@vue/test-utils': 2.0.0_vue@3.2.47 - jsdom: 21.1.0 + jsdom: 21.1.1 vite: 4.0.0 vitest: link:../../packages/vitest @@ -594,10 +594,10 @@ importers: vitest: workspace:* vue: latest devDependencies: - '@vitejs/plugin-vue': 4.0.0_vite@4.0.0+vue@3.2.47 - '@vitejs/plugin-vue-jsx': 3.0.0_vite@4.0.0+vue@3.2.47 - '@vue/test-utils': 2.2.10_vue@3.2.47 - jsdom: 21.1.0 + '@vitejs/plugin-vue': 4.1.0_vite@4.0.0+vue@3.2.47 + '@vitejs/plugin-vue-jsx': 3.0.1_vite@4.0.0+vue@3.2.47 + '@vue/test-utils': 2.3.1_vue@3.2.47 + jsdom: 21.1.1 vite: 4.0.0 vitest: link:../../packages/vitest vue: 3.2.47 @@ -839,6 +839,7 @@ importers: '@sinonjs/fake-timers': ^10.0.2 '@types/chai': ^4.3.4 '@types/chai-subset': ^1.3.3 + '@types/diff': ^5.0.2 '@types/jsdom': ^20.0.1 '@types/micromatch': ^4.0.2 '@types/natural-compare': ^1.4.1 @@ -923,6 +924,7 @@ importers: '@antfu/install-pkg': 0.1.1 '@edge-runtime/vm': 2.0.2 '@sinonjs/fake-timers': 10.0.2 + '@types/diff': 5.0.2 '@types/jsdom': 20.0.1 '@types/micromatch': 4.0.2 '@types/natural-compare': 1.4.1 @@ -1071,9 +1073,9 @@ importers: vitest: workspace:* vue: latest devDependencies: - '@vitejs/plugin-vue': 4.0.0_vite@4.0.0+vue@3.2.47 - '@vue/test-utils': 2.2.10_vue@3.2.47 - happy-dom: 8.2.6 + '@vitejs/plugin-vue': 4.1.0_vite@4.0.0+vue@3.2.47 + '@vue/test-utils': 2.3.1_vue@3.2.47 + happy-dom: 8.9.0 vite: 4.0.0 vitest: link:../../packages/vitest vue: 3.2.47 @@ -5067,7 +5069,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.13.0 + '@types/node': 18.15.3 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -5079,7 +5081,7 @@ packages: '@jest/schemas': 29.0.0 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.13.0 + '@types/node': 18.15.3 '@types/yargs': 17.0.12 chalk: 4.1.2 dev: true @@ -5591,7 +5593,7 @@ packages: engines: {node: '>=14'} hasBin: true dependencies: - '@types/node': 18.13.0 + '@types/node': 18.15.3 playwright-core: 1.28.0 dev: true @@ -7417,7 +7419,7 @@ packages: /@types/cheerio/0.22.31: resolution: {integrity: sha512-Kt7Cdjjdi2XWSfrZ53v4Of0wG3ZcmaegFXjMmz9tfNrZSkzzo36G0AL1YqSdcIA78Etjt6E609pt5h1xnQkPUw==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.15.3 dev: true /@types/codemirror/5.60.6: @@ -7444,6 +7446,10 @@ packages: '@types/ms': 0.7.31 dev: true + /@types/diff/5.0.2: + resolution: {integrity: sha512-uw8eYMIReOwstQ0QKF0sICefSy8cNO/v7gOTiIy9SbwuHyEecJUm7qlgueOO5S1udZ5I/irVydHVwMchgzbKTg==} + dev: true + /@types/enzyme/3.10.12: resolution: {integrity: sha512-xryQlOEIe1TduDWAOphR0ihfebKFSWOXpIsk+70JskCfRfW+xALdnJ0r1ZOTo85F9Qsjk6vtlU7edTYHbls9tA==} dependencies: @@ -7480,33 +7486,33 @@ packages: resolution: {integrity: sha512-zdV5odfHf95B4qr6bdpshG4VMm/3xgnPhSJLa3xh75CYr35e34k+4FQli82Q48sPqwHazJGy+6+jl4T+Vw1AMg==} dependencies: '@types/jsonfile': 6.1.1 - '@types/node': 18.13.0 + '@types/node': 18.15.3 dev: true /@types/fs-extra/9.0.13: resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.15.3 dev: true /@types/glob/7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.1 - '@types/node': 18.13.0 + '@types/node': 18.15.3 dev: true /@types/glob/8.0.0: resolution: {integrity: sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==} dependencies: '@types/minimatch': 5.1.1 - '@types/node': 18.13.0 + '@types/node': 18.15.3 dev: true /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.15.3 dev: true /@types/hast/2.3.4: @@ -7564,12 +7570,12 @@ packages: resolution: {integrity: sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==} dev: true - /@types/jsdom/21.1.0: - resolution: {integrity: sha512-leWreJOdnuIxq9Y70tBVm/bvTuh31DSlF/r4l7Cfi4uhVQqLHD0Q4v301GMisEMwwbMgF7ZKxuZ+Jbd4NcdmRw==} + /@types/jsdom/20.0.1: + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.15.3 '@types/tough-cookie': 4.0.2 - parse5: 7.1.1 + parse5: 7.1.2 dev: true /@types/json-schema/7.0.11: @@ -7583,7 +7589,7 @@ packages: /@types/jsonfile/6.1.1: resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.15.3 dev: true /@types/lodash/4.14.191: @@ -7617,7 +7623,7 @@ packages: /@types/node-fetch/2.6.2: resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.15.3 form-data: 3.0.1 dev: true @@ -7633,8 +7639,8 @@ packages: resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} dev: true - /@types/node/18.13.0: - resolution: {integrity: sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==} + /@types/node/18.15.3: + resolution: {integrity: sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==} dev: true /@types/node/18.7.13: @@ -7667,7 +7673,7 @@ packages: /@types/prompts/2.4.2: resolution: {integrity: sha512-TwNx7qsjvRIUv/BCx583tqF5IINEVjCNqg9ofKHRlSoUHE62WBHrem4B1HGXcIrG511v29d1kJ9a/t2Esz7MIg==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.15.3 kleur: 3.0.3 dev: true @@ -7740,7 +7746,7 @@ packages: /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.15.3 dev: true /@types/resolve/1.20.2: @@ -7757,7 +7763,7 @@ packages: /@types/set-cookie-parser/2.4.2: resolution: {integrity: sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.15.3 dev: true /@types/sinonjs__fake-timers/8.1.1: @@ -7831,7 +7837,7 @@ packages: /@types/webpack-sources/3.2.0: resolution: {integrity: sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.15.3 '@types/source-list-map': 0.1.2 source-map: 0.7.4 dev: true @@ -7839,7 +7845,7 @@ packages: /@types/webpack/4.41.32: resolution: {integrity: sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.15.3 '@types/tapable': 1.0.8 '@types/uglify-js': 3.17.0 '@types/webpack-sources': 3.2.0 @@ -7850,7 +7856,7 @@ packages: /@types/ws/8.5.4: resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.15.3 dev: true /@types/yargs-parser/21.0.0: @@ -7873,7 +7879,7 @@ packages: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} requiresBuild: true dependencies: - '@types/node': 18.13.0 + '@types/node': 18.15.3 dev: true optional: true @@ -8313,15 +8319,15 @@ packages: - supports-color dev: true - /@vitejs/plugin-vue-jsx/3.0.0_vite@4.0.0+vue@3.2.47: - resolution: {integrity: sha512-vurkuzgac5SYuxd2HUZqAFAWGTF10diKBwJNbCvnWijNZfXd+7jMtqjPFbGt7idOJUn584fP1Ar9j/GN2jQ3Ew==} + /@vitejs/plugin-vue-jsx/3.0.1_vite@4.0.0+vue@3.2.47: + resolution: {integrity: sha512-+Jb7ggL48FSPS1uhPnJbJwWa9Sr90vQ+d0InW+AhBM22n+cfuYqJZDckBc+W3QSHe1WDvewMZfa4wZOtk5pRgw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.0.0 vue: ^3.0.0 dependencies: '@babel/core': 7.20.12 - '@babel/plugin-transform-typescript': 7.20.2_@babel+core@7.20.12 + '@babel/plugin-transform-typescript': 7.21.3_@babel+core@7.20.12 '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.20.12 vite: 4.0.0 vue: 3.2.47 @@ -8340,8 +8346,8 @@ packages: vue: 3.2.45 dev: true - /@vitejs/plugin-vue/4.0.0_vite@4.0.0+vue@3.2.47: - resolution: {integrity: sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==} + /@vitejs/plugin-vue/4.1.0_vite@4.0.0+vue@3.2.47: + resolution: {integrity: sha512-++9JOAFdcXI3lyer9UKUV4rfoQ3T1RN8yDqoCLar86s0xQct5yblxAE+yWgRnU5/0FOlVCpTZpYSBV/bGWrSrQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.0.0 @@ -8395,7 +8401,7 @@ packages: '@vue/compiler-core': 3.2.47 '@vue/compiler-dom': 3.2.47 '@vue/compiler-sfc': 3.2.47 - '@vue/reactivity': 3.2.45 + '@vue/reactivity': 3.2.47 '@vue/shared': 3.2.47 dev: true @@ -8707,8 +8713,8 @@ packages: vue: 3.2.47 dev: true - /@vue/test-utils/2.2.10_vue@3.2.47: - resolution: {integrity: sha512-UPY+VdWST5vYZ/Qhl+sLuJAv596e6kTbrOPgdGY82qd9kGN/MfjzLT5KXlmpChkiCbPP3abZ8XT25u1n5h+mRg==} + /@vue/test-utils/2.3.1_vue@3.2.47: + resolution: {integrity: sha512-tRtHRPEETQSUrqXgAewNZHm5iypxDFxwenfdcvMRm1kbGo4bcqHb1XHHlsaIjoDbLkuE2NYiF8vBQDNYrzlrSA==} peerDependencies: vue: ^3.0.1 dependencies: @@ -8716,6 +8722,7 @@ packages: vue: 3.2.47 optionalDependencies: '@vue/compiler-dom': 3.2.47 + '@vue/server-renderer': 3.2.47_vue@3.2.47 dev: true /@vueuse/core/8.9.4_vue@3.2.39: @@ -13895,8 +13902,8 @@ packages: - encoding dev: true - /happy-dom/8.2.6: - resolution: {integrity: sha512-s53VwyMFpQPEZdN00M82i3tFTzz0T4kBVD4tu8b+im99s1NkLK6tfKGCCl2Jmf3ZWfFCRwS+DV2qkR7S1wmIhQ==} + /happy-dom/8.9.0: + resolution: {integrity: sha512-JZwJuGdR7ko8L61136YzmrLv7LgTh5b8XaEM3P709mLjyQuXJ3zHTDXvUtBBahRjGlcYW0zGjIiEWizoTUGKfA==} dependencies: css.escape: 1.5.1 he: 1.2.0 @@ -15036,7 +15043,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.13.0 + '@types/node': 18.15.3 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -15104,7 +15111,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.15.3 graceful-fs: 4.2.10 dev: true @@ -15113,7 +15120,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.13.0 + '@types/node': 18.15.3 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -15125,7 +15132,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.0.1 - '@types/node': 18.13.0 + '@types/node': 18.15.3 chalk: 4.1.2 ci-info: 3.7.0 graceful-fs: 4.2.10 @@ -15136,7 +15143,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.15.3 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -15145,7 +15152,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.15.3 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -21432,7 +21439,7 @@ packages: dependencies: '@docsearch/css': 3.3.1 '@docsearch/js': 3.3.1 - '@vitejs/plugin-vue': 4.0.0_vite@4.0.0+vue@3.2.47 + '@vitejs/plugin-vue': 4.1.0_vite@4.0.0+vue@3.2.47 '@vue/devtools-api': 6.4.5 '@vueuse/core': 9.10.0_vue@3.2.47 body-scroll-lock: 4.0.0-beta.0