haskell-tools-daemon 0.4.1.0 → 0.4.1.1
raw patch · 46 files changed
+444/−19 lines, 46 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- Language/Haskell/Tools/Refactor/Daemon.hs +12/−9
- examples/Project/changing-cabal/A.hs +3/−0
- examples/Project/changing-cabal/B.hs +5/−0
- examples/Project/changing-cabal/some-test-package.cabal +18/−0
- examples/Project/has-cabal/A.hs +3/−0
- examples/Project/has-cabal/some-test-package.cabal +18/−0
- examples/Project/has-th/A.hs +6/−0
- examples/Project/has-th/TH.hs +6/−0
- examples/Project/hs-boots/A.hs +5/−0
- examples/Project/hs-boots/A.hs-boot +3/−0
- examples/Project/hs-boots/B.hs +5/−0
- examples/Project/hs-boots/B.hs-boot +3/−0
- examples/Project/multi-packages-dependent/package1/A.hs +3/−0
- examples/Project/multi-packages-dependent/package1/package1.cabal +18/−0
- examples/Project/multi-packages-dependent/package2/B.hs +5/−0
- examples/Project/multi-packages-dependent/package2/package2.cabal +18/−0
- examples/Project/multi-packages-flags/package1/A.hs +3/−0
- examples/Project/multi-packages-flags/package1/package1.cabal +19/−0
- examples/Project/multi-packages-flags/package2/B.hs +3/−0
- examples/Project/multi-packages-flags/package2/package2.cabal +19/−0
- examples/Project/multi-packages-same-module/package1/A.hs +3/−0
- examples/Project/multi-packages-same-module/package1/package1.cabal +18/−0
- examples/Project/multi-packages-same-module/package2/A.hs +1/−0
- examples/Project/multi-packages-same-module/package2/package2.cabal +18/−0
- examples/Project/multi-packages/package1/A.hs +3/−0
- examples/Project/multi-packages/package1/package1.cabal +18/−0
- examples/Project/multi-packages/package2/B.hs +3/−0
- examples/Project/multi-packages/package2/package2.cabal +18/−0
- examples/Project/no-cabal/A.hs +3/−0
- examples/Project/reloading/A.hs +5/−0
- examples/Project/reloading/B.hs +5/−0
- examples/Project/reloading/C.hs +3/−0
- examples/Project/selection/B.hs +5/−0
- examples/Project/selection/C.hs +3/−0
- examples/Project/simple-refactor/A.hs +3/−0
- examples/Project/simple-refactor/some-test-package.cabal +18/−0
- examples/Project/source-dir-outside/some-test-package.cabal +19/−0
- examples/Project/source-dir/some-test-package.cabal +19/−0
- examples/Project/source-dir/src/A.hs +3/−0
- examples/Project/src/A.hs +3/−0
- examples/Project/th-added-later/package1/A.hs +6/−0
- examples/Project/th-added-later/package1/package1.cabal +18/−0
- examples/Project/th-added-later/package2/B.hs +6/−0
- examples/Project/th-added-later/package2/package2.cabal +18/−0
- haskell-tools-daemon.cabal +39/−2
- test/Main.hs +11/−8
Language/Haskell/Tools/Refactor/Daemon.hs view
@@ -126,15 +126,18 @@ modify $ refSessMCs .- filter (not . isTheAdded) -- remove the added package from the database forM_ existing $ \mn -> removeTarget (TargetModule (GHC.moduleName mn)) modifySession (\s -> s { hsc_mod_graph = filter (not . (`elem` existing) . ms_mod) (hsc_mod_graph s) }) - (modules, ignoredMods) <- loadPackagesFrom (return . getModSumOrig) packagePathes - mapM_ (reloadModule (\_ -> return ())) needToReload -- don't report consequent reloads (not expected) - liftIO $ resp - $ if not (null ignoredMods) - then ErrorMessage - $ "The following modules are ignored: " - ++ concat (intersperse ", " ignoredMods) - ++ ". Multiple modules with the same qualified name are not supported." - else LoadedModules modules + res <- loadPackagesFrom (return . getModSumOrig) packagePathes + case res of + Right (modules, ignoredMods) -> do + mapM_ (reloadModule (\_ -> return ())) needToReload -- don't report consequent reloads (not expected) + liftIO $ resp + $ if not (null ignoredMods) + then ErrorMessage + $ "The following modules are ignored: " + ++ concat (intersperse ", " ignoredMods) + ++ ". Multiple modules with the same qualified name are not supported." + else LoadedModules modules + Left err -> liftIO $ resp $ CompilationProblem err return True where isTheAdded mc = (mc ^. mcRoot) `elem` packagePathes
+ examples/Project/changing-cabal/A.hs view
@@ -0,0 +1,3 @@+module A where + +x = ()
+ examples/Project/changing-cabal/B.hs view
@@ -0,0 +1,5 @@+module B where + +import A + +y = x
+ examples/Project/changing-cabal/some-test-package.cabal view
@@ -0,0 +1,18 @@+name: some-test-package +version: 1.2.3.4 +synopsis: A package just for testing Haskell-tools support. Don't install it. +description: + +homepage: https://github.com/nboldi/haskell-tools +license: BSD3 +license-file: LICENSE +author: Boldizsar Nemeth +maintainer: nboldi@elte.hu +category: Language +build-type: Simple +cabal-version: >=1.10 + +library + build-depends: base + default-language: Haskell2010 + exposed-modules: A
+ examples/Project/has-cabal/A.hs view
@@ -0,0 +1,3 @@+module A where + +x = ()
+ examples/Project/has-cabal/some-test-package.cabal view
@@ -0,0 +1,18 @@+name: some-test-package +version: 1.2.3.4 +synopsis: A package just for testing Haskell-tools support. Don't install it. +description: + +homepage: https://github.com/nboldi/haskell-tools +license: BSD3 +license-file: LICENSE +author: Boldizsar Nemeth +maintainer: nboldi@elte.hu +category: Language +build-type: Simple +cabal-version: >=1.10 + +library + exposed-modules: A + build-depends: base + default-language: Haskell2010
+ examples/Project/has-th/A.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE TemplateHaskell #-} +module A where + +import TH + +x
+ examples/Project/has-th/TH.hs view
@@ -0,0 +1,6 @@+module TH where + +import Language.Haskell.TH + +x :: Q [Dec] +x = return []
+ examples/Project/hs-boots/A.hs view
@@ -0,0 +1,5 @@+module A where + +import {-# SOURCE #-} B + +a = b
+ examples/Project/hs-boots/A.hs-boot view
@@ -0,0 +1,3 @@+module A where + +a :: ()
+ examples/Project/hs-boots/B.hs view
@@ -0,0 +1,5 @@+module B where + +import {-# SOURCE #-} A + +b = a
+ examples/Project/hs-boots/B.hs-boot view
@@ -0,0 +1,3 @@+module B where + +b :: ()
+ examples/Project/multi-packages-dependent/package1/A.hs view
@@ -0,0 +1,3 @@+module A where + +x = ()
+ examples/Project/multi-packages-dependent/package1/package1.cabal view
@@ -0,0 +1,18 @@+name: package1 +version: 1.2.3.4 +synopsis: A package just for testing Haskell-tools support. Don't install it. +description: + +homepage: https://github.com/nboldi/haskell-tools +license: BSD3 +license-file: LICENSE +author: Boldizsar Nemeth +maintainer: nboldi@elte.hu +category: Language +build-type: Simple +cabal-version: >=1.10 + +library + exposed-modules: A + build-depends: base + default-language: Haskell2010
+ examples/Project/multi-packages-dependent/package2/B.hs view
@@ -0,0 +1,5 @@+module B where + +import A + +y = x
+ examples/Project/multi-packages-dependent/package2/package2.cabal view
@@ -0,0 +1,18 @@+name: package2 +version: 1.2.3.4 +synopsis: A package just for testing Haskell-tools support. Don't install it. +description: + +homepage: https://github.com/nboldi/haskell-tools +license: BSD3 +license-file: LICENSE +author: Boldizsar Nemeth +maintainer: nboldi@elte.hu +category: Language +build-type: Simple +cabal-version: >=1.10 + +library + exposed-modules: B + build-depends: base, package1 + default-language: Haskell2010
+ examples/Project/multi-packages-flags/package1/A.hs view
@@ -0,0 +1,3 @@+module A where + +x = \case () -> ()
+ examples/Project/multi-packages-flags/package1/package1.cabal view
@@ -0,0 +1,19 @@+name: package1 +version: 1.2.3.4 +synopsis: A package just for testing Haskell-tools support. Don't install it. +description: + +homepage: https://github.com/nboldi/haskell-tools +license: BSD3 +license-file: LICENSE +author: Boldizsar Nemeth +maintainer: nboldi@elte.hu +category: Language +build-type: Simple +cabal-version: >=1.10 + +library + exposed-modules: A + build-depends: base + default-language: Haskell2010 + default-extensions: LambdaCase
+ examples/Project/multi-packages-flags/package2/B.hs view
@@ -0,0 +1,3 @@+module B where + +x = (,())
+ examples/Project/multi-packages-flags/package2/package2.cabal view
@@ -0,0 +1,19 @@+name: package2 +version: 1.2.3.4 +synopsis: A package just for testing Haskell-tools support. Don't install it. +description: + +homepage: https://github.com/nboldi/haskell-tools +license: BSD3 +license-file: LICENSE +author: Boldizsar Nemeth +maintainer: nboldi@elte.hu +category: Language +build-type: Simple +cabal-version: >=1.10 + +library + exposed-modules: B + build-depends: base + default-language: Haskell2010 + default-extensions: TupleSections
+ examples/Project/multi-packages-same-module/package1/A.hs view
@@ -0,0 +1,3 @@+module A where + +x = ()
+ examples/Project/multi-packages-same-module/package1/package1.cabal view
@@ -0,0 +1,18 @@+name: package1 +version: 1.2.3.4 +synopsis: A package just for testing Haskell-tools support. Don't install it. +description: + +homepage: https://github.com/nboldi/haskell-tools +license: BSD3 +license-file: LICENSE +author: Boldizsar Nemeth +maintainer: nboldi@elte.hu +category: Language +build-type: Simple +cabal-version: >=1.10 + +library + exposed-modules: A + build-depends: base + default-language: Haskell2010
+ examples/Project/multi-packages-same-module/package2/A.hs view
@@ -0,0 +1,1 @@+module A where
+ examples/Project/multi-packages-same-module/package2/package2.cabal view
@@ -0,0 +1,18 @@+name: package2 +version: 1.2.3.4 +synopsis: A package just for testing Haskell-tools support. Don't install it. +description: + +homepage: https://github.com/nboldi/haskell-tools +license: BSD3 +license-file: LICENSE +author: Boldizsar Nemeth +maintainer: nboldi@elte.hu +category: Language +build-type: Simple +cabal-version: >=1.10 + +library + exposed-modules: A + build-depends: base + default-language: Haskell2010
+ examples/Project/multi-packages/package1/A.hs view
@@ -0,0 +1,3 @@+module A where + +x = ()
+ examples/Project/multi-packages/package1/package1.cabal view
@@ -0,0 +1,18 @@+name: package1 +version: 1.2.3.4 +synopsis: A package just for testing Haskell-tools support. Don't install it. +description: + +homepage: https://github.com/nboldi/haskell-tools +license: BSD3 +license-file: LICENSE +author: Boldizsar Nemeth +maintainer: nboldi@elte.hu +category: Language +build-type: Simple +cabal-version: >=1.10 + +library + exposed-modules: A + build-depends: base + default-language: Haskell2010
+ examples/Project/multi-packages/package2/B.hs view
@@ -0,0 +1,3 @@+module B where + +x = ()
+ examples/Project/multi-packages/package2/package2.cabal view
@@ -0,0 +1,18 @@+name: package2 +version: 1.2.3.4 +synopsis: A package just for testing Haskell-tools support. Don't install it. +description: + +homepage: https://github.com/nboldi/haskell-tools +license: BSD3 +license-file: LICENSE +author: Boldizsar Nemeth +maintainer: nboldi@elte.hu +category: Language +build-type: Simple +cabal-version: >=1.10 + +library + exposed-modules: B + build-depends: base + default-language: Haskell2010
+ examples/Project/no-cabal/A.hs view
@@ -0,0 +1,3 @@+module A where + +x = ()
+ examples/Project/reloading/A.hs view
@@ -0,0 +1,5 @@+module A where + +import B + +a = b
+ examples/Project/reloading/B.hs view
@@ -0,0 +1,5 @@+module B where + +import C + +b = c
+ examples/Project/reloading/C.hs view
@@ -0,0 +1,3 @@+module C where + +c = ()
+ examples/Project/selection/B.hs view
@@ -0,0 +1,5 @@+module B where + +import C + +b = c
+ examples/Project/selection/C.hs view
@@ -0,0 +1,3 @@+module C where + +c = ()
+ examples/Project/simple-refactor/A.hs view
@@ -0,0 +1,3 @@+module A where + +x = ()
+ examples/Project/simple-refactor/some-test-package.cabal view
@@ -0,0 +1,18 @@+name: some-test-package +version: 1.2.3.4 +synopsis: A package just for testing Haskell-tools support. Don't install it. +description: + +homepage: https://github.com/nboldi/haskell-tools +license: BSD3 +license-file: LICENSE +author: Boldizsar Nemeth +maintainer: nboldi@elte.hu +category: Language +build-type: Simple +cabal-version: >=1.10 + +library + exposed-modules: A + build-depends: base + default-language: Haskell2010
+ examples/Project/source-dir-outside/some-test-package.cabal view
@@ -0,0 +1,19 @@+name: some-test-package +version: 1.2.3.4 +synopsis: A package just for testing Haskell-tools support. Don't install it. +description: + +homepage: https://github.com/nboldi/haskell-tools +license: BSD3 +license-file: LICENSE +author: Boldizsar Nemeth +maintainer: nboldi@elte.hu +category: Language +build-type: Simple +cabal-version: >=1.10 + +library + exposed-modules: A + hs-source-dirs: ../src + build-depends: base + default-language: Haskell2010
+ examples/Project/source-dir/some-test-package.cabal view
@@ -0,0 +1,19 @@+name: some-test-package +version: 1.2.3.4 +synopsis: A package just for testing Haskell-tools support. Don't install it. +description: + +homepage: https://github.com/nboldi/haskell-tools +license: BSD3 +license-file: LICENSE +author: Boldizsar Nemeth +maintainer: nboldi@elte.hu +category: Language +build-type: Simple +cabal-version: >=1.10 + +library + exposed-modules: A + hs-source-dirs: src + build-depends: base + default-language: Haskell2010
+ examples/Project/source-dir/src/A.hs view
@@ -0,0 +1,3 @@+module A where + +x = ()
+ examples/Project/src/A.hs view
@@ -0,0 +1,3 @@+module A where + +x = ()
+ examples/Project/th-added-later/package1/A.hs view
@@ -0,0 +1,6 @@+module A where + +import Language.Haskell.TH + +x :: Q [Dec] +x = return []
+ examples/Project/th-added-later/package1/package1.cabal view
@@ -0,0 +1,18 @@+name: package1 +version: 1.2.3.4 +synopsis: A package just for testing Haskell-tools support. Don't install it. +description: + +homepage: https://github.com/nboldi/haskell-tools +license: BSD3 +license-file: LICENSE +author: Boldizsar Nemeth +maintainer: nboldi@elte.hu +category: Language +build-type: Simple +cabal-version: >=1.10 + +library + exposed-modules: A + build-depends: base + default-language: Haskell2010
+ examples/Project/th-added-later/package2/B.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE TemplateHaskell #-} +module B where + +import A + +x
+ examples/Project/th-added-later/package2/package2.cabal view
@@ -0,0 +1,18 @@+name: package2 +version: 1.2.3.4 +synopsis: A package just for testing Haskell-tools support. Don't install it. +description: + +homepage: https://github.com/nboldi/haskell-tools +license: BSD3 +license-file: LICENSE +author: Boldizsar Nemeth +maintainer: nboldi@elte.hu +category: Language +build-type: Simple +cabal-version: >=1.10 + +library + exposed-modules: B + build-depends: base, package1 + default-language: Haskell2010
haskell-tools-daemon.cabal view
@@ -1,5 +1,5 @@ name: haskell-tools-daemon -version: 0.4.1.0 +version: 0.4.1.1 synopsis: Background process for Haskell-tools refactor that editors can connect to. description: Background process for Haskell-tools refactor that editors can connect to. homepage: https://github.com/haskell-tools/haskell-tools @@ -11,6 +11,43 @@ build-type: Simple cabal-version: >=1.10 +extra-source-files: examples/Project/has-cabal/*.hs + , examples/Project/has-cabal/*.cabal + , examples/Project/changing-cabal/*.hs + , examples/Project/changing-cabal/*.cabal + , examples/Project/has-th/*.hs + , examples/Project/hs-boots/*.hs + , examples/Project/hs-boots/*.hs-boot + , examples/Project/multi-packages/package1/*.hs + , examples/Project/multi-packages/package1/*.cabal + , examples/Project/multi-packages/package2/*.hs + , examples/Project/multi-packages/package2/*.cabal + , examples/Project/multi-packages-dependent/package1/*.hs + , examples/Project/multi-packages-dependent/package1/*.cabal + , examples/Project/multi-packages-dependent/package2/*.hs + , examples/Project/multi-packages-dependent/package2/*.cabal + , examples/Project/multi-packages-flags/package1/*.hs + , examples/Project/multi-packages-flags/package1/*.cabal + , examples/Project/multi-packages-flags/package2/*.hs + , examples/Project/multi-packages-flags/package2/*.cabal + , examples/Project/multi-packages-same-module/package1/*.hs + , examples/Project/multi-packages-same-module/package1/*.cabal + , examples/Project/multi-packages-same-module/package2/*.hs + , examples/Project/multi-packages-same-module/package2/*.cabal + , examples/Project/no-cabal/*.hs + , examples/Project/reloading/*.hs + , examples/Project/selection/*.hs + , examples/Project/simple-refactor/*.hs + , examples/Project/simple-refactor/*.cabal + , examples/Project/source-dir/*.cabal + , examples/Project/source-dir/src/*.hs + , examples/Project/source-dir-outside/*.cabal + , examples/Project/src/*.hs + , examples/Project/th-added-later/package1/*.hs + , examples/Project/th-added-later/package1/*.cabal + , examples/Project/th-added-later/package2/*.hs + , examples/Project/th-added-later/package2/*.cabal + library ghc-options: -O2 build-depends: base >= 4.9 && < 5.0 @@ -43,7 +80,7 @@ test-suite haskell-tools-daemon-tests type: exitcode-stdio-1.0 - ghc-options: -with-rtsopts=-M2g -O2 + ghc-options: -with-rtsopts=-M2.5g -O2 hs-source-dirs: test main-is: Main.hs build-depends: base >= 4.9 && < 4.10
test/Main.hs view
@@ -6,6 +6,7 @@ import System.Exit import System.Directory import System.FilePath +import System.Environment import Control.Monad import Control.Exception import Control.Concurrent @@ -28,12 +29,13 @@ -- with separate processes it is not a problem forkIO $ runDaemon ["4123", "True"] tr <- canonicalizePath testRoot - defaultMain (allTests tr) + isStackRun <- isJust <$> lookupEnv "STACK_ROOT" + defaultMain (allTests isStackRun tr) stopDaemon -allTests :: FilePath -> TestTree -allTests testRoot - = localOption (mkTimeout ({- 10s -} 1000 * 1000 * 10)) +allTests :: Bool -> FilePath -> TestTree +allTests isSource testRoot + = localOption (mkTimeout ({- 20s -} 1000 * 1000 * 20)) $ testGroup "daemon-tests" [ testGroup "simple-tests" $ map (makeDaemonTest . (\(label, input, output) -> (Nothing, label, input, output))) simpleTests @@ -43,7 +45,8 @@ $ map (makeDaemonTest . (\(label, dir, input, output) -> (Just (testRoot </> dir), label, input, output))) (refactorTests testRoot) , testGroup "reload-tests" $ map makeReloadTest reloadingTests - , selfLoadingTest + -- cannot execute this when the source is not present + , if isSource then selfLoadingTest else testCase "IGNORED self-load" (return ()) ] testSuffix = "_test" @@ -97,9 +100,9 @@ sourceRoot = ".." </> ".." </> "src" selfLoadingTest :: TestTree -selfLoadingTest = localOption (mkTimeout ({- 2 min -} 1000 * 1000 * 60 * 2)) $ testCase "self-load" $ do +selfLoadingTest = localOption (mkTimeout ({- 5 min -} 1000 * 1000 * 60 * 5)) $ testCase "self-load" $ do actual <- communicateWithDaemon - [ Right $ AddPackages (map (sourceRoot </>) ["ast" {-, "backend-ghc", "prettyprint", "rewrite", "refactor", "cli", "daemon" -} ] ) ] + [ Right $ AddPackages (map (sourceRoot </>) ["ast", "backend-ghc", "prettyprint", "rewrite", "refactor", "daemon"] ) ] assertBool ("The expected result is a nonempty response message list that does not contain errors. Actual result: " ++ show actual) (not (null actual) && all (\case ErrorMessage {} -> False; _ -> True) actual) @@ -265,7 +268,7 @@ sendAll sock $ encode Stop close sock -testRoot = ".." </> ".." </> "examples" </> "Project" +testRoot = "examples" </> "Project" deriving instance Eq ResponseMsg instance FromJSON ResponseMsg