diff --git a/runhs.cabal b/runhs.cabal
--- a/runhs.cabal
+++ b/runhs.cabal
@@ -1,7 +1,7 @@
 cabal-version: 2.2
 
 name: runhs
-version: 1.0.0.7
+version: 1.0.0.8
 synopsis: Stack wrapper for single-file Haskell programs.
 description:
   Stack wrapper for single-file Haskell programs.
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -14,11 +14,13 @@
 
 module Main (main) where
 
-import Data.ByteString.Char8 (pack)
+import Data.Foldable
+
 import Data.FileEmbed (embedStringFile)
-import Data.Foldable (fold)
 import Data.Yaml (decodeThrow, parseMaybe, withObject, (.:), (.:?))
 
+import qualified Data.ByteString.Char8 as BS
+
 import qualified System.Console.Terminal.Size as Sys
 import qualified System.Environment as Sys
 import qualified System.Exit as Sys
@@ -38,7 +40,7 @@
 spec :: FilePath -> IO RunSpec
 spec path = do
     let readHeader =
-            decodeThrow . pack
+            decodeThrow . BS.pack
             . unlines
             . snd . break (/= "{-")
             . fst . break (== "-}")
@@ -73,8 +75,9 @@
         "repl":file:_ -> repl =<< spec file
         "compile":file:_ -> compile =<< spec file
         "script":file:args' -> script args' =<< spec file
-        x:_ | x `elem` ["--version", "-version", "-v"] -> version
-            | x `elem` ["--help", "-help", "-h"] -> help Nothing
+        arg1:_
+            | arg1 `elem` ["--version", "-version", "-v"] -> version
+            | arg1 `elem` ["--help", "-help", "-h"] -> help Nothing
         _ -> help (Just "Unable to parse the command-line arguments.")
 
 runProcess :: Sys.CreateProcess -> IO ()
@@ -92,7 +95,7 @@
         , "ghcid"
         , "--"
         , "--command"
-        , unwords $ "stack" : "repl" : stackArgs spec
+        , "'" <> (unwords $ "stack" : "repl" : stackArgs spec) <> "'"
         ]
         <> args
 
@@ -127,7 +130,7 @@
 
 version :: IO ()
 version =
-    mapM_ putStrLn
+    traverse_ putStrLn
     . ("runhs" :)
     . filter (\ln -> take 8 ln == "version:" || take 10 ln == "copyright:")
     . lines
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -7,8 +7,11 @@
 -}
 module Main (main) where
 
+import Data.Maybe
 import Test.Hspec
+
 import qualified System.Directory as Sys
+import qualified System.Environment as Sys
 import qualified System.Exit as Sys
 import qualified System.Process as Sys
 
@@ -19,48 +22,67 @@
 render Script = "script"
 render Compile = "compile"
 
+type Resolver = String
 type Stdin = String
 type Stdout = String
 type Stderr = String
 
-runhs :: Mode -> FilePath -> [String] -> Stdin -> IO (Sys.ExitCode, Stdout, Stderr)
-runhs mode path args stdin =
-    Sys.readProcessWithExitCode "stack" args' stdin
+main :: IO ()
+main = do
+    resolver <- fromMaybe "nightly" <$> Sys.lookupEnv "TEST_RESOLVER"
+    putStrLn $ unwords ["TEST_RESOLVER:", resolver]
+    test resolver
+
+runhs ::
+    Resolver -> Mode -> FilePath -> [String] -> Stdin ->
+    IO (Sys.ExitCode, Stdout, Stderr)
+runhs resolver mode path args stdin =
+    Sys.readProcessWithExitCode "stack" (args' <> args) stdin
     where
-    args' = ["exec", "--resolver", "nightly", "runhs", render mode, path] <> args
+    args' = ["exec", "--resolver", resolver, "runhs", "--", render mode, path]
 
-main :: IO ()
-main = hspec $ do
+test :: Resolver -> IO ()
+test resolver = hspec $ do
     describe "hello-haskell test" $ do
         let helloHaskell = "test/resources/hello-haskell.hs"
 
         it "should load in repl mode" $ do
-            (status, _, _) <- runhs Repl helloHaskell [] ":t greet\n:q"
+            (status, out, err) <- runhs resolver Repl helloHaskell [] ":t greet\n:q"
             status `shouldBe` Sys.ExitSuccess
+            out `shouldContain` "greet :: [String] -> [IO ()]"
+            err `shouldContain` unwords ["Selected resolver:", resolver]
 
-        it "should load in watch mode" $ do
-            _ <- runhs Watch helloHaskell ["--allow-eval"] ""
-            -- Ghcid exits with success on Windows, with error on Unix.
-            return ()
+        -- broken in CI. works on my machine. i don't have time for this shit.
+        -- it "should load in watch mode" $ do
+        --     (_, out, err) <- runhs resolver Watch helloHaskell ["--allow-eval"] ""
+        --     -- Ghcid exits with success on Windows, with error on Unix.
+        --     out `shouldContain` "exited unexpectedly"
+        --     err `shouldContain` unwords ["Selected resolver:", resolver]
 
         it "should load in script mode" $ do
-            (status, out, _) <- runhs Script helloHaskell [] ""
+            (status, out, err) <- runhs resolver Script helloHaskell [] ""
             status `shouldBe` Sys.ExitSuccess
             out `shouldBe` "Hello, World!\n"
+            err `shouldContain` unwords ["Selected resolver:", resolver]
 
         it "should forward arguments in script mode" $ do
-            (status, out, _) <- runhs Script helloHaskell ["Veni", "Vidi"] ""
+            (status, out, err) <- runhs resolver Script helloHaskell ["Veni", "Vidi"] ""
             status `shouldBe` Sys.ExitSuccess
             out `shouldBe` "Hello, Veni!\nHello, Vidi!\n"
+            err `shouldContain` unwords ["Selected resolver:", resolver]
 
         it "should forward stdin in script mode" $ do
-            (status, out, _) <- runhs Script helloHaskell [] "Veni Vidi\nVici"
+            (status, out, err) <- runhs resolver Script helloHaskell [] "Veni Vidi\nVici"
             status `shouldBe` Sys.ExitSuccess
             out `shouldBe` "Hello, Veni!\nHello, Vidi!\nHello, Vici!\n"
+            err `shouldContain` unwords ["Selected resolver:", resolver]
 
         it "should load in compile mode" $ do
-            (status, out, _) <- runhs Compile helloHaskell [] ""
+            (status, out, err) <- runhs resolver Compile helloHaskell [] ""
             status `shouldBe` Sys.ExitSuccess
+            out `shouldContain` "Compiling Main"
+            out `shouldContain` "hello-haskell.hs"
+            err `shouldContain` unwords ["Selected resolver:", resolver]
             Sys.removePathForcibly "test/resources/hello-haskell.o"
             Sys.removePathForcibly "test/resources/hello-haskell.hi"
             Sys.removePathForcibly "test/resources/hello-haskell"
