@@ -101,16 +101,19 @@ fileCompleterTests =
101101 " File Completer Tests"
102102 [ testCase " Current Directory - no leading ./ by default" $ do
103103 completions <- completeFilePath " " filePathComplTestDir
104- completions @?== [" .hidden" , " Content.hs" , " dir1/" , " dir2/" , " textfile.txt" , " main-is.cabal" ],
104+ completions @?== [" .hidden" , " Content.hs" , " Dir4/ " , " dir1/" , " dir2/" , " textfile.txt" , " main-is.cabal" ],
105105 testCase " Current Directory - alternative writing" $ do
106106 completions <- completeFilePath " ./" filePathComplTestDir
107- completions @?== [" ./.hidden" , " ./Content.hs" , " ./dir1/" , " ./dir2/" , " ./textfile.txt" , " ./main-is.cabal" ],
107+ completions @?== [" ./.hidden" , " ./Content.hs" , " ./Dir4/ " , " ./ dir1/" , " ./dir2/" , " ./textfile.txt" , " ./main-is.cabal" ],
108108 testCase " Current Directory - hidden file start" $ do
109109 completions <- completeFilePath " ." filePathComplTestDir
110110 completions @?== [" Content.hs" , " .hidden" , " textfile.txt" , " main-is.cabal" ],
111111 testCase " Current Directory - incomplete directory path written" $ do
112112 completions <- completeFilePath " di" filePathComplTestDir
113- completions @?== [" dir1/" , " dir2/" ],
113+ completions @?== [" dir1/" , " dir2/" ," Dir4/" ],
114+ testCase " Current Directory - fuzzy Smart casing" $ do
115+ completions <- completeFilePath " Dr" filePathComplTestDir
116+ completions @?== [" Dir4/" ],
114117 testCase " Current Directory - incomplete filepath written" $ do
115118 completions <- completeFilePath " te" filePathComplTestDir
116119 completions @?== [" Content.hs" , " textfile.txt" ],
@@ -120,6 +123,12 @@ fileCompleterTests =
120123 testCase " Subdirectory - incomplete filepath written" $ do
121124 completions <- completeFilePath " dir2/dir3/MA" filePathComplTestDir
122125 completions @?== [" dir2/dir3/MARKDOWN.md" ],
126+ testCase " Subdirectory - lowerCase" $ do
127+ completions <- completeFilePath " dir2/dir3/md" filePathComplTestDir
128+ completions @?== [" dir2/dir3/MARKDOWN.md" ],
129+ testCase " Subdirectory - smart casing mismatch" $ do
130+ completions <- completeFilePath " dir2/dir3/Ma" filePathComplTestDir
131+ completions @?== [] ,
123132 testCase " Nonexistent directory" $ do
124133 completions <- completeFilePath " dir2/dir4/" filePathComplTestDir
125134 completions @?== []
@@ -171,7 +180,7 @@ filePathCompletionContextTests =
171180 queryDirectory = " " ,
172181 workingDirectory = filePathComplTestDir
173182 }
174- compls @?== [" .hidden" , " Content.hs" , " dir1/" , " dir2/" , " textfile.txt" , " main-is.cabal" ],
183+ compls @?== [" .hidden" , " Content.hs" , " Dir4/ " , " dir1/" , " dir2/" , " textfile.txt" , " main-is.cabal" ],
175184 testCase " In directory" $ do
176185 compls <-
177186 listFileCompletions
@@ -200,13 +209,19 @@ directoryCompleterTests =
200209 " Directory Completer Tests"
201210 [ testCase " Current Directory - no leading ./ by default" $ do
202211 completions <- completeDirectory " " filePathComplTestDir
203- completions @?== [" dir1/" , " dir2/" ],
212+ completions @?== [" Dir4/ " , " dir1/" , " dir2/" ],
204213 testCase " Current Directory - alternative writing" $ do
205214 completions <- completeDirectory " ./" filePathComplTestDir
206- completions @?== [" ./dir1/" , " ./dir2/" ],
215+ completions @?== [" ./Dir4/ " , " ./ dir1/" , " ./dir2/" ],
207216 testCase " Current Directory - incomplete directory path written" $ do
208- completions <- completeDirectory " di" filePathComplTestDir
209- completions @?== [" dir1/" , " dir2/" ],
217+ completions <- completeDirectory " dr" filePathComplTestDir
218+ completions @?== [" Dir4/" , " dir1/" , " dir2/" ],
219+ testCase " Current Directory - correct smart casing" $ do
220+ completions <- completeDirectory " Dr" filePathComplTestDir
221+ completions @?== [" Dir4/" ],
222+ testCase " Current Directory - incorrect smart casing" $ do
223+ completions <- completeDirectory " DI" filePathComplTestDir
224+ completions @?== [] ,
210225 testCase " Current Directory - incomplete filepath written" $ do
211226 completions <- completeDirectory " te" filePathComplTestDir
212227 completions @?== [] ,
@@ -315,7 +330,16 @@ exposedModuleCompleterTests =
315330 completions @?== [" File3" ],
316331 testCase " Name nothing but not library" $ do
317332 completions <- callModulesCompleter Nothing sourceDirsExtractionTestSuite " 3"
318- completions @?== []
333+ completions @?== [] ,
334+ testCase " Exposed modules - smart casing rejects mixed-case mismatch" $ do
335+ completions <- callModulesCompleter (Just " benchie" ) sourceDirsExtractionBenchmark " FL"
336+ completions @?== [] ,
337+ testCase " Exposed modules - smart casing preserves fuzzy matching" $ do
338+ completions <- callModulesCompleter (Just " benchie" ) sourceDirsExtractionBenchmark " Fl1"
339+ completions @?== [" File1" ],
340+ testCase " Exposed modules - lowercase remains case-insensitive" $ do
341+ completions <- callModulesCompleter (Just " benchie" ) sourceDirsExtractionBenchmark " fl"
342+ completions @?== [" File1" ]
319343 ]
320344 where
321345 callModulesCompleter :: Maybe StanzaName -> (Maybe StanzaName -> GenericPackageDescription -> [FilePath ]) -> T. Text -> IO [T. Text ]
0 commit comments