content: -- T13676 test driver.
  -- Tests that the command dumped by the RTS into the stats file is properly escaped.
  
  module T13676_Driver (GhcPath(GhcPath), test_t13676) where
  
  import Control.Monad
  import Data.Maybe
  
  import System.Exit
  import System.Process
  import System.FilePath
  
  -- This expression contains quotation marks and spaces which must be escaped.
  expr :: String
  expr = "'$' == '\\x0024'"
  
  -- Check that evaluation of expr succeeds.
  check_output :: String -> IO ()
  check_output out =
    unless (lines out == ["True"]) $
      exitWith (ExitFailure 13)
  
  -- A name for the .t file.
  tfilename :: String
  tfilename = "T13676.t"
  
  newtype GhcPath = GhcPath FilePath
  
  -- GHC arguments for the initial invocation.
  initial_cmd_args :: [String]
  initial_cmd_args = ["-e", expr, "+RTS", "-t" ++ tfilename]
  
  test_t13676 :: GhcPath -> IO ()
  test_t13676 (GhcPath ghcPath) = do
    initial_out <- readCreateProcess (proc ghcPath initial_cmd_args) ""
    check_output initial_out
    tfile_content <- readFile tfilename
    dumped_cmd <-
      case listToMaybe (lines tfile_content) of
        Nothing -> exitWith (ExitFailure 14)
        Just str -> return str
    secondary_out <- readCreateProcess (shell dumped_cmd) ""
    check_output secondary_out
  