Skip to content

Commit

Permalink
Require GHC 9.10.1
Browse files Browse the repository at this point in the history
  • Loading branch information
sol committed Oct 18, 2024
1 parent 559eaf6 commit d7fbff7
Show file tree
Hide file tree
Showing 9 changed files with 38 additions and 38 deletions.
21 changes: 9 additions & 12 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,10 @@ jobs:
matrix:
os:
- ubuntu-latest
- macos-12
ghc:
- '9.4'
- '9.6'
- '9.8'
- '9.10'
include:
- os: macos-12
ghc: system

steps:
- uses: actions/checkout@v3
- uses: hspec/setup-haskell@v1
Expand All @@ -54,12 +50,13 @@ jobs:
run: cabal build all

- shell: bash
run: echo | cabal repl sensei --build-depends hspec-meta

- shell: bash
run: cabal exec -- $(cabal list-bin spec) --times --print-slow
env:
HSPEC_OPTIONS: --color
run: |
for GHC in 9.4 9.6 9.8 9.10
do
ghcup install ghc $GHC --no-set
cabal install -z -w ghc-$GHC --package-env=./$GHC.env --lib hspec hspec-meta
SENSEI_GHC=ghc-$GHC GHC_ENVIRONMENT=$(pwd)/$GHC.env $(cabal list-bin spec)
done
success:
needs: build
Expand Down
2 changes: 2 additions & 0 deletions cabal.project
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
with-compiler: ghc-9.10.1

packages:
sensei.cabal

Expand Down
2 changes: 1 addition & 1 deletion package.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ dependencies:
- async
- containers
- transformers
- mtl
- mtl >= 2.3.1
- aeson
- yaml
- casing
Expand Down
10 changes: 5 additions & 5 deletions sensei.cabal

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 5 additions & 2 deletions src/Language/Haskell/GhciWrapper.hs
Original file line number Diff line number Diff line change
Expand Up @@ -82,16 +82,19 @@ new startupFile Config{..} envDefaults args_ = do

let
mandatoryArgs :: [String]
mandatoryArgs = ["-fshow-loaded-modules"]
mandatoryArgs = ["-fshow-loaded-modules", "--interactive"]

args :: [String]
args = "-ghci-script" : startupFile : args_ ++ catMaybes [
if configIgnoreDotGhci then Just "-ignore-dot-ghci" else Nothing
] ++ mandatoryArgs

ghc :: String
ghc = fromMaybe "ghc" $ lookup "SENSEI_GHC" env

(stdoutReadEnd, stdoutWriteEnd) <- createPipe

(Just stdin_, Nothing, Nothing, processHandle ) <- createProcess (proc "ghci" args) {
(Just stdin_, Nothing, Nothing, processHandle ) <- createProcess (proc ghc args) {
cwd = configWorkingDirectory
, env = Just $ envDefaults ++ env
, std_in = CreatePipe
Expand Down
4 changes: 0 additions & 4 deletions src/Trigger.hs
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,8 @@ module Trigger (

import Imports

#if MIN_VERSION_mtl(2,3,1)
import Control.Monad.Trans.Writer.CPS (runWriterT)
import Control.Monad.Writer.CPS hiding (pass)
#else
import Control.Monad.Writer.Strict hiding (pass)
#endif

import Control.Monad.Except

Expand Down
2 changes: 1 addition & 1 deletion test/ClientSpec.hs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ spec = do

it "indicates failure" $ do
withFailure $ \ dir -> do
client dir [] `shouldReturn` (False, "failure")
client dir ["--color"] `shouldReturn` (False, fromString $ withColor Red "failure")

context "when server socket is missing" $ do
it "reports error" $ do
Expand Down
2 changes: 1 addition & 1 deletion test/Language/Haskell/GhciWrapperSpec.hs
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ spec = do

context "with -XNoImplicitPrelude" $ do
it "works" $ withInterpreter ["-XNoImplicitPrelude"] $ \ ghci -> do
Interpreter.eval ghci "putStrLn \"foo\"" >>= (`shouldContain` "Variable not in scope: putStrLn")
(unwords . map (dropWhile isSpace) . lines <$> Interpreter.eval ghci "putStrLn \"foo\"") >>= (`shouldContain` "Variable not in scope: putStrLn")
Interpreter.eval ghci "23" `shouldReturn` "23\n"

describe "reload" do
Expand Down
26 changes: 14 additions & 12 deletions test/TriggerSpec.hs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ module TriggerSpec (spec) where

import Helper

import qualified Data.Text as Text

import qualified Session
import Session (Session)
import Language.Haskell.GhciWrapper (Config(..))
Expand All @@ -11,7 +13,7 @@ import Trigger hiding (trigger, triggerAll)
import qualified Trigger

normalize :: String -> [String]
normalize = normalizeTiming . lines
normalize = normalizeTiming . lines . forGhc9dot4
where
normalizeTiming :: [String] -> [String]
normalizeTiming = normalizeLine "Finished in "
Expand All @@ -23,6 +25,11 @@ normalize = normalizeTiming . lines
| message `isPrefixOf` line = message ++ "..."
| otherwise = line

forGhc9dot4 :: String -> String
forGhc9dot4 = Text.unpack
. Text.replace " error: Variable not in scope: " " error: [GHC-88464] Variable not in scope: "
. Text.pack

withSession :: FilePath -> [String] -> (Session -> IO a) -> IO a
withSession specPath args = do
Session.withSession ghciConfig {configWorkingDirectory = Just dir} $
Expand Down Expand Up @@ -155,19 +162,14 @@ spec = do
it "stops after reloading" $ \ name -> do
withSession name [] $ \ session -> do
writeFile name (passingSpec ++ "foo = bar")
(trigger session >> trigger session) `shouldReturn` (Failure, [

let
fitterNotNull :: [String] -> [String]
fitterNotNull = filter (not . null)

(fmap fitterNotNull <$> (trigger session >> trigger session)) `shouldReturn` (Failure, [
"[1 of 1] Compiling Spec"
#if __GLASGOW_HASKELL__ < 910
, ""
#endif
#if __GLASGOW_HASKELL__ >= 906
, "Spec.hs:9:7: error: [GHC-88464] Variable not in scope: bar"
#else
, "Spec.hs:9:7: error: Variable not in scope: bar"
#endif
#if __GLASGOW_HASKELL__ >= 910
, ""
#endif
, withColor Red "RELOADING FAILED"
])

Expand Down

0 comments on commit d7fbff7

Please sign in to comment.