Powerpoint writer tests: Test everything with template as well
Modify the PowerPoint tests to run all the tests with template (--reference-doc) as well. Because there are so many interlocking pieces, bugs can pop up in weird places when using templates, since it changes how the writer builds its output file. For example, I recently discovered a bug in which speaker notes worked fine and templating worked fine elsewhere, but templating with speaker notes produced a file that would crash MS PowerPoint. That particular bug was fixed, but this will forces us to check for that with each new change.
This commit is contained in:
parent
b3f2efd35a
commit
f6eac1ad7e
11 changed files with 72 additions and 48 deletions
|
@ -3,54 +3,78 @@ module Tests.Writers.Powerpoint (tests) where
|
|||
import Tests.Writers.OOXML (ooxmlTest)
|
||||
import Text.Pandoc
|
||||
import Test.Tasty
|
||||
import System.FilePath
|
||||
|
||||
-- templating is important enough, and can break enough things, that
|
||||
-- we want to run all our tests with both default formatting and a
|
||||
-- template.
|
||||
|
||||
modifyPptxName :: FilePath -> FilePath
|
||||
modifyPptxName fp =
|
||||
addExtension (dropExtension fp ++ "_templated") "pptx"
|
||||
|
||||
pptxTests :: String -> WriterOptions -> FilePath -> FilePath -> (TestTree, TestTree)
|
||||
pptxTests name opts native pptx =
|
||||
let referenceDoc = "pptx/reference_depth.pptx"
|
||||
in
|
||||
( ooxmlTest
|
||||
writePowerpoint
|
||||
name
|
||||
opts{writerReferenceDoc=Nothing}
|
||||
native
|
||||
pptx
|
||||
, ooxmlTest
|
||||
writePowerpoint
|
||||
name
|
||||
opts{writerReferenceDoc=Just referenceDoc}
|
||||
native
|
||||
(modifyPptxName pptx)
|
||||
)
|
||||
|
||||
groupPptxTests :: [(TestTree, TestTree)] -> [TestTree]
|
||||
groupPptxTests pairs =
|
||||
let (noRefs, refs) = unzip pairs
|
||||
in
|
||||
[ testGroup "Default slide formatting" noRefs
|
||||
, testGroup "With `--reference-doc` pptx file" refs
|
||||
]
|
||||
|
||||
pptxTest :: String -> WriterOptions -> FilePath -> FilePath -> TestTree
|
||||
pptxTest = ooxmlTest writePowerpoint
|
||||
|
||||
tests :: [TestTree]
|
||||
tests = [ pptxTest
|
||||
"Inline formatting"
|
||||
def
|
||||
"pptx/inline_formatting.native"
|
||||
"pptx/inline_formatting.pptx"
|
||||
, pptxTest
|
||||
"Slide breaks (default slide-level)"
|
||||
def
|
||||
"pptx/slide_breaks.native"
|
||||
"pptx/slide_breaks.pptx"
|
||||
, pptxTest
|
||||
"slide breaks (slide-level set to 1)"
|
||||
def{ writerSlideLevel = Just 1 }
|
||||
"pptx/slide_breaks.native"
|
||||
"pptx/slide_breaks_slide_level_1.pptx"
|
||||
, pptxTest
|
||||
"table of contents"
|
||||
def{ writerTableOfContents = True }
|
||||
"pptx/slide_breaks.native"
|
||||
"pptx/slide_breaks_toc.pptx"
|
||||
, pptxTest
|
||||
"end notes"
|
||||
def
|
||||
"pptx/endnotes.native"
|
||||
"pptx/endnotes.pptx"
|
||||
, pptxTest
|
||||
"end notes, with table of contents"
|
||||
def { writerTableOfContents = True }
|
||||
"pptx/endnotes.native"
|
||||
"pptx/endnotes_toc.pptx"
|
||||
, pptxTest
|
||||
"images"
|
||||
def
|
||||
"pptx/images.native"
|
||||
"pptx/images.pptx"
|
||||
, pptxTest
|
||||
"two-column layout"
|
||||
def
|
||||
"pptx/two_column.native"
|
||||
"pptx/two_column.pptx"
|
||||
, pptxTest
|
||||
"speaker notes"
|
||||
def
|
||||
"pptx/speaker_notes.native"
|
||||
"pptx/speaker_notes.pptx"
|
||||
]
|
||||
tests = groupPptxTests [ pptxTests "Inline formatting"
|
||||
def
|
||||
"pptx/inline_formatting.native"
|
||||
"pptx/inline_formatting.pptx"
|
||||
, pptxTests "Slide breaks (default slide-level)"
|
||||
def
|
||||
"pptx/slide_breaks.native"
|
||||
"pptx/slide_breaks.pptx"
|
||||
, pptxTests "slide breaks (slide-level set to 1)"
|
||||
def{ writerSlideLevel = Just 1 }
|
||||
"pptx/slide_breaks.native"
|
||||
"pptx/slide_breaks_slide_level_1.pptx"
|
||||
, pptxTests "table of contents"
|
||||
def{ writerTableOfContents = True }
|
||||
"pptx/slide_breaks.native"
|
||||
"pptx/slide_breaks_toc.pptx"
|
||||
, pptxTests "end notes"
|
||||
def
|
||||
"pptx/endnotes.native"
|
||||
"pptx/endnotes.pptx"
|
||||
, pptxTests "end notes, with table of contents"
|
||||
def { writerTableOfContents = True }
|
||||
"pptx/endnotes.native"
|
||||
"pptx/endnotes_toc.pptx"
|
||||
, pptxTests "images"
|
||||
def
|
||||
"pptx/images.native"
|
||||
"pptx/images.pptx"
|
||||
, pptxTests "two-column layout"
|
||||
def
|
||||
"pptx/two_column.native"
|
||||
"pptx/two_column.pptx"
|
||||
, pptxTests "speaker notes"
|
||||
def
|
||||
"pptx/speaker_notes.native"
|
||||
"pptx/speaker_notes.pptx"
|
||||
]
|
||||
|
|
BIN
test/pptx/endnotes_templated.pptx
Normal file
BIN
test/pptx/endnotes_templated.pptx
Normal file
Binary file not shown.
BIN
test/pptx/endnotes_toc_templated.pptx
Normal file
BIN
test/pptx/endnotes_toc_templated.pptx
Normal file
Binary file not shown.
BIN
test/pptx/images_templated.pptx
Normal file
BIN
test/pptx/images_templated.pptx
Normal file
Binary file not shown.
BIN
test/pptx/inline_formatting_templated.pptx
Normal file
BIN
test/pptx/inline_formatting_templated.pptx
Normal file
Binary file not shown.
BIN
test/pptx/reference_depth.pptx
Normal file
BIN
test/pptx/reference_depth.pptx
Normal file
Binary file not shown.
BIN
test/pptx/slide_breaks_slide_level_1_templated.pptx
Normal file
BIN
test/pptx/slide_breaks_slide_level_1_templated.pptx
Normal file
Binary file not shown.
BIN
test/pptx/slide_breaks_templated.pptx
Normal file
BIN
test/pptx/slide_breaks_templated.pptx
Normal file
Binary file not shown.
BIN
test/pptx/slide_breaks_toc_templated.pptx
Normal file
BIN
test/pptx/slide_breaks_toc_templated.pptx
Normal file
Binary file not shown.
BIN
test/pptx/speaker_notes_templated.pptx
Normal file
BIN
test/pptx/speaker_notes_templated.pptx
Normal file
Binary file not shown.
BIN
test/pptx/two_column_templated.pptx
Normal file
BIN
test/pptx/two_column_templated.pptx
Normal file
Binary file not shown.
Loading…
Reference in a new issue