devtools-0.1.0: src/Devtools/Dependencies.hs
module Devtools.Dependencies
( getFilename
, testTree
)
where
import Data.Tuple (fst)
import Devtools.Config
import Devtools.Prelude
import System.FilePath (FilePath, (</>))
import qualified Data.ByteString.Lazy as LBS
import qualified Data.Text.Encoding as Text
import qualified System.Environment as Environment
import qualified System.FilePath as FilePath
import qualified System.Process.Typed as Process
import qualified Test.Tasty as Tasty
import qualified Test.Tasty.MGolden as Tasty
testTree :: FilePath -> [Target] -> Tasty.TestTree
testTree filename targets =
Tasty.goldenTest "dependencies" filename readDependenciesText
where
readDependenciesText :: IO Text
readDependenciesText
= Text.decodeUtf8 . LBS.toStrict <$> readDependencies
readDependencies :: IO LBS.ByteString
readDependencies
= fst <$> Process.readProcess_ (Process.proc "stack" arguments)
arguments :: [String]
arguments =
[ "ls"
, "dependencies"
, "--test"
] <> (targetString <$> targets)
getFilename :: IO FilePath
getFilename = do
prefix <- getPrefix
pure $ "test" </> prefix <> "-dependencies.txt"
where
getPrefix
= maybe "stack" (FilePath.dropExtension . FilePath.takeFileName)
<$> Environment.lookupEnv "STACK_YAML"