Skip to content

Commit 73dd4ab

Browse files
authoredJun 19, 2023
fix: show diff correctly (#3620)
1 parent 4caae81 commit 73dd4ab

File tree

4 files changed

+27
-6
lines changed

4 files changed

+27
-6
lines changed
 

‎packages/utils/src/diff/index.ts

+6
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,12 @@ const FALLBACK_FORMAT_OPTIONS = {
6060
// Generate a string that will highlight the difference between two values
6161
// with green and red. (similar to how github does code diffing)
6262

63+
/**
64+
* @param a Expected value
65+
* @param b Received value
66+
* @param options Diff options
67+
* @returns
68+
*/
6369
export function diff(a: any, b: any, options?: DiffOptions): string | null {
6470
if (Object.is(a, b))
6571
return ''

‎packages/utils/src/error.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ export function processError(err: any) {
9797
err.nameStr = String(err.name)
9898

9999
if (err.showDiff || (err.showDiff === undefined && err.expected !== undefined && err.actual !== undefined))
100-
err.diff = diff(err.actual, err.expected)
100+
err.diff = diff(err.expected, err.actual)
101101

102102
if (typeof err.expected !== 'string')
103103
err.expected = stringify(err.expected, 10)

‎test/core/test/jest-expect.test.ts

+16-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
/* eslint-disable no-sparse-arrays */
22
import { AssertionError } from 'node:assert'
33
import { describe, expect, it, vi } from 'vitest'
4-
import { generateToBeMessage } from '@vitest/expect'
4+
import { generateToBeMessage, setupColors } from '@vitest/expect'
5+
import { processError } from '@vitest/utils/error'
6+
import { getDefaultColors } from '@vitest/utils'
57

68
class TestError extends Error {}
79

@@ -753,4 +755,17 @@ it('compatible with jest', () => {
753755
expect(state.assertionCalls).toBe(2)
754756
})
755757

758+
it('correctly prints diff', () => {
759+
try {
760+
expect({ a: 1 }).toEqual({ a: 2 })
761+
expect.unreachable()
762+
}
763+
catch (err) {
764+
setupColors(getDefaultColors())
765+
const error = processError(err)
766+
expect(error.diff).toContain('- "a": 2')
767+
expect(error.diff).toContain('+ "a": 1')
768+
}
769+
})
770+
756771
it('timeout', () => new Promise(resolve => setTimeout(resolve, 500)))

‎test/reporters/tests/__snapshots__/html.test.ts.snap

+4-4
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ exports[`html reporter > resolves to "failing" status for test file "json-fail"
4848
"diff": "- Expected
4949
+ Received
5050
51-
- 2
52-
+ 1",
51+
- 1
52+
+ 2",
5353
"expected": "1",
5454
"message": "expected 2 to deeply equal 1",
5555
"name": "AssertionError",
@@ -68,8 +68,8 @@ exports[`html reporter > resolves to "failing" status for test file "json-fail"
6868
"diff": "- Expected
6969
+ Received
7070
71-
- 2
72-
+ 1",
71+
- 1
72+
+ 2",
7373
"expected": "1",
7474
"message": "expected 2 to deeply equal 1",
7575
"name": "AssertionError",

0 commit comments

Comments
 (0)
Please sign in to comment.