Skip to content

hie-bios can't load tests and executables in subdirs #200

Closed
@maksbotan

Description

@maksbotan

Hi,

I've noticed this strange behavior on projects with top-level cabal.project and *.cabal files in subdirs, like https://github.com/haskell-servant/servant.

First of all, versions. I use hie and hie-bios used by it is:

hie-bios version 0.5.0 compiled by GHC 8.8.3

Relevant parts of hie.yaml (generated with implicit-hie, but that should not matter):

cradle:
  cabal:
    - path: "servant-server/src"
      component: "lib:servant-server"

    - path: "servant-server/example/greet.hs"
      component: "servant-server:exe:greet"

    - path: "servant-server/test"
      component: "servant-server:test:spec"

Now, what happens if I try to load some file from the test suite:

$ hie-bios check servant-server/test/Servant/ServerSpec.hs 
hie-bios: can't find file: test/Spec.hs

So, for some reason something drops servant-test/ prefix from the path, although it's present in hie.yaml.

From hie logs:

2020-06-13 00:00:47.056703 [ThreadId 15] - New cradle: /Users/maksbotan/temp/servant/servant-server/test/Servant/ServerSpec.hs
2020-06-13 00:00:47.056912 [ThreadId 15] - Found "/Users/maksbotan/temp/servant/hie.yaml" for "/Users/maksbotan/temp/servant/servant-server/test/Servant/ServerSpec.hs"
2020-06-13 00:00:47.057219 [ThreadId 15] - Module "/Users/maksbotan/temp/servant/servant-server/test/Servant/ServerSpec.hs" is loaded by Cradle: Cradle {cradleRootDir = "/Users/mak
sbotan/temp/servant", cradleOptsProg = CradleAction: Cabal}
2020-06-13 00:00:47.057403 [ThreadId 15] - Found cradle: Cradle {cradleRootDir = "/Users/maksbotan/temp/servant", cradleOptsProg = CradleAction: Cabal}
2020-06-13 00:00:47.057557 [ThreadId 5] - <--2--{"jsonrpc":"2.0","params":{"value":{"kind":"end"},"token":464},"method":"$/progress"}
2020-06-13 00:00:47.05763 [ThreadId 5] - <--2--{"jsonrpc":"2.0","params":{"token":465},"method":"window/workDoneProgress/create","id":465}
2020-06-13 00:00:47.057698 [ThreadId 5] - <--2--{"jsonrpc":"2.0","params":{"value":{"kind":"begin","cancellable":false,"title":"Initializing Cabal project","percentage":0},"token":
465},"method":"$/progress"}
2020-06-13 00:00:47.058043 [ThreadId 4] - ---> {"jsonrpc":"2.0","id":465,"result":null}
2020-06-13 00:00:47.058105 [ThreadId 4] - haskell-lsp:Got reply message:"{\"jsonrpc\":\"2.0\",\"id\":465,\"result\":null}"
2020-06-13 00:00:47.058202 [ThreadId 10] - ****** reactor: got message number:1920
2020-06-13 00:00:47.058247 [ThreadId 10] - reactor:got RspFromClient:ResponseMessage {_jsonrpc = "2.0", _id = IdRspInt 465, _result = Just Null, _error = Nothing}
2020-06-13 00:00:47.058282 [ThreadId 10] - ****** reactor: top of loop
2020-06-13 00:00:48.826147 [ThreadId 13886] - Resolving dependencies...
2020-06-13 00:00:49.502951 [ThreadId 13886] - Build profile: -w ghc-8.8.3 -O0
2020-06-13 00:00:49.503037 [ThreadId 13886] - In order, the following will be built (use -v for more details):
2020-06-13 00:00:49.503088 [ThreadId 13886] -  - servant-0.17 (lib) (configuration changed)
2020-06-13 00:00:49.503132 [ThreadId 13886] -  - servant-server-0.17 (lib) (configuration changed)
2020-06-13 00:00:49.503171 [ThreadId 13886] -  - servant-server-0.17 (test:spec) (configuration changed)
2020-06-13 00:00:49.519729 [ThreadId 13886] - Configuring library for servant-0.17..
2020-06-13 00:00:51.352339 [ThreadId 13886] - Preprocessing library for servant-0.17..
2020-06-13 00:00:51.365653 [ThreadId 13886] - Building library for servant-0.17..
2020-06-13 00:00:52.562677 [ThreadId 13886] - Configuring library for servant-server-0.17..
2020-06-13 00:00:54.507245 [ThreadId 13886] - Preprocessing library for servant-server-0.17..
2020-06-13 00:00:54.517199 [ThreadId 13886] - Building library for servant-server-0.17..
2020-06-13 00:00:55.965902 [ThreadId 13886] - Configuring test suite 'spec' for servant-server-0.17..
2020-06-13 00:00:57.200188 [ThreadId 13884] - Warning: The package has an extraneous version range for a dependency on an
2020-06-13 00:00:57.200304 [ThreadId 13884] - internal library: servant-server -any && ==0.17, servant-server -any &&
2020-06-13 00:00:57.200355 [ThreadId 13884] - ==0.17. This version range includes the current package but isn't needed as
2020-06-13 00:00:57.200393 [ThreadId 13884] - the current package's library will always be used.
2020-06-13 00:00:58.096714 [ThreadId 13886] - Preprocessing test suite 'spec' for servant-server-0.17..
2020-06-13 00:00:58.23108 [ThreadId 13881] - Source error on cradle initialisation: can't find file: test/Spec.hs

hie-bios debug:

$ hie-bios debug servant-server/test/Servant/ServerSpec.hs 
Root directory:      /Users/maksbotan/temp/servant
Component directory: /Users/maksbotan/temp/servant/servant-server
GHC options:         -fbuilding-cabal-package -O0 -outputdir /Users/maksbotan/temp/servant/dist-newstyle/build/x86_64-osx/ghc-8.8.3/servant-server-0.17/t/spec/noopt/build/spec/spec-tmp -odir /Users/maksbotan/temp/servant/dist-newstyle/build/x86_64-osx/ghc-8.8.3/servant-server-0.17/t/spec/noopt/build/spec/spec-tmp -hidir /Users/maksbotan/temp/servant/dist-newstyle/build/x86_64-osx/ghc-8.8.3/servant-server-0.17/t/spec/noopt/build/spec/spec-tmp -stubdir /Users/maksbotan/temp/servant/dist-newstyle/build/x86_64-osx/ghc-8.8.3/servant-server-0.17/t/spec/noopt/build/spec/spec-tmp -i -i/Users/maksbotan/temp/servant/dist-newstyle/build/x86_64-osx/ghc-8.8.3/servant-server-0.17/t/spec/noopt/build/spec/spec-tmp -itest -i/Users/maksbotan/temp/servant/dist-newstyle/build/x86_64-osx/ghc-8.8.3/servant-server-0.17/t/spec/noopt/build/spec/autogen -i/Users/maksbotan/temp/servant/dist-newstyle/build/x86_64-osx/ghc-8.8.3/servant-server-0.17/t/spec/noopt/build/global-autogen -I/Users/maksbotan/temp/servant/dist-newstyle/build/x86_64-osx/ghc-8.8.3/servant-server-0.17/t/spec/noopt/build/spec/autogen -I/Users/maksbotan/temp/servant/dist-newstyle/build/x86_64-osx/ghc-8.8.3/servant-server-0.17/t/spec/noopt/build/global-autogen -I/Users/maksbotan/temp/servant/dist-newstyle/build/x86_64-osx/ghc-8.8.3/servant-server-0.17/t/spec/noopt/build/spec/spec-tmp -optP-include -optP/Users/maksbotan/temp/servant/dist-newstyle/build/x86_64-osx/ghc-8.8.3/servant-server-0.17/t/spec/noopt/build/spec/autogen/cabal_macros.h -hide-all-packages -Wmissing-home-modules -no-user-package-db -package-db /Users/maksbotan/.cabal/store/ghc-8.8.3/package.db -package-db /Users/maksbotan/temp/servant/dist-newstyle/packagedb/ghc-8.8.3 -package-db /Users/maksbotan/temp/servant/dist-newstyle/build/x86_64-osx/ghc-8.8.3/servant-server-0.17/t/spec/noopt/package.conf.inplace -package-id QuickCheck-2.13.2-IFlQsVhepoXHrDkLASCySh -package-id aeson-1.4.7.1-CYBfyzHWco0JrS94obsAvi -package-id base-4.13.0.0 -package-id base-compat-0.11.1-4oueEGUxmwHC6tuHqQ6hE2 -package-id base64-bytestring-1.0.0.3-G2dYBQRtOn8Kxdm0ndZRY -package-id bytestring-0.10.10.0 -package-id directory-1.3.6.0 -package-id hspec-2.7.1-aWprQ9Cwpe3oyEKitw2xL -package-id hspec-wai-0.10.1-LnpMCbFbKnxFyLrTCjtYOD -package-id http-types-0.12.3-B9EkuT6UGia2QJglhdFRHH -package-id mtl-2.2.2 -package-id resourcet-1.2.4-6K2EEC3PWvYL6IkanWK5wW -package-id safe-0.3.19-LxDJURZu1921pHCEJqjvRE -package-id servant-0.17-inplace -package-id servant-server-0.17-inplace -package-id should-not-typecheck-2.1.0-Aj1oA7w1Cu9GKPJbdEbgtJ -package-id string-conversions-0.4.0.1-KKjGH1i6WmbIm0l1zjJpaj -package-id temporary-1.3-6rtkIO88VZm9X1XintkbH8 -package-id text-1.2.4.0 -package-id transformers-0.5.6.2 -package-id transformers-compat-0.6.5-4FrvPCFBsgnJ9PLf29P7hZ -package-id wai-3.2.2.1-FkX8kCk55MR1uSuQhWVyx2 -package-id wai-extra-3.0.29.1-F5qpFPbsyBgB3suZR2dFQg -XHaskell2010 test/Spec.hs Servant.ArbitraryMonadServerSpec Servant.Server.ErrorSpec Servant.Server.Internal.ContextSpec Servant.Server.Internal.RoutingApplicationSpec Servant.Server.RouterSpec Servant.Server.StaticFilesSpec Servant.Server.StreamingSpec Servant.Server.UsingContextSpec Servant.Server.UsingContextSpec.TestCombinators Servant.HoistSpec Servant.ServerSpec -Wall -hide-all-packages
System libraries:    /nix/store/qdxkswf4vg9b2ylmg819ff0n8gl8yqip-ghc-shell-for-packages-ghc-8.8.3-env/lib/ghc-8.8.3
Config Location:     /Users/maksbotan/temp/servant/hie.yaml
Cradle:              Cradle {cradleRootDir = "/Users/maksbotan/temp/servant", cradleOptsProg = CradleAction: Cabal}
Dependencies:        cabal.project cabal.project.local

This is annoying, since once I open some of test's files in my editor, hie just starts to consume CPU by restarting in a loop and failing with the same error.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions