diff --git a/doctest.cabal b/doctest.cabal
--- a/doctest.cabal
+++ b/doctest.cabal
@@ -1,5 +1,5 @@
 name:             doctest
-version:          0.9.5.1
+version:          0.9.6
 synopsis:         Test interactive Haskell examples
 description:      The doctest program checks examples in source code comments.
                   It is modeled after doctest for Python
diff --git a/src/Interpreter.hs b/src/Interpreter.hs
--- a/src/Interpreter.hs
+++ b/src/Interpreter.hs
@@ -4,6 +4,11 @@
 , safeEval
 , withInterpreter
 , ghc
+, interpreterSupported
+
+-- exported for testing
+, ghcInfo
+, haveInterpreterKey
 ) where
 
 import           System.IO
@@ -11,6 +16,7 @@
 import           System.Exit
 import           System.Directory (getPermissions, executable)
 import           Control.Monad (when, unless)
+import           Control.Applicative
 import           Control.Exception hiding (handle)
 import           Data.Char
 import           Data.List
@@ -31,15 +37,24 @@
   , process :: ProcessHandle
   }
 
-newInterpreter :: [String] -> IO Interpreter
-newInterpreter flags = do
+haveInterpreterKey :: String
+haveInterpreterKey = "Have interpreter"
 
+ghcInfo :: IO [(String, String)]
+ghcInfo = read <$> readProcess ghc ["--info"] []
+
+interpreterSupported :: IO Bool
+interpreterSupported = do
   -- in a perfect world this permission check should never fail, but I know of
   -- at least one case where it did..
   x <- getPermissions ghc
   unless (executable x) $ do
     fail $ ghc ++ " is not executable!"
 
+  maybe False (== "YES") . lookup haveInterpreterKey <$> ghcInfo
+
+newInterpreter :: [String] -> IO Interpreter
+newInterpreter flags = do
   (Just stdin_, Just stdout_, Nothing, processHandle ) <- createProcess $ (proc ghc myFlags) {std_in = CreatePipe, std_out = CreatePipe, std_err = Inherit}
   setMode stdin_
   setMode stdout_
@@ -88,7 +103,7 @@
   e <- waitForProcess $ process repl
   hClose $ hOut repl
 
-  when (e /= ExitSuccess) $ error $ "Interpreter exited with an error: " ++ show e 
+  when (e /= ExitSuccess) $ error $ "Interpreter exited with an error: " ++ show e
   return ()
 
 putExpression :: Interpreter -> String -> IO ()
diff --git a/src/Run.hs b/src/Run.hs
--- a/src/Run.hs
+++ b/src/Run.hs
@@ -9,8 +9,8 @@
 ) where
 
 import           Data.List
-import           Control.Monad (when)
-import           System.Exit (exitFailure)
+import           Control.Monad (when, unless)
+import           System.Exit (exitFailure, exitSuccess)
 import           System.IO
 import           System.Environment (getEnvironment)
 
@@ -52,6 +52,11 @@
       let addPackageConf = case packageConf of
             Nothing -> id
             Just p  -> \rest -> ghcPackageDbFlag : p : rest
+      
+      i <- Interpreter.interpreterSupported
+      unless i $ do
+        hPutStrLn stderr "WARNING: GHC does not support --interactive, skipping tests"
+        exitSuccess
 
       let (f, args_) = stripOptGhc args
       when f $ do
