module Main where
import Test.Tasty
import Test.Tasty.HUnit
import System.Exit
import System.Directory
import System.FilePath
import Control.Monad
import Control.Exception
import qualified Data.List as List
import Data.Knob
import Data.ByteString.Char8 (pack, unpack)
import System.IO
import Language.Haskell.Tools.Refactor.CLI
main :: IO ()
main = do nightlyTests <- benchTests
defaultMain $ testGroup "cli tests" (allTests ++ nightlyTests)
allTests :: [TestTree]
allTests = map makeCliTest cliTests
makeCliTest :: ([FilePath], [String], String, String) -> TestTree
makeCliTest (dirs, args, input, output) = let dir = joinPath $ longestCommonPrefix $ map splitDirectories dirs
testdirs = map (((dir ++ "_test") >) . makeRelative dir) dirs
in testCase dir $ do
exists <- doesDirectoryExist (dir ++ "_test")
when exists $ removeDirectoryRecursive (dir ++ "_test")
copyDir dir (dir ++ "_test")
inKnob <- newKnob (pack input)
inHandle <- newFileHandle inKnob "" ReadMode
outKnob <- newKnob (pack [])
outHandle <- newFileHandle outKnob "