External commands: Add tests for #9402 #9403 #9404
[cabal.git] / cabal-testsuite / PackageTests / ExternalCommand / cabal.test.hs
blob850c8bfbcec25a11a20012503646c02ae05e48a7
1 import Test.Cabal.Prelude
2 import qualified System.Process as Process
3 import Control.Concurrent (threadDelay)
4 import System.Directory (removeFile)
5 import Control.Exception (catch, throwIO)
6 import System.IO.Error (isDoesNotExistError)
7 import qualified Data.Time.Clock as Time
8 import qualified Data.Time.Format as Time
9 import Data.Maybe
10 import System.Environment
12 main = do
13 cabalTest $ do
14 res <- cabalWithStdin "v2-build" ["all"] ""
15 exe_path <- withPlan $ planExePath "setup-test" "cabal-aaaa"
16 env <- getTestEnv
17 path <- liftIO $ getEnv "PATH"
18 let newpath = takeDirectory exe_path ++ ":" ++ path
19 let new_env = (("PATH", Just newpath) : (testEnvironment env))
20 withEnv new_env $ do
21 res <- cabal_raw_action ["aaaa"] (\h -> () <$ Process.waitForProcess h)
22 assertOutputContains "aaaa" res
25 cabal_raw_action :: [String] -> (Process.ProcessHandle -> IO ()) -> TestM Result
26 cabal_raw_action args action = do
27 configured_prog <- requireProgramM cabalProgram
28 env <- getTestEnv
29 r <- liftIO $ runAction (testVerbosity env)
30 (Just (testCurrentDir env))
31 (testEnvironment env)
32 (programPath configured_prog)
33 args
34 Nothing
35 action
36 recordLog r
37 requireSuccess r