packages feed

hstox-0.0.1: src/tox-spectest.hs

module Main (main) where

import           Control.Concurrent (threadDelay)
import           System.Environment (getArgs, withArgs)
import           System.Process     (createProcess, proc, terminateProcess)

import qualified ToxTestSuite


getSutAndArgs :: IO (String, [String])
getSutAndArgs = do
  args <- getArgs
  case args of
    []         -> fail "Usage: tox-spectest <sut> [args...]"
    sut : rest -> return (sut, rest)


main :: IO ()
main = do
  (sut, args) <- getSutAndArgs
  -- Start a SUT (System Under Test) process that will listen on port 1234.
  (_, _, _, sutProc) <- createProcess $ proc sut []
  -- 100ms delay to give the SUT time to set up its socket before we try to
  -- build connections in the test runner.
  threadDelay $ 100 * 1000
  -- TestSuite (the test runner) makes connections to port 1234 to communicate
  -- with the SUT.
  withArgs (["--print-cpu-time", "--color"] ++ args) ToxTestSuite.main
  terminateProcess sutProc