55 * LICENSE file in the root directory of this source tree.
66 */
77
8+ import { originalPositionFor } from '@jridgewell/trace-mapping' ;
89import * as fs from 'graceful-fs' ;
9- import SourceMap from 'source-map' ;
1010import getCallsite from '../getCallsite' ;
1111
1212jest . mock ( 'graceful-fs' ) ;
13+ jest . mock ( '@jridgewell/trace-mapping' , ( ) => {
14+ const actual = jest . requireActual ( '@jridgewell/trace-mapping' ) ;
15+
16+ return {
17+ ...actual ,
18+ originalPositionFor : jest . fn ( actual . originalPositionFor ) ,
19+ } ;
20+ } ) ;
1321
1422describe ( 'getCallsite' , ( ) => {
1523 test ( 'without source map' , ( ) => {
@@ -35,30 +43,35 @@ describe('getCallsite', () => {
3543 } ) ;
3644
3745 test ( 'reads source map file to determine line and column' , ( ) => {
38- ( fs . readFileSync as jest . Mock ) . mockImplementation ( ( ) => 'file data' ) ;
46+ ( fs . readFileSync as jest . Mock ) . mockImplementation ( ( ) =>
47+ JSON . stringify ( {
48+ file : 'file.js' ,
49+ mappings : 'AAAA,OAAO,MAAM,KAAK,GAAG,QAAd' ,
50+ names : [ ] ,
51+ sources : [ 'file.js' ] ,
52+ sourcesContent : [ "export const hello = 'foobar';\\n" ] ,
53+ version : 3 ,
54+ } ) ,
55+ ) ;
3956
4057 const sourceMapColumn = 1 ;
4158 const sourceMapLine = 2 ;
4259
43- SourceMap . SourceMapConsumer = class {
44- originalPositionFor ( params : Record < string , number > ) {
45- expect ( params ) . toMatchObject ( {
46- column : expect . any ( Number ) ,
47- line : expect . any ( Number ) ,
48- } ) ;
49-
50- return {
51- column : sourceMapColumn ,
52- line : sourceMapLine ,
53- } ;
54- }
55- } ;
60+ jest . mocked ( originalPositionFor ) . mockImplementation ( ( ) => ( {
61+ column : sourceMapColumn ,
62+ line : sourceMapLine ,
63+ } ) ) ;
5664
5765 const site = getCallsite ( 0 , new Map ( [ [ __filename , 'mockedSourceMapFile' ] ] ) ) ;
5866
5967 expect ( site . getFileName ( ) ) . toEqual ( __filename ) ;
6068 expect ( site . getColumnNumber ( ) ) . toEqual ( sourceMapColumn ) ;
6169 expect ( site . getLineNumber ( ) ) . toEqual ( sourceMapLine ) ;
70+ expect ( originalPositionFor ) . toHaveBeenCalledTimes ( 1 ) ;
71+ expect ( originalPositionFor ) . toHaveBeenCalledWith ( expect . anything ( ) , {
72+ column : expect . any ( Number ) ,
73+ line : expect . any ( Number ) ,
74+ } ) ;
6275 expect ( fs . readFileSync ) . toHaveBeenCalledWith ( 'mockedSourceMapFile' , 'utf8' ) ;
6376 } ) ;
6477} ) ;
0 commit comments