@@ -64,7 +64,14 @@ describe('ts user preferences', function () {
6464 typescript : { ...getPreferences ( ) , ...preferences } ,
6565 javascript : { ...getPreferences ( ) , ...preferences }
6666 } ) ;
67- return new LSAndTSDocResolver ( docManager , [ pathToUrl ( testFilesDir ) ] , configManager ) ;
67+ return {
68+ lsAndTsDocResolver : new LSAndTSDocResolver (
69+ docManager ,
70+ [ pathToUrl ( testFilesDir ) ] ,
71+ configManager
72+ ) ,
73+ configManager
74+ } ;
6875 }
6976
7077 function getDefaultPreferences ( ) : TsUserPreferencesConfig {
@@ -79,11 +86,8 @@ describe('ts user preferences', function () {
7986
8087 it ( 'provides auto import completion according to preferences' , async ( ) => {
8188 const { docManager, document } = setup ( 'code-action.svelte' ) ;
82- const lsAndTsDocResolver = createLSAndTSDocResolver ( docManager ) ;
83- const completionProvider = new CompletionsProviderImpl (
84- lsAndTsDocResolver ,
85- new LSConfigManager ( )
86- ) ;
89+ const { lsAndTsDocResolver, configManager } = createLSAndTSDocResolver ( docManager ) ;
90+ const completionProvider = new CompletionsProviderImpl ( lsAndTsDocResolver , configManager ) ;
8791
8892 const completions = await completionProvider . getCompletions (
8993 document ,
@@ -102,15 +106,13 @@ describe('ts user preferences', function () {
102106 context : CodeActionContext
103107 ) {
104108 const { docManager, document } = setup ( filename ) ;
105- const lsAndTsDocResolver = createLSAndTSDocResolver ( docManager ) ;
106- const completionProvider = new CompletionsProviderImpl (
107- lsAndTsDocResolver ,
108- new LSConfigManager ( )
109- ) ;
109+ const { lsAndTsDocResolver, configManager } = createLSAndTSDocResolver ( docManager ) ;
110+ const completionProvider = new CompletionsProviderImpl ( lsAndTsDocResolver , configManager ) ;
111+
110112 const codeActionProvider = new CodeActionsProviderImpl (
111113 lsAndTsDocResolver ,
112114 completionProvider ,
113- new LSConfigManager ( )
115+ configManager
114116 ) ;
115117
116118 const codeAction = await codeActionProvider . getCodeActions ( document , range , context ) ;
@@ -137,7 +139,7 @@ describe('ts user preferences', function () {
137139
138140 it ( 'provides auto import suggestions according to preferences' , async ( ) => {
139141 const { docManager, document } = setup ( 'code-action.svelte' ) ;
140- const lsAndTsDocResolver = createLSAndTSDocResolver ( docManager , {
142+ const { lsAndTsDocResolver, configManager } = createLSAndTSDocResolver ( docManager , {
141143 suggest : {
142144 autoImports : false ,
143145 includeAutomaticOptionalChainCompletions : undefined ,
@@ -147,10 +149,7 @@ describe('ts user preferences', function () {
147149 includeCompletionsWithSnippetText : undefined
148150 }
149151 } ) ;
150- const completionProvider = new CompletionsProviderImpl (
151- lsAndTsDocResolver ,
152- new LSConfigManager ( )
153- ) ;
152+ const completionProvider = new CompletionsProviderImpl ( lsAndTsDocResolver , configManager ) ;
154153
155154 const completions = await completionProvider . getCompletions (
156155 document ,
@@ -165,14 +164,14 @@ describe('ts user preferences', function () {
165164
166165 function setupImportModuleSpecifierEndingJs ( ) {
167166 const { docManager, document } = setup ( 'module-specifier-js.svelte' ) ;
168- const lsAndTsDocResolver = createLSAndTSDocResolver ( docManager , {
167+ const { lsAndTsDocResolver, configManager } = createLSAndTSDocResolver ( docManager , {
169168 preferences : {
170169 ...getDefaultPreferences ( ) ,
171170 importModuleSpecifierEnding : 'js'
172171 }
173172 } ) ;
174173
175- return { document, lsAndTsDocResolver } ;
174+ return { document, lsAndTsDocResolver, configManager } ;
176175 }
177176
178177 it ( 'provides auto import for svelte component when importModuleSpecifierEnding is js' , async ( ) => {
@@ -248,16 +247,13 @@ describe('ts user preferences', function () {
248247
249248 async function testExcludeDefinitionDir ( pattern : string ) {
250249 const { docManager, document } = setup ( 'code-action.svelte' ) ;
251- const lsAndTsDocResolver = createLSAndTSDocResolver ( docManager , {
250+ const { lsAndTsDocResolver, configManager } = createLSAndTSDocResolver ( docManager , {
252251 preferences : {
253252 ...getDefaultPreferences ( ) ,
254253 autoImportFileExcludePatterns : [ pattern ]
255254 }
256255 } ) ;
257- const completionProvider = new CompletionsProviderImpl (
258- lsAndTsDocResolver ,
259- new LSConfigManager ( )
260- ) ;
256+ const completionProvider = new CompletionsProviderImpl ( lsAndTsDocResolver , configManager ) ;
261257
262258 const completions = await completionProvider . getCompletions (
263259 document ,
@@ -280,4 +276,24 @@ describe('ts user preferences', function () {
280276 it ( 'exclude auto import (**/ pattern)' , async ( ) => {
281277 await testExcludeDefinitionDir ( '**/definition' ) ;
282278 } ) ;
279+
280+ it ( 'exclude auto import outside of the root' , async ( ) => {
281+ const { docManager, document } = setup ( 'code-action-outside-root.svelte' ) ;
282+ const { lsAndTsDocResolver, configManager } = createLSAndTSDocResolver ( docManager , {
283+ preferences : {
284+ ...getDefaultPreferences ( ) ,
285+ autoImportFileExcludePatterns : [ 'definitions.ts' ]
286+ }
287+ } ) ;
288+ const completionProvider = new CompletionsProviderImpl ( lsAndTsDocResolver , configManager ) ;
289+
290+ const completions = await completionProvider . getCompletions (
291+ document ,
292+ Position . create ( 4 , 7 )
293+ ) ;
294+
295+ const item = completions ?. items . find ( ( item ) => item . label === 'blubb' ) ;
296+
297+ assert . equal ( item , undefined ) ;
298+ } ) ;
283299} ) ;
0 commit comments