From eab83a28f0345979046fa2be74953bab67de8748 Mon Sep 17 00:00:00 2001 From: thomasjm Date: Wed, 16 Aug 2023 16:42:47 -0700 Subject: [PATCH] Introduce displayDatasBecome for test JSON output --- src/tests/IHaskell/Test/Eval.hs | 47 ++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/src/tests/IHaskell/Test/Eval.hs b/src/tests/IHaskell/Test/Eval.hs index 117da4ea..49e8e0f0 100644 --- a/src/tests/IHaskell/Test/Eval.hs +++ b/src/tests/IHaskell/Test/Eval.hs @@ -42,6 +42,13 @@ eval string = do pagerout <- readIORef pagerAccum return (reverse out, unlines . map extractPlain . reverse $ pagerout) +displayDatasBecome :: String -> [Display] -> IO () +displayDatasBecome command desired = do + (displays, _output) <- eval command + when (displays /= desired) $ + expectationFailure $ "Expected display datas to be " ++ show (encode desired) + ++ ". Got " ++ show (encode displays) + becomes :: String -> [String] -> IO () becomes string expected = evaluationComparing comparison string where @@ -156,27 +163,31 @@ testEval = it "evaluates :in directive" $ do #if MIN_VERSION_ghc(8,10,0) - (displays, _output) <- eval ":in String" - displays `shouldBe` [ManyDisplay [Display [ - DisplayData PlainText "type String :: *\ntype String = [Char]\n \t-- Defined in \8216GHC.Base\8217" - , DisplayData MimeHtml "
type String :: *
\ntype String = [Char]
\t
-- Defined in \8216GHC.Base\8217
" - ]]] + displayDatasBecome ":in String" [ + ManyDisplay [Display [ + DisplayData PlainText "type String :: *\ntype String = [Char]\n \t-- Defined in \8216GHC.Base\8217" + , DisplayData MimeHtml "
type String :: *
\ntype String = [Char]
\t
-- Defined in \8216GHC.Base\8217
" + ]] + ] #elif MIN_VERSION_ghc(8,4,0) - (displays, _output) <- eval ":in String" - displays `shouldBe` [ManyDisplay [Display [ - DisplayData PlainText "type String = [Char] \t-- Defined in `GHC.Base'" - , DisplayData MimeHtml "
type String = [Char] \t-- Defined in `GHC.Base'
" - ]]] + displayDatasBecome ":in String" [ + ManyDisplay [Display [ + DisplayData PlainText "type String = [Char] \t-- Defined in `GHC.Base'" + , DisplayData MimeHtml "
type String = [Char] \t-- Defined in `GHC.Base'
" + ]] + ] #elif MIN_VERSION_ghc(8,2,0) - (displays, _output) <- eval ":in String" - displays `shouldBe` [ManyDisplay [Display [ - DisplayData PlainText "type String = [Char] \t-- Defined in `GHC.Base'" - ]]] + displayDatasBecome ":in String" [ + ManyDisplay [Display [ + DisplayData PlainText "type String = [Char] \t-- Defined in `GHC.Base'" + ]] + ] #else - (displays, _output) <- eval ":in String" - displays `shouldBe` [ManyDisplay [Display [ - DisplayData PlainText "type String :: *\ntype String = [Char]\n \t-- Defined in \8216GHC.Base\8217" - ]]] + displayDatasBecome ":in String" [ + ManyDisplay [Display [ + DisplayData PlainText "type String :: *\ntype String = [Char]\n \t-- Defined in \8216GHC.Base\8217" + ]] + ] #endif it "captures stderr" $ do