Skip to content

Commit 8e0786f

Browse files
pedrottimarkSimenB
authored andcommitted
jest-diff: Do not inverse format if line consists of one change (#8903)
1 parent c588c18 commit 8e0786f

4 files changed

Lines changed: 31 additions & 22 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
### Fixes
1515

1616
- `[expect]` Display expectedDiff more carefully in toBeCloseTo ([#8389](https://github.com/facebook/jest/pull/8389))
17+
- `[jest-diff]` Do not inverse format if line consists of one change ([#8903](https://github.com/facebook/jest/pull/8903))
1718
- `[jest-fake-timers]` `getTimerCount` will not include cancelled immediates ([#8764](https://github.com/facebook/jest/pull/8764))
1819
- `[jest-leak-detector]` [**BREAKING**] Use `weak-napi` instead of `weak` package ([#8686](https://github.com/facebook/jest/pull/8686))
1920
- `[jest-mock]` Fix for mockReturnValue overriding mockImplementationOnce ([#8398](https://github.com/facebook/jest/pull/8398))

packages/expect/src/__tests__/__snapshots__/matchers.test.js.snap

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -303,9 +303,9 @@ string" 1`] = `
303303
<green>- Expected</>
304304
<red>+ Received</>
305305

306-
<green>- <inverse>3</></>
307-
<red>+ <inverse>four</></>
308-
<red>+ <inverse>4</></>
306+
<green>- 3</>
307+
<red>+ four</>
308+
<red>+ 4</>
309309
<dim> line</>
310310
<dim> string</>"
311311
`;

packages/jest-diff/src/__tests__/__snapshots__/getAlignedDiffs.test.ts.snap

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

33
exports[`getAlignedDiffs lines change preceding and following common 1`] = `
4-
"<green>- <inverse>delete</></>
5-
<red>+ <inverse>insert</></>
4+
"<green>- delete</>
5+
<red>+ insert</>
66
<dim> common between changes</>
7-
<green>- <inverse>prev</></>
8-
<red>+ <inverse>next</></>"
7+
<green>- prev</>
8+
<red>+ next</>"
99
`;
1010
1111
exports[`getAlignedDiffs lines common at end when both current change lines are empty 1`] = `
12-
"<green>- <inverse>delete</></>
12+
"<green>- delete</>
1313
<dim> common at end</>"
1414
`;
1515
1616
exports[`getAlignedDiffs lines common between delete and insert 1`] = `
17-
"<green>- <inverse>delete</></>
17+
"<green>- delete</>
1818
<dim> common between changes</>
19-
<red>+ <inverse>insert</></>"
19+
<red>+ insert</>"
2020
`;
2121
2222
exports[`getAlignedDiffs lines common between insert and delete 1`] = `
23-
"<red>+ <inverse>insert</></>
23+
"<red>+ insert</>
2424
<dim> common between changes</>
25-
<green>- <inverse>delete</></>"
25+
<green>- delete</>"
2626
`;
2727
2828
exports[`getAlignedDiffs lines common preceding and following change 1`] = `
2929
"<dim> common preceding</>
30-
<green>- <inverse>delete</></>
31-
<red>+ <inverse>insert</></>
30+
<green>- delete</>
31+
<red>+ insert</>
3232
<dim> common following</>"
3333
`;
3434
@@ -85,7 +85,7 @@ exports[`getAlignedDiffs strings delete or insert at start and change at end 1`]
8585
`;
8686
8787
exports[`getAlignedDiffs substrings first common when both current change lines are empty 1`] = `
88-
"<red>+ <inverse>insert</></>
88+
"<red>+ insert</>
8989
<dim> first</>
9090
<dim> middle</>
9191
<green>- last <inverse>prev</></>
@@ -101,15 +101,15 @@ exports[`getAlignedDiffs substrings first common when either current change line
101101
102102
exports[`getAlignedDiffs substrings first delete completes the current line 1`] = `
103103
"<green>- common preceding <inverse>first</></>
104-
<green>- <inverse>middle</></>
104+
<green>- middle</>
105105
<green>- <inverse>last </>and following</>
106106
<red>+ common preceding and following</>"
107107
`;
108108
109109
exports[`getAlignedDiffs substrings first insert completes the current line 1`] = `
110110
"<green>- common preceding</>
111111
<red>+ common preceding<inverse> first</></>
112-
<red>+ <inverse>middle</></>
112+
<red>+ middle</>
113113
<red>+</>"
114114
`;
115115
@@ -140,21 +140,21 @@ exports[`getAlignedDiffs substrings middle is empty in delete between common 1`]
140140
141141
exports[`getAlignedDiffs substrings middle is empty in insert at start 1`] = `
142142
"<green>- <inverse>expect</>ed common at end</>
143-
<red>+ <inverse>insert line</></>
143+
<red>+ insert line</>
144144
<red>+</>
145145
<red>+ <inverse>receiv</>ed common at end</>"
146146
`;
147147
148148
exports[`getAlignedDiffs substrings middle is non-empty in delete at end 1`] = `
149149
"<green>- common at start precedes <inverse>delete</></>
150-
<green>- <inverse>non-empty line</></>
151-
<green>- <inverse>next</></>
150+
<green>- non-empty line</>
151+
<green>- next</>
152152
<red>+ common at start precedes <inverse>prev</></>"
153153
`;
154154
155155
exports[`getAlignedDiffs substrings middle is non-empty in insert between common 1`] = `
156156
"<green>- common at start precedes <inverse>delete expect</>ed</>
157157
<red>+ common at start precedes <inverse>insert</></>
158-
<red>+ <inverse>non-empty</></>
158+
<red>+ non-empty</>
159159
<red>+ <inverse>receiv</>ed</>"
160160
`;

packages/jest-diff/src/getAlignedDiffs.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,16 @@ class ChangeBuffer {
2727
private pushLine(): void {
2828
// Assume call only if line has at least one diff,
2929
// therefore an empty line must have a diff which has an empty string.
30+
31+
// If line has multiple diffs, then assume it has a common diff,
32+
// therefore change diffs have change color;
33+
// otherwise then it has line color only.
3034
this.lines.push(
31-
new Diff(this.op, invertChangedSubstrings(this.op, this.line)),
35+
this.line.length !== 1
36+
? new Diff(this.op, invertChangedSubstrings(this.op, this.line))
37+
: this.line[0][0] === this.op
38+
? this.line[0] // can use instance
39+
: new Diff(this.op, this.line[0][1]), // was common diff
3240
);
3341
this.line.length = 0;
3442
}

0 commit comments

Comments
 (0)