Remove Muse reader round-trip tests.
These are nondeterministic and have repeatedly failed on strange edge cases. The Muse reader's maintainer has not been active, and it isn't worth developer time to chase down these problems.
This commit is contained in:
parent
227b21e0cb
commit
5df94da831
1 changed files with 1 additions and 84 deletions
|
@ -13,19 +13,14 @@ Tests for the Muse reader.
|
|||
module Tests.Readers.Muse (tests) where
|
||||
|
||||
import Data.List (intersperse)
|
||||
import Data.Monoid (Any (..))
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
import Test.Tasty
|
||||
import Test.Tasty.HUnit (HasCallStack)
|
||||
import Test.Tasty.QuickCheck
|
||||
import Test.Tasty.Options (IsOption(defaultValue))
|
||||
import Tests.Helpers
|
||||
import Text.Pandoc
|
||||
import Text.Pandoc.Arbitrary ()
|
||||
import Text.Pandoc.Builder
|
||||
import Text.Pandoc.Writers.Shared (toLegacyTable)
|
||||
import Text.Pandoc.Walk
|
||||
|
||||
amuse :: Text -> Pandoc
|
||||
amuse = purely $ readMuse def { readerExtensions = extensionsFromList [Ext_amuse]}
|
||||
|
@ -52,79 +47,6 @@ simpleTable' n capt headers rows
|
|||
toRow = Row nullAttr . map simpleCell
|
||||
toHeaderRow l = [toRow l | not (null l)]
|
||||
|
||||
-- Tables don't round-trip yet
|
||||
--
|
||||
makeRoundTrip :: Block -> Block
|
||||
makeRoundTrip t@(Table tattr blkCapt specs thead tbody tfoot) =
|
||||
if isSimple && numcols > 1
|
||||
then t
|
||||
else Para [Str "table was here"]
|
||||
where (_, aligns, widths, headers, rows) = toLegacyTable blkCapt specs thead tbody tfoot
|
||||
numcols = maximum (length aligns : length widths : map length (headers:rows))
|
||||
isLineBreak LineBreak = Any True
|
||||
isLineBreak _ = Any False
|
||||
hasLineBreak = getAny . query isLineBreak
|
||||
isSimple = and [ isSimpleHead thead
|
||||
, isSimpleBodies tbody
|
||||
, isSimpleFoot tfoot
|
||||
, all (== 0) widths
|
||||
, isNullAttr tattr
|
||||
, simpleCapt ]
|
||||
isNullAttr ("", [], []) = True
|
||||
isNullAttr _ = False
|
||||
isAlignDefault AlignDefault = True
|
||||
isAlignDefault _ = False
|
||||
isSimpleRow (Row attr body) = isNullAttr attr && all isSimpleCell body
|
||||
isSimpleCell (Cell attr ali h w body)
|
||||
= and [ h == 1
|
||||
, w == 1
|
||||
, isNullAttr attr
|
||||
, isAlignDefault ali
|
||||
, isSimpleCellBody body ]
|
||||
isSimpleCellBody [Plain ils] = not (hasLineBreak ils)
|
||||
isSimpleCellBody [Para ils ] = not (hasLineBreak ils)
|
||||
isSimpleCellBody [] = True
|
||||
isSimpleCellBody _ = False
|
||||
simpleCapt = case blkCapt of
|
||||
Caption Nothing [Para _] -> True
|
||||
Caption Nothing [Plain _] -> True
|
||||
_ -> False
|
||||
isSimpleHead (TableHead attr [r])
|
||||
= isNullAttr attr && isSimpleRow r
|
||||
isSimpleHead _ = False
|
||||
isSimpleBody (TableBody attr rhc hd bd) = and [ isNullAttr attr
|
||||
, rhc == 0
|
||||
, null hd
|
||||
, all isSimpleRow bd ]
|
||||
isSimpleBodies [b] = isSimpleBody b
|
||||
isSimpleBodies _ = False
|
||||
isSimpleFoot (TableFoot attr rs) = isNullAttr attr && null rs
|
||||
|
||||
makeRoundTrip (OrderedList (start, LowerAlpha, _) items) = OrderedList (start, Decimal, Period) items
|
||||
makeRoundTrip (OrderedList (start, UpperAlpha, _) items) = OrderedList (start, Decimal, Period) items
|
||||
makeRoundTrip x = x
|
||||
|
||||
-- | Ensure an Inline element is representable in Muse.
|
||||
--
|
||||
-- TODO: Check if string handling could be improved.
|
||||
makeRoundTripInline :: Inline -> Inline
|
||||
makeRoundTripInline (Str xs) = Str (T.replace "\DEL" "" xs)
|
||||
makeRoundTripInline x = x
|
||||
|
||||
-- Demand that any AST produced by Muse reader and written by Muse writer can be read back exactly the same way.
|
||||
-- Currently we remove tables and compare first rewrite to the second.
|
||||
roundTrip :: Blocks -> Bool
|
||||
roundTrip b = d' == d''
|
||||
where d = walk makeRoundTrip
|
||||
. walk makeRoundTripInline
|
||||
$ Pandoc nullMeta $ toList b
|
||||
d' = rewrite d
|
||||
d'' = rewrite d'
|
||||
rewrite = amuse . T.pack . (++ "\n") . T.unpack .
|
||||
purely (writeMuse def { writerExtensions = extensionsFromList [Ext_amuse]
|
||||
, writerWrapText = WrapPreserve
|
||||
})
|
||||
|
||||
tests :: [TestTree]
|
||||
tests =
|
||||
[ testGroup "Inlines"
|
||||
|
@ -393,12 +315,7 @@ tests =
|
|||
]
|
||||
|
||||
, testGroup "Blocks"
|
||||
[ askOption $ \(QuickCheckTests numtests) ->
|
||||
testProperty "Round trip" $
|
||||
withMaxSuccess (if QuickCheckTests numtests == defaultValue
|
||||
then 25
|
||||
else numtests) roundTrip
|
||||
, "Block elements end paragraphs" =:
|
||||
[ "Block elements end paragraphs" =:
|
||||
T.unlines [ "First paragraph"
|
||||
, "----"
|
||||
, "Second paragraph"
|
||||
|
|
Loading…
Reference in a new issue