Skip to content

Commit b1c81a1

Browse files
VeryMilkyJoeVeryMilkyJoe
VeryMilkyJoe
authored andcommitted
Try to get tests working on windows
1 parent 3a4af52 commit b1c81a1

File tree

2 files changed

+32
-31
lines changed

2 files changed

+32
-31
lines changed

plugins/hls-cabal-plugin/src/Ide/Plugin/Cabal/Completions.hs

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,28 @@
44

55
module Ide.Plugin.Cabal.Completions where
66

7-
import Control.Exception (try)
8-
import Control.Exception.Extra (evaluate)
9-
import Control.Monad (filterM, forM)
10-
import qualified Data.List as List
11-
import qualified Data.List.Extra as Extra
12-
import Data.Map (Map)
13-
import qualified Data.Map as Map
14-
import Data.Maybe (fromMaybe)
15-
import qualified Data.Text as T
16-
import Development.IDE as D
17-
import Distribution.CabalSpecVersion (CabalSpecVersion (CabalSpecV1_2),
18-
showCabalSpecVersion)
19-
import Distribution.Compat.Lens ((^.))
20-
import qualified Language.LSP.Types as J
21-
import qualified Language.LSP.Types.Lens as JL
22-
import qualified Language.LSP.VFS as VFS
23-
import System.Directory (doesDirectoryExist,
24-
doesFileExist, listDirectory)
25-
import System.FilePath
26-
import qualified Text.Fuzzy.Parallel as Fuzzy
27-
import Ide.Plugin.Cabal.LicenseSuggest (licenseNames)
7+
import Control.Exception (try)
8+
import Control.Exception.Extra (evaluate)
9+
import Control.Monad (filterM, forM)
10+
import qualified Data.List as List
11+
import qualified Data.List.Extra as Extra
12+
import Data.Map (Map)
13+
import qualified Data.Map as Map
14+
import Data.Maybe (fromMaybe)
15+
import qualified Data.Text as T
16+
import Development.IDE as D
17+
import Distribution.CabalSpecVersion (CabalSpecVersion (CabalSpecV1_2),
18+
showCabalSpecVersion)
19+
import Distribution.Compat.Lens ((^.))
20+
import Ide.Plugin.Cabal.LicenseSuggest (licenseNames)
21+
import qualified Language.LSP.Types as J
22+
import qualified Language.LSP.Types.Lens as JL
23+
import qualified Language.LSP.VFS as VFS
24+
import System.Directory (doesDirectoryExist,
25+
doesFileExist, listDirectory)
26+
import qualified System.FilePath as FP
27+
import qualified System.FilePath.Posix as Posix
28+
import qualified Text.Fuzzy.Parallel as Fuzzy
2829

2930
-- | Takes information needed to build possible completion items
3031
-- and returns the list of possible completion items
@@ -91,11 +92,11 @@ contextToCompleter :: Context -> Completer
9192
-- if we are in the top level of the cabal file and not in a keyword context,
9293
-- we can write any top level keywords or a stanza declaration
9394
contextToCompleter (TopLevel, None) =
94-
constantCompleter $ Map.keys (cabalKeywords) ++ Map.keys stanzaKeywordMap
95+
constantCompleter $ Map.keys cabalKeywords ++ Map.keys stanzaKeywordMap
9596
-- if we are in a keyword context in the top level,
9697
-- we look up that keyword in the toplevel context and can complete its possible values
9798
contextToCompleter (TopLevel, KeyWord kw) =
98-
case Map.lookup kw (cabalKeywords) of
99+
case Map.lookup kw cabalKeywords of
99100
Nothing -> noopCompleter
100101
Just l -> l
101102
-- if we are in a stanza and not in a keyword context,
@@ -294,7 +295,7 @@ filePathCompleter ctx = do
294295
-- | Takes a suffix and a text and returns filepath with the suffix
295296
makeFullFilePath :: T.Text -> T.Text -> PathCompletionInfo -> IO T.Text
296297
makeFullFilePath suffix' completion' complInfo = do
297-
let fullPath' = prefixPathInfo complInfo </> T.unpack completion'
298+
let fullPath' = prefixPathInfo complInfo Posix.</> T.unpack completion'
298299
isFilePath <- doesFileExist fullPath'
299300
let fullPath = if isFilePath then fullPath' ++ T.unpack suffix' else fullPath'
300301
pure $ T.pack fullPath
@@ -306,7 +307,7 @@ listFileCompletions complInfo = do
306307
fixedDirs <- mapM
307308
(\d -> do
308309
isDir <- doesDirectoryExist $ mkDirFromCWD complInfo d
309-
pure $ if isDir then addTrailingPathSeparator d else d
310+
pure $ if isDir then Posix.addTrailingPathSeparator d else d
310311
)
311312
dirs
312313
pure fixedDirs
@@ -331,18 +332,18 @@ directoryCompleter ctx = do
331332
pathCompletionInfoFromCompletionContext :: CabalCompletionContext -> PathCompletionInfo
332333
pathCompletionInfoFromCompletionContext ctx = PathCompletionInfo
333334
{ prefixLeftOver = dirNamePrefix
334-
, prefixPathInfo = addTrailingPathSeparator $ takeDirectory prefix
335+
, prefixPathInfo = Posix.addTrailingPathSeparator $ Posix.takeDirectory prefix
335336
, cabalFilePathInfo = fp}
336337
where
337338
prefix = T.unpack $ completionPrefix ctx
338-
dirNamePrefix = T.pack $ takeFileName prefix
339-
fp = takeDirectory $ completionCabalFilePath ctx
339+
dirNamePrefix = T.pack $ Posix.takeFileName prefix
340+
fp = Posix.takeDirectory $ completionCabalFilePath ctx
340341

341342
mkCompletionDirectory :: PathCompletionInfo -> FilePath
342-
mkCompletionDirectory complInfo = addTrailingPathSeparator $ cabalFilePathInfo complInfo </> prefixPathInfo complInfo
343+
mkCompletionDirectory complInfo = FP.addTrailingPathSeparator $ cabalFilePathInfo complInfo FP.</> (FP.normalise $ prefixPathInfo complInfo)
343344

344345
mkDirFromCWD :: PathCompletionInfo -> FilePath -> FilePath
345-
mkDirFromCWD complInfo fp = addTrailingPathSeparator $ mkCompletionDirectory complInfo </> fp
346+
mkDirFromCWD complInfo fp = Posix.addTrailingPathSeparator $ mkCompletionDirectory complInfo Posix.</> Posix.normalise fp
346347

347348
data PathCompletionInfo = PathCompletionInfo
348349
{ prefixLeftOver :: T.Text

plugins/hls-cabal-plugin/test/Main.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import Ide.Plugin.Cabal.LicenseSuggest (licenseErrorSuggestion)
2323
import qualified Ide.Plugin.Cabal.Parse as Lib
2424
import qualified Language.LSP.Types.Lens as J
2525
import System.Directory (getCurrentDirectory)
26-
import System.FilePath
26+
import System.FilePath.Posix
2727
import Test.Hls
2828

2929
cabalPlugin :: PluginTestDescriptor Log

0 commit comments

Comments
 (0)