diff options
Diffstat (limited to 'test/Tests/Command.hs.orig')
-rw-r--r-- | test/Tests/Command.hs.orig | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/test/Tests/Command.hs.orig b/test/Tests/Command.hs.orig deleted file mode 100644 index de83d0639..000000000 --- a/test/Tests/Command.hs.orig +++ /dev/null @@ -1,95 +0,0 @@ -module Tests.Command (findPandoc, runTest, tests) -where - -import Data.Algorithm.Diff -import qualified Data.ByteString as BS -import Data.List (isSuffixOf) -import Prelude hiding (readFile) -import System.Directory -import System.Exit -import System.FilePath (joinPath, splitDirectories, takeDirectory, (</>)) -import System.IO (hPutStr, stderr) -import System.IO.Unsafe (unsafePerformIO) -import System.Process -import Test.Tasty -import Test.Tasty.HUnit -import Tests.Helpers -import Text.Pandoc -import qualified Text.Pandoc.UTF8 as UTF8 - --- | Run a test with normalize function, return True if test passed. -runTest :: String -- ^ Title of test - -> FilePath -- ^ Path to pandoc - -> String -- ^ Shell command - -> String -- ^ Input text - -> String -- ^ Expected output - -> TestTree -runTest testname pandocpath cmd inp norm = testCase testname $ do - let findDynlibDir [] = Nothing - findDynlibDir ("build":xs) = Just $ joinPath (reverse xs) </> "build" - findDynlibDir (_:xs) = findDynlibDir xs - let mbDynlibDir = findDynlibDir (reverse $ splitDirectories $ - takeDirectory $ takeWhile (/=' ') cmd) - let dynlibEnv = case mbDynlibDir of - Nothing -> [] - Just d -> [("DYLD_LIBRARY_PATH", d), - ("LD_LIBRARY_PATH", d)] - let env' = dynlibEnv ++ [("PATH",takeDirectory pandocpath),("TMP","."),("LANG","en_US.UTF-8"),("HOME", "./"),("pandoc_datadir", "..")] - let pr = (shell cmd){ env = Just env' } - (ec, out', err') <- readCreateProcessWithExitCode pr inp - -- filter \r so the tests will work on Windows machines - let out = filter (/= '\r') $ err' ++ out' - result <- if ec == ExitSuccess - then - if out == norm - then return TestPassed - else return - $ TestFailed cmd "expected" - $ getDiff (lines out) (lines norm) - else do - hPutStr stderr err' - return $ TestError ec - assertBool (show result) (result == TestPassed) - -tests :: TestTree -{-# NOINLINE tests #-} -tests = unsafePerformIO $ do - pandocpath <- findPandoc - files <- filter (".md" `isSuffixOf`) <$> - getDirectoryContents "command" - let cmds = map (extractCommandTest pandocpath) files - return $ testGroup "Command:" cmds - -isCodeBlock :: Block -> Bool -isCodeBlock (CodeBlock _ _) = True -isCodeBlock _ = False - -extractCode :: Block -> String -extractCode (CodeBlock _ code) = code -extractCode _ = "" - -dropPercent :: String -> String -dropPercent ('%':xs) = dropWhile (== ' ') xs -dropPercent xs = xs - -runCommandTest :: FilePath -> (Int, String) -> TestTree -runCommandTest pandocpath (num, code) = - let codelines = lines code - (continuations, r1) = span ("\\" `isSuffixOf`) codelines - (cmd, r2) = (dropPercent (unwords (map init continuations ++ take 1 r1)), - drop 1 r1) - (inplines, r3) = break (=="^D") r2 - normlines = takeWhile (/=".") (drop 1 r3) - input = unlines inplines - norm = unlines normlines - shcmd = cmd -- trimr $ takeDirectory pandocpath </> cmd - in runTest ("#" ++ show num) pandocpath shcmd input norm - -extractCommandTest :: FilePath -> FilePath -> TestTree -extractCommandTest pandocpath fp = unsafePerformIO $ do - contents <- UTF8.toText <$> BS.readFile ("command" </> fp) - Pandoc _ blocks <- runIOorExplode (readMarkdown - def{ readerExtensions = pandocExtensions } contents) - let codeblocks = map extractCode $ filter isCodeBlock blocks - let cases = map (runCommandTest pandocpath) $ zip [1..] codeblocks - return $ testGroup fp cases |