module Main where import Test.HUnit import System.Exit import System.FilePath import Language.Haskell.Tools.Refactor.CLI main :: IO () main = run allTests run :: [Test] -> IO () run tests = do results <- runTestTT $ TestList tests if errors results + failures results > 0 then exitFailure else exitSuccess allTests :: [Test] allTests = map makeCliTest cliTests makeCliTest :: (String, [String], String) -> Test makeCliTest (dir, args, expected) = TestLabel dir $ TestCase $ do res <- refactorSession (args ++ [dir]) assertEqual "" (filter (/= '\r') expected) (filter (/= '\r') res) cliTests :: [(String, [String], String)] cliTests = [ ( ".." ".." "examples" "Project" "source-dir" , ["-dry-run", "-one-shot", "-module-name=A", "-refactoring=\"GenerateSignature 3:1-3:1\""] , "### UModule changed: A\n### new content:\nmodule A where\n\nx :: ()\nx = ()") , ( ".." ".." "examples" "Project" "source-dir-outside" , ["-dry-run", "-one-shot", "-module-name=A", "-refactoring=\"GenerateSignature 3:1-3:1\""] , "### UModule changed: A\n### new content:\nmodule A where\n\nx :: ()\nx = ()") , ( ".." ".." "examples" "Project" "no-cabal" , ["-dry-run", "-one-shot", "-module-name=A", "-refactoring=\"GenerateSignature 3:1-3:1\""] , "### UModule changed: A\n### new content:\nmodule A where\n\nx :: ()\nx = ()") , ( ".." ".." "examples" "Project" "has-cabal" , ["-dry-run", "-one-shot", "-module-name=A", "-refactoring=\"GenerateSignature 3:1-3:1\""] , "### UModule changed: A\n### new content:\nmodule A where\n\nx :: ()\nx = ()") ]