@@ -52,23 +52,6 @@ showDiff ((F, ln) : ds) = "|TEST| " ++ ln ++ "\n" ++ showDiff ds
5252showDiff ((S, ln) : ds) = "|NORM| " ++ ln ++ "\n" ++ showDiff ds
5353showDiff ((B, _ ) : ds) = showDiff ds
5454
55−lhsWriterFormats :: [String]
56−lhsWriterFormats = [ "markdown"
57− , "markdown+lhs"
58− , "rst"
59− , "rst+lhs"
60− , "latex"
61− , "latex+lhs"
62− , "html"
63− , "html+lhs"
64− ]
65−
66−lhsReaderFormats :: [String]
67−lhsReaderFormats = [ "markdown+lhs"
68− , "rst+lhs"
69− , "latex+lhs"
70− ]
71−
7255markdownCitationTest :: Test
7356markdownCitationTest
7457 = testGroup "citations" $ map styleToTest ["chicago-author-date","ieee","mhra"]
@@ -81,30 +64,34 @@ markdownCitationTest
8164
8265
8366tests :: [Test]
84−tests = [ testGroup "markdown" [ runWriterTest "" "markdown"
67+tests = [ testGroup "markdown" [ testGroup "writer" (runWriterTests "markdown" ++ runLhsWriterTests "markdown")
8568 , testGroup "reader" [ runTest "basic" ["-r", "markdown", "-w", "native", "-s", "-S"]
8669 "testsuite.txt" "testsuite.native"
8770 , runTest "tables" ["-r", "markdown", "-w", "native"]
8871 "tables.txt" "tables.native"
8972 , runTest "more" ["-r", "markdown", "-w", "native", "-S"]
9073 "markdown-reader-more.txt" "markdown-reader-more.native"
74+ , runLhsReaderTest "markdown+lhs"
9175 ]
9276 , markdownCitationTest
9377 ]
94− , testGroup "rst" [ runWriterTest "" "rst"
78+ , testGroup "rst" [ testGroup "writer" (runWriterTests "rst" ++ runLhsWriterTests "rst")
9579 , testGroup "reader" [ runTest "basic" ["-r", "rst", "-w", "native", "-s", "-S"]
9680 "rst-reader.rst" "rst-reader.native"
9781 , runTest "tables" ["-r", "rst", "-w", "native"]
9882 "tables.rst" "tables-rstsubset.native"
83+ , runLhsReaderTest "rst+lhs"
9984 ]
10085 ]
101− , testGroup "latex" [ runWriterTest "" "latex"
102− , runTest "reader" ["-r", "latex", "-w", "native", "-s", "-R"]
103− "latex-reader.latex" "latex-reader.native"
86+ , testGroup "latex" [ testGroup "writer" (runWriterTests "latex" ++ runLhsWriterTests "latex")
87+ , testGroup "reader" [ runTest "basic" ["-r", "latex", "-w", "native", "-s", "-R"]
88+ "latex-reader.latex" "latex-reader.native"
89+ , runLhsReaderTest "latex+lhs"
90+ ]
10491 , runLatexCitationTests "biblatex"
10592 , runLatexCitationTests "natbib"
10693 ]
107− , testGroup "html" [ runWriterTest "" "html"
94+ , testGroup "html" [ testGroup "writer" (runWriterTests "html" ++ runLhsWriterTests "html")
10895 , runTest "reader" ["-r", "html", "-w", "native", "-s"]
10996 "html-reader.html" "html-reader.native"
11097 ]
@@ -114,20 +101,18 @@ tests = [ testGroup "markdown" [ runWriterTest "" "markdown"
114101 , runS5WriterTest "inserts" ["-s", "-H", "insert",
115102 "-B", "insert", "-A", "insert", "-c", "main.css"] "html"
116103 ]
117− , testGroup "textile" [ runWriterTest "" "textile"
104+ , testGroup "textile" [ testGroup "writer" $ runWriterTests "textile"
118105 , runTest "reader" ["-r", "textile", "-w", "native", "-s"]
119106 "textile-reader.textile" "textile-reader.native"
120107 ]
121− , testGroup "native" [ runWriterTest "" "native"
108+ , testGroup "native" [ testGroup "writer" $ runWriterTests "native"
122109 , runTest "reader" ["-r", "native", "-w", "native", "-s"]
123110 "testsuite.native" "testsuite.native"
124111 ]
125− , testGroup "other writers" $ map (\f -> runWriterTest f f) [ "docbook", "opendocument" , "context" , "texinfo"
126− , "man" , "plain" , "mediawiki", "rtf", "org"
127− ]
128− , testGroup "lhs" [ testGroup "writer" $ map runLhsWriterTest lhsWriterFormats
129− , testGroup "reader" $ map runLhsReaderTest lhsReaderFormats
130− ]
112+ , testGroup "other writers" $ map (\f -> testGroup f $ runWriterTests f)
113+ [ "docbook", "opendocument" , "context" , "texinfo"
114+ , "man" , "plain" , "mediawiki", "rtf", "org"
115+ ]
131116 ]
132117
133118main :: IO ()
@@ -138,13 +123,18 @@ readFile' :: FilePath -> IO String
138123readFile' f = do s <- readFileUTF8 f
139124 return $! (length s `seq` s)
140125
141−runLhsWriterTest :: String -> Test
142−runLhsWriterTest format =
143− runTest format ["--columns=78", "-r", "native", "-s", "-w", format] "lhs-test.native" ("lhs-test" <.> format)
126+runLhsWriterTests :: String -> [Test]
127+runLhsWriterTests format
128+ = [ t "lhs to normal" format
129+ , t "lhs to lhs" (format ++ "+lhs")
130+ ]
131+ where
132+ t n f = runTest n ["--columns=78", "-r", "native", "-s", "-w", f]
133+ "lhs-test.native" ("lhs-test" <.> f)
144134
145135runLhsReaderTest :: String -> Test
146136runLhsReaderTest format =
147− runTest format ["-r", format, "-w", "html+lhs"] ("lhs-test" <.> format) "lhs-test.fragment.html+lhs"
137+ runTest "lhs" ["-r", format, "-w", "html+lhs"] ("lhs-test" <.> format) "lhs-test.fragment.html+lhs"
148138
149139
150140runLatexCitationTests :: String -> Test
@@ -161,13 +151,12 @@ runLatexCitationTests n
161151 normalize = substitute "\160" " " . substitute "\8211" "-"
162152 rt = runTestWithNormalize normalize
163153
164−runWriterTest :: String -> String -> Test
165−runWriterTest prefix format
166− = testGroup name [ runTest "basic" (opts ++ ["-s"]) "testsuite.native" ("writer" <.> format)
167− , runTest "tables" opts "tables.native" ("tables" <.> format)
168− ]
154+runWriterTests :: String -> [Test]
155+runWriterTests format
156+ = [ runTest "basic" (opts ++ ["-s"]) "testsuite.native" ("writer" <.> format)
157+ , runTest "tables" opts "tables.native" ("tables" <.> format)
158+ ]
169159 where
170− name = if (null prefix) then "writer" else prefix ++ " writer"
171160 opts = ["-r", "native", "-w", format, "--columns=78"]
172161
173162runS5WriterTest :: String -> [String] -> String -> Test