1
1
namespace ts . projectSystem {
2
- describe ( "unittests:: tsserver:: Language service " , ( ) => {
2
+ describe ( "unittests:: tsserver:: languageService " , ( ) => {
3
3
it ( "should work correctly on case-sensitive file systems" , ( ) => {
4
4
const lib = {
5
5
path : "/a/Lib/lib.d.ts" ,
@@ -15,5 +15,54 @@ namespace ts.projectSystem {
15
15
projectService . checkNumberOfProjects ( { inferredProjects : 1 } ) ;
16
16
projectService . inferredProjects [ 0 ] . getLanguageService ( ) . getProgram ( ) ;
17
17
} ) ;
18
+
19
+ it ( "should support multiple projects with the same file under differing `paths` settings" , ( ) => {
20
+ const files = [
21
+ {
22
+ path : "/project/shared.ts" ,
23
+ content : Utils . dedent `
24
+ import {foo_a} from "foo";
25
+ `
26
+ } ,
27
+ {
28
+ path : `/project/a/tsconfig.json` ,
29
+ content : `{ "compilerOptions": { "paths": { "foo": ["./foo.d.ts"] } }, "files": ["./index.ts", "./foo.d.ts"] }`
30
+ } ,
31
+ {
32
+ path : `/project/a/foo.d.ts` ,
33
+ content : Utils . dedent `
34
+ export const foo_a = 1;
35
+ `
36
+ } ,
37
+ {
38
+ path : "/project/a/index.ts" ,
39
+ content : `import "../shared";`
40
+ } ,
41
+ {
42
+ path : `/project/b/tsconfig.json` ,
43
+ content : `{ "compilerOptions": { "paths": { "foo": ["./foo.d.ts"] } }, "files": ["./index.ts", "./foo.d.ts"] }`
44
+ } ,
45
+ {
46
+ path : `/project/b/foo.d.ts` ,
47
+ content : Utils . dedent `
48
+ export const foo_b = 1;
49
+ `
50
+ } ,
51
+ {
52
+ path : "/project/b/index.ts" ,
53
+ content : `import "../shared";`
54
+ }
55
+ ] ;
56
+
57
+ const host = createServerHost ( files , { executingFilePath : "/project/tsc.js" , useCaseSensitiveFileNames : true } ) ;
58
+ const projectService = createProjectService ( host ) ;
59
+ projectService . openClientFile ( files [ 3 ] . path ) ;
60
+ projectService . openClientFile ( files [ 6 ] . path ) ;
61
+ projectService . checkNumberOfProjects ( { configuredProjects : 2 } ) ;
62
+ const proj1Diags = projectService . configuredProjects . get ( files [ 1 ] . path ) ! . getLanguageService ( ) . getProgram ( ) ! . getSemanticDiagnostics ( ) ;
63
+ Debug . assertEqual ( proj1Diags . length , 0 ) ;
64
+ const proj2Diags = projectService . configuredProjects . get ( files [ 4 ] . path ) ! . getLanguageService ( ) . getProgram ( ) ! . getSemanticDiagnostics ( ) ;
65
+ Debug . assertEqual ( proj2Diags . length , 1 ) ;
66
+ } ) ;
18
67
} ) ;
19
68
}
0 commit comments