From 54526525bf2035b8517a8abf45def9c4aaa9444c Mon Sep 17 00:00:00 2001 From: Jesse Rosenthal Date: Sun, 21 Jan 2018 00:25:03 -0500 Subject: [PATCH] Powerpoint writer tests: New test framework for pptx. Previously we had tested certain properties of the output PowerPoint slides. Corruption, though, comes as the result of a numebr of interrelated issues in the output pptx archive. This is a new approach, which compares the output of the Powerpoint writer with files that we know to (a) not be corrupt, and (b) to show the desired output behavior (details below). This commit introduces three tests using the new framework. More will follow. The test procedure: given a native file and a pptx file, we generate a pptx archive from the native file, and then test: 1. Whether the same files are in the two archives 2. Whether each of the contained xml files is the same. (We skip time entries in `docProps/core.xml`, since these are derived from IO. We just check to make sure that they're there in the same way in both files.) 3. Whether each of the media files is the same. Note that steps 2 and 3, though they compare multiple files, are one test each, since the number of files depends on the input file (if there is a failure, it will only report the first failed file comparison in the test failure). --- pandoc.cabal | 2 + test/Tests/Writers/Powerpoint.hs | 327 ++++++++++++---------- test/pptx/inline_formatting.native | 5 + test/pptx/inline_formatting.pptx | Bin 0 -> 25582 bytes test/pptx/slide_breaks.native | 7 + test/pptx/slide_breaks.pptx | Bin 0 -> 28032 bytes test/pptx/slide_breaks_slide_level_1.pptx | Bin 0 -> 27202 bytes 7 files changed, 191 insertions(+), 150 deletions(-) create mode 100644 test/pptx/inline_formatting.native create mode 100644 test/pptx/inline_formatting.pptx create mode 100644 test/pptx/slide_breaks.native create mode 100644 test/pptx/slide_breaks.pptx create mode 100644 test/pptx/slide_breaks_slide_level_1.pptx diff --git a/pandoc.cabal b/pandoc.cabal index 0d81bcdf4..148a3a81c 100644 --- a/pandoc.cabal +++ b/pandoc.cabal @@ -302,6 +302,8 @@ extra-source-files: test/docx/*.native test/epub/*.epub test/epub/*.native + test/pptx/*.pptx + test/pptx/*.native test/txt2tags.t2t test/twiki-reader.twiki test/tikiwiki-reader.tikiwiki diff --git a/test/Tests/Writers/Powerpoint.hs b/test/Tests/Writers/Powerpoint.hs index e179742ed..139081013 100644 --- a/test/Tests/Writers/Powerpoint.hs +++ b/test/Tests/Writers/Powerpoint.hs @@ -1,169 +1,196 @@ +{-# LANGUAGE PatternGuards #-} {-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE MultiWayIf #-} module Tests.Writers.Powerpoint (tests) where -import Control.Exception (throwIO) +-- import Control.Exception (throwIO) import Text.Pandoc -import Text.Pandoc.Builder -import Text.Pandoc.Arbitrary () -import Text.Pandoc.Walk import Test.Tasty import Test.Tasty.HUnit -import Test.Tasty.QuickCheck import Codec.Archive.Zip import Text.XML.Light -import Data.List (isPrefixOf, isSuffixOf, sort) -import Data.Maybe (mapMaybe) - -getPptxArchive :: WriterOptions -> Pandoc -> IO Archive -getPptxArchive opts pd = do - mbs <- runIO $ - do setUserDataDir $ Just "../data" - writePowerpoint opts pd - case mbs of - Left e -> throwIO e - Right bs -> return $ toArchive bs - ------ Number of Slides ----------- - -numberOfSlides :: WriterOptions -> Pandoc -> IO Int -numberOfSlides opts pd = do - archive <- getPptxArchive opts pd - return $ - length $ - filter (isSuffixOf ".xml") $ - filter (isPrefixOf "ppt/slides/slide") $ - filesInArchive archive - -testNumberOfSlides :: TestName -> Int -> WriterOptions -> Pandoc -> TestTree -testNumberOfSlides name n opts pd = - testCase name $ do - n' <- numberOfSlides opts pd - n' @=? n - -numSlideTests :: TestTree -numSlideTests = testGroup "Number of slides in output" - [ testNumberOfSlides - "simple one-slide deck" 1 - def - (doc $ para "foo") - , testNumberOfSlides - "with metadata (header slide)" 2 - def - (setTitle "My Title" $ doc $ para "foo") - , testNumberOfSlides - "With h1 slide (using default slide-level)" 1 - def - (doc $ header 1 "Header" <> para "foo") - , testNumberOfSlides - "With h2 slide (using default slide-level)" 2 - def - (doc $ header 1 "Header" <> header 2 "subeader" <> para "foo") - , testNumberOfSlides - "With h1 slide (using slide-level 3)" 2 - def {writerSlideLevel= Just 3} - (doc $ header 1 "Header" <> para "foo") - , testNumberOfSlides - "With h2 slide (using slide-level 3)" 3 - def {writerSlideLevel= Just 3} - (doc $ header 1 "Header" <> header 2 "subeader" <> para "foo") - , testNumberOfSlides - "With image slide, no header" 3 - def - (doc $ - para "first slide" <> - para (image "lalune.jpg" "" "") <> - para "foo") - , testNumberOfSlides - "With image slide, header" 3 - def - (doc $ - para "first slide" <> - header 2 "image header" <> - para (image "lalune.jpg" "" "") <> - para "foo") - , testNumberOfSlides - "With table, no header" 3 - def - (doc $ - para "first slide" <> - simpleTable [para "foo" <> para "bar"] [[para "this" <> para "that"]] <> - para "foo") - , testNumberOfSlides - "With table, header" 3 - def - (doc $ - para "first slide" <> - header 2 "table header" <> - simpleTable [para "foo" <> para "bar"] [[para "this" <> para "that"]] <> - para "foo") - , testNumberOfSlides - "hrule" 2 - def - (doc $ - para "first slide" <> horizontalRule <> para "last slide") - , testNumberOfSlides - "with notes slide" 2 - def - (doc $ - para $ text "Foo" <> note (para "note text")) - ] - ------ Content Types ----------- +import qualified Data.ByteString.Lazy as BL +import qualified Data.Text.IO as T +import Data.List (isPrefixOf, isSuffixOf, sort, (\\), intercalate) +import Data.Maybe (fromJust, isNothing) +import Tests.Helpers +import Data.Algorithm.Diff +import Control.Monad (when) -contentTypesFileExists :: WriterOptions -> Pandoc -> TestTree -contentTypesFileExists opts pd = - testCase "Existence of [Content_Types].xml file" $ - do archive <- getPptxArchive opts pd - assertBool "Missing [Content_Types].xml file" $ - "[Content_Types].xml" `elem` filesInArchive archive +getPptxBytes :: WriterOptions + -> FilePath + -> FilePath + -> IO (BL.ByteString, BL.ByteString) +getPptxBytes opts nativeFp pptxFp = do + ntvTxt <- T.readFile nativeFp + ntv <- runIOorExplode $ readNative def ntvTxt + myPptxBs <- runIOorExplode $ writePowerpoint opts ntv + goodPptxBs <- BL.readFile pptxFp + return (myPptxBs, goodPptxBs) +assertSameFileList :: Archive -> Archive -> FilePath -> Assertion +assertSameFileList myArch goodArch pptxFp = do + let filesMy = filesInArchive myArch + filesGood = filesInArchive goodArch + diffMyGood = filesMy \\ filesGood + diffGoodMy = filesGood \\ filesMy + if | null diffMyGood && null diffGoodMy -> return () + | null diffMyGood -> + assertFailure $ + "Files in " ++ pptxFp ++ " but not in generated archive:\n" ++ + intercalate ", " diffGoodMy + | null diffGoodMy -> + assertFailure $ + "Files in generated archive but not in " ++ pptxFp ++ ":\n" ++ + intercalate ", " diffMyGood + | otherwise -> + assertFailure $ + "Files in " ++ pptxFp ++ " but not in generated archive:\n" ++ + intercalate ", " diffGoodMy ++ + "\n" ++ + "Files in generated archive but not in " ++ pptxFp ++ ":\n" ++ + intercalate ", " diffMyGood --- We want an "Override" entry for each xml file under ppt/. -prop_ContentOverrides :: Pandoc -> IO Bool -prop_ContentOverrides pd = do - -- remove Math to avoid warnings - let go :: Inline -> Inline - go (Math _ _) = Str "Math" - go i = i - pd' = walk go pd - archive <- getPptxArchive def pd' - let xmlFiles = filter ("[Content_Types].xml" /=) $ - filter (isSuffixOf ".xml") $ - filesInArchive archive - contentTypes <- case findEntryByPath "[Content_Types].xml" archive of - Just ent -> return $ fromEntry ent - Nothing -> throwIO $ - PandocSomeError "Missing [Content_Types].xml file" - typesElem <- case parseXMLDoc contentTypes of - Just element -> return element - Nothing -> throwIO $ - PandocSomeError "[Content_Types].xml cannot be parsed" - let ns = findAttr (QName "xmlns" Nothing Nothing) typesElem - overrides = findChildren (QName "Override" ns Nothing) typesElem - partNames = mapMaybe (findAttr (QName "PartName" Nothing Nothing)) overrides - -- files in content_types are absolute - absXmlFiles = map (\fp -> case fp of - ('/':_) -> fp - _ -> '/': fp - ) - xmlFiles - return $ sort absXmlFiles == sort partNames +compareXMLBool :: Content -> Content -> Bool +-- We make a special exception for times at the moment, and just pass +-- them because we can't control the utctime when running IO. Besides, +-- so long as we have two times, we're okay. +compareXMLBool (Elem myElem) (Elem goodElem) + | (QName "created" _ (Just "dcterms")) <- elName myElem + , (QName "created" _ (Just "dcterms")) <- elName goodElem = + True +compareXMLBool (Elem myElem) (Elem goodElem) + | (QName "modified" _ (Just "dcterms")) <- elName myElem + , (QName "modified" _ (Just "dcterms")) <- elName goodElem = + True +compareXMLBool (Elem myElem) (Elem goodElem) = + and [ elName myElem == elName goodElem + , elAttribs myElem == elAttribs goodElem + , and $ + map (uncurry compareXMLBool) $ + zip (elContent myElem) (elContent goodElem) + ] +compareXMLBool (Text myCData) (Text goodCData) = + and [ cdVerbatim myCData == cdVerbatim goodCData + , cdData myCData == cdData goodCData + , cdLine myCData == cdLine goodCData + ] +compareXMLBool (CRef myStr) (CRef goodStr) = + myStr == goodStr +compareXMLBool _ _ = False -contentOverridesTests :: TestTree -contentOverridesTests = localOption (QuickCheckTests 20) $ - testProperty "Content Overrides for each XML file" $ - \x -> ioProperty $ prop_ContentOverrides (x :: Pandoc) +displayDiff :: Content -> Content -> String +displayDiff elemA elemB = + showDiff (1,1) $ getDiff (lines $ ppContent elemA) (lines $ ppContent elemB) -contentTypeTests :: TestTree -contentTypeTests = testGroup "[Content_Types].xml file" - [ contentTypesFileExists def (doc $ para "foo") - , contentOverridesTests - ] +compareXMLFile :: FilePath -> Archive -> Archive -> Assertion +compareXMLFile fp myArch goodArch = do + let mbMyEntry = findEntryByPath fp myArch + when (isNothing mbMyEntry) + (assertFailure $ + "Can't extract " ++ fp ++ " from generated archive") + let mbMyXMLDoc = parseXMLDoc $ fromEntry $ fromJust mbMyEntry + when (isNothing mbMyXMLDoc) + (assertFailure $ + "Can't parse xml in " ++ fp ++ " from generated archive") + let myContent = Elem $ fromJust mbMyXMLDoc + + let mbGoodEntry = findEntryByPath fp goodArch + when (isNothing mbGoodEntry) + (assertFailure $ + "Can't extract " ++ fp ++ " from archive in stored pptx file") + let mbGoodXMLDoc = parseXMLDoc $ fromEntry $ fromJust mbGoodEntry + when (isNothing mbGoodXMLDoc) + (assertFailure $ + "Can't parse xml in " ++ fp ++ " from archive in stored pptx file") + let goodContent = Elem $ fromJust mbGoodXMLDoc + + assertBool + ("Non-matching xml in " ++ fp ++ ":\n" ++ displayDiff myContent goodContent) + (compareXMLBool myContent goodContent) + +compareBinaryFile :: FilePath -> Archive -> Archive -> Assertion +compareBinaryFile fp myArch goodArch = do + let mbMyEntry = findEntryByPath fp myArch + when (isNothing mbMyEntry) + (assertFailure $ + "Can't extract " ++ fp ++ " from generated archive") + let myBytes = fromEntry $ fromJust mbMyEntry + + let mbGoodEntry = findEntryByPath fp goodArch + when (isNothing mbGoodEntry) + (assertFailure $ + "Can't extract " ++ fp ++ " from archive in stored pptx file") + let goodBytes = fromEntry $ fromJust mbGoodEntry + + assertBool (fp ++ " doesn't match") (myBytes == goodBytes) + +testSameFileList :: WriterOptions -> FilePath -> FilePath -> TestTree +testSameFileList opts myFp goodFp = + testCase ("Identical file list in archives") $ do + (myBS, goodBS) <- getPptxBytes opts myFp goodFp + let myArch = toArchive myBS + goodArch = toArchive goodBS + (assertSameFileList myArch goodArch goodFp) + +testSameXML :: WriterOptions -> FilePath -> FilePath -> TestTree +testSameXML opts myFp goodFp = testCaseSteps "Comparing extracted xml files" $ + \step -> do + (myBS, goodBS) <- getPptxBytes opts myFp goodFp + let myArch = toArchive myBS + goodArch = toArchive goodBS + + let xmlFileList = sort $ + filter (\fp -> ".xml" `isSuffixOf` fp || ".rels" `isSuffixOf` fp) + (filesInArchive myArch) + mapM_ + (\fp -> step ("- " ++ fp) >> compareXMLFile fp myArch goodArch) + xmlFileList + +testSameMedia :: WriterOptions -> FilePath -> FilePath -> TestTree +testSameMedia opts myFp goodFp = testCaseSteps "Comparing media files" $ + \step -> do + (myBS, goodBS) <- getPptxBytes opts myFp goodFp + let myArch = toArchive myBS + goodArch = toArchive goodBS + + let mediaFileList = sort $ + filter (\fp -> "ppt/media/" `isPrefixOf` fp) + (filesInArchive myArch) + + mapM_ + (\fp -> step ("- " ++ fp) >> compareBinaryFile fp myArch goodArch) + mediaFileList + +testCompareWithOpts :: String -> WriterOptions ->FilePath -> FilePath -> TestTree +testCompareWithOpts testName opts nativeFp pptxFp = + testGroup testName [ testSameFileList opts nativeFp pptxFp + , testSameXML opts nativeFp pptxFp + , testSameMedia opts nativeFp pptxFp + ] + + +testCompare :: String -> FilePath -> FilePath -> TestTree +testCompare testName nativeFp pptxFp = + testCompareWithOpts testName def nativeFp pptxFp + +-------------------------------------------------------------- tests :: [TestTree] -tests = [ numSlideTests - , contentTypeTests +tests = [ testCompare + "Inline formatting" + "pptx/inline_formatting.native" + "pptx/inline_formatting.pptx" + , testCompare + "slide breaks (default slide-level)" + "pptx/slide_breaks.native" + "pptx/slide_breaks.pptx" + , testCompareWithOpts + "slide breaks (slide-level set to 1)" + def{writerSlideLevel=Just 1} + "pptx/slide_breaks.native" + "pptx/slide_breaks_slide_level_1.pptx" ] diff --git a/test/pptx/inline_formatting.native b/test/pptx/inline_formatting.native new file mode 100644 index 000000000..d79220e4f --- /dev/null +++ b/test/pptx/inline_formatting.native @@ -0,0 +1,5 @@ +Pandoc (Meta {unMeta = fromList []}) +[Para [Str "Here",Space,Str "are",Space,Str "examples",Space,Str "of",Space,Emph [Str "italics"],Str ",",Space,Strong [Str "bold"],Str ",",Space,Str "and",Space,Strong [Emph [Str "bold",Space,Str "italics"]],Str "."] +,Para [Str "Here",Space,Str "is",Space,Strikeout [Str "strook-three"],Space,Str "strike-through",Space,Str "and",Space,SmallCaps [Str "small",Space,Str "caps"],Str "."] +,Para [Str "We",Space,Str "can",Space,Str "also",Space,Str "do",Space,Str "subscripts",Space,Str "(H",Subscript [Str "2"],Str "0)",Space,Str "and",Space,Str "super",Superscript [Str "script"],Str "."] +,RawBlock (Format "html") ""] diff --git a/test/pptx/inline_formatting.pptx b/test/pptx/inline_formatting.pptx new file mode 100644 index 0000000000000000000000000000000000000000..e128f1bce58116e198f5c93ff51e0ba7877bc366 GIT binary patch literal 25582 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 F{{ik1rSt#* literal 0 HcmV?d00001 diff --git a/test/pptx/slide_breaks.native b/test/pptx/slide_breaks.native new file mode 100644 index 000000000..084c61737 --- /dev/null +++ b/test/pptx/slide_breaks.native @@ -0,0 +1,7 @@ +Pandoc (Meta {unMeta = fromList []}) +[Para [Str "Break",Space,Str "with",Space,Str "a",Space,Str "new",Space,Str "section-level",Space,Str "header"] +,Header 1 ("below-section-level",[],[]) [Str "Below",Space,Str "section-level"] +,Header 2 ("section-level",[],[]) [Str "Section-level"] +,Para [Str "Third",Space,Str "slide",Space,Str "(with",Space,Str "a",Space,Str "section-level",Space,Str "of",Space,Str "2)"] +,HorizontalRule +,Para [Str "This",Space,Str "is",Space,Str "another",Space,Str "slide."]] diff --git a/test/pptx/slide_breaks.pptx b/test/pptx/slide_breaks.pptx new file mode 100644 index 0000000000000000000000000000000000000000..b22b0bc5004f6f98b9938b2be1ded6ce283b38e2 GIT binary patch literal 28032 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 N4SHQzXma@5e*n8B*}eb( literal 0 HcmV?d00001 diff --git a/test/pptx/slide_breaks_slide_level_1.pptx b/test/pptx/slide_breaks_slide_level_1.pptx new file mode 100644 index 0000000000000000000000000000000000000000..d4d7bc415620ffd22d2d9b0845403318b3c85468 GIT binary patch literal 27202 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