1
+ import { diff } from 'semver' ;
1
2
// https://github.com/clojure-emacs/cider-nrepl/blob/a740583c3aa8b582f3097611787a276775131d32/src/cider/nrepl/middleware/test.clj#L45
2
3
export interface TestSummary {
3
4
ns : number ;
@@ -142,6 +143,24 @@ export function lineInformation(result: TestResult): string {
142
143
return ` (${ result . file } :${ result . line } )` ;
143
144
}
144
145
146
+ function testDiffInformation ( result : TestResult ) : string [ ] {
147
+ const diffs = result . diffs ;
148
+ const messages : string [ ] = [ ] ;
149
+
150
+ if ( diffs && Array . isArray ( diffs ) ) {
151
+ diffs . forEach ( ( diffPair : [ string , string ] ) => {
152
+ if ( Array . isArray ( diffPair ) && diffPair . length === 2 ) {
153
+ messages . push ( `; expected:\n${ diffPair [ 0 ] } ` ) ;
154
+ messages . push ( `; actual:\n${ diffPair [ 1 ] } ` ) ;
155
+ } else {
156
+ console . warn ( 'Invalid diff pair format:' , diffPair ) ;
157
+ }
158
+ } ) ;
159
+ }
160
+
161
+ return messages ;
162
+ }
163
+
145
164
// Return a detailed message about why a test failed.
146
165
// If the test passed, return the empty string.
147
166
// The message contains "comment" lines that are prepended with ;
@@ -167,11 +186,18 @@ export function detailedMessage(result: TestResult): string | undefined {
167
186
if ( message ) {
168
187
messages . push ( `; ${ message } ` ) ;
169
188
}
170
- if ( result . expected ) {
171
- messages . push ( `; expected:\n${ result . expected } ` ) ;
172
- }
173
- if ( result . actual ) {
174
- messages . push ( `; actual:\n${ result . actual } ` ) ;
189
+
190
+ const diffMessages = testDiffInformation ( result ) ;
191
+
192
+ if ( diffMessages . length > 0 ) {
193
+ messages . push ( ...diffMessages ) ;
194
+ } else {
195
+ if ( result . expected ) {
196
+ messages . push ( `; expected:\n${ result . expected } ` ) ;
197
+ }
198
+ if ( result . actual ) {
199
+ messages . push ( `; actual:\n${ result . actual } ` ) ;
200
+ }
175
201
}
176
202
}
177
203
return messages . length > 0 ? messages . join ( '\n' ) : undefined ;
0 commit comments