File tree Expand file tree Collapse file tree 3 files changed +14
-5
lines changed
dev-packages/node-integration-tests/suites/contextLines Expand file tree Collapse file tree 3 files changed +14
-5
lines changed Original file line number Diff line number Diff line change @@ -25,7 +25,7 @@ describe('ContextLines integration', () => {
25
25
lineno : 3 ,
26
26
function : '?' ,
27
27
in_app : true ,
28
- module : 'scenario%20with%20space ' ,
28
+ module : 'scenario with space ' ,
29
29
} ,
30
30
] ) ,
31
31
} ,
Original file line number Diff line number Diff line change @@ -29,23 +29,27 @@ export function createGetModuleFromFilename(
29
29
file = file . slice ( 0 , ext . length * - 1 ) ;
30
30
}
31
31
32
+ // The file name might be URI-encoded which we want to decode to
33
+ // the original file name.
34
+ const decodedFile = decodeURIComponent ( file ) ;
35
+
32
36
if ( ! dir ) {
33
37
// No dirname whatsoever
34
38
dir = '.' ;
35
39
}
36
40
37
41
const n = dir . lastIndexOf ( '/node_modules' ) ;
38
42
if ( n > - 1 ) {
39
- return `${ dir . slice ( n + 14 ) . replace ( / \/ / g, '.' ) } :${ file } ` ;
43
+ return `${ dir . slice ( n + 14 ) . replace ( / \/ / g, '.' ) } :${ decodedFile } ` ;
40
44
}
41
45
42
46
// Let's see if it's a part of the main module
43
47
// To be a part of main module, it has to share the same base
44
48
if ( dir . startsWith ( normalizedBase ) ) {
45
49
const moduleName = dir . slice ( normalizedBase . length + 1 ) . replace ( / \/ / g, '.' ) ;
46
- return moduleName ? `${ moduleName } :${ file } ` : file ;
50
+ return moduleName ? `${ moduleName } :${ decodedFile } ` : decodedFile ;
47
51
}
48
52
49
- return file ;
53
+ return decodedFile ;
50
54
} ;
51
55
}
Original file line number Diff line number Diff line change @@ -16,6 +16,11 @@ describe('createGetModuleFromFilename', () => {
16
16
expect ( getModule ( '/path/to/base/file.js' ) ) . toBe ( 'file' ) ;
17
17
} ) ;
18
18
19
+ it ( 'decodes URI-encoded file names' , ( ) => {
20
+ const getModule = createGetModuleFromFilename ( ) ;
21
+ expect ( getModule ( '/path%20with%space/file%20with%20spaces(1).js' ) ) . toBe ( 'file with spaces(1)' ) ;
22
+ } ) ;
23
+
19
24
it ( 'returns undefined if no filename is provided' , ( ) => {
20
25
const getModule = createGetModuleFromFilename ( ) ;
21
26
expect ( getModule ( undefined ) ) . toBeUndefined ( ) ;
@@ -29,7 +34,7 @@ describe('createGetModuleFromFilename', () => {
29
34
expect ( getModule ( filename ) ) . toBe ( expected ) ;
30
35
} ) ;
31
36
32
- it ( 'handles windows paths with passed basePath' , ( ) => {
37
+ it ( 'handles windows paths with passed basePath and node_modules ' , ( ) => {
33
38
const getModule = createGetModuleFromFilename ( 'C:\\path\\to\\base' , true ) ;
34
39
expect ( getModule ( 'C:\\path\\to\\base\\node_modules\\somePkg\\file.js' ) ) . toBe ( 'somePkg:file' ) ;
35
40
} ) ;
You can’t perform that action at this time.
0 commit comments