packages feed

morloc-0.33.0: test-suite/GoldenMakefileTests.hs

module GoldenMakefileTests
  ( goldenMakefileTest
  ) where

import Test.Tasty
import Test.Tasty.Golden
import qualified System.Process as SP
import qualified System.Directory as SD
import qualified System.IO as SI

goldenMakefileTest :: String -> String -> TestTree
goldenMakefileTest msg testdir =
  let dir = testdir
      expFile = testdir ++ "/exp.txt"
      obsFile = testdir ++ "/obs.txt"
  in
      goldenVsFile
        msg
        expFile
        obsFile
        (makeManifoldFile dir)

makeManifoldFile :: String -> IO ()
makeManifoldFile path = do
  abspath <- SD.makeAbsolute path
  devnull <- SI.openFile "/dev/null" SI.WriteMode
  SP.runProcess
    "make" -- command
    ["-C", abspath, "--quiet"] -- arguments
    Nothing -- optional path to working diretory
    Nothing -- optional environment
    Nothing -- stdin handle
    (Just devnull) -- stdout handle
    (Just devnull) -- stderr handle
    >>= SP.waitForProcess

  SP.callProcess "make" ["-C", abspath, "--quiet", "clean"]