Add literate tests for context free formatting
Left indent combined with no columnized alignment represents a context free formatting style for brittany. These tests allow this format to be tested until inline formatting tools are available to make these files less redundant.pull/66/head
parent
ce41178df5
commit
3bbf81baab
|
@ -40,14 +40,27 @@ data InputLine
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = do
|
main = do
|
||||||
files <- System.Directory.listDirectory "src-literatetests/"
|
files <- System.Directory.listDirectory "src-literatetests/"
|
||||||
let blts = List.sort $ filter (".blt" `isSuffixOf`) files
|
let blts =
|
||||||
|
List.sort
|
||||||
|
$ filter (\x -> not ("tests-context-free.blt" `isSuffixOf` x))
|
||||||
|
$ filter (".blt"`isSuffixOf`) files
|
||||||
inputs <- blts `forM` \blt -> Text.IO.readFile ("src-literatetests" </> blt)
|
inputs <- blts `forM` \blt -> Text.IO.readFile ("src-literatetests" </> blt)
|
||||||
let groups = createChunks =<< inputs
|
let groups = createChunks =<< inputs
|
||||||
hspec $ groups `forM_` \(groupname, tests) -> do
|
inputCtxFree <- Text.IO.readFile "src-literatetests/tests-context-free.blt"
|
||||||
|
let groupsCtxFree = createChunks inputCtxFree
|
||||||
|
hspec $ do
|
||||||
|
groups `forM_` \(groupname, tests) -> do
|
||||||
describe (Text.unpack groupname) $ tests `forM_` \(name, pend, inp) -> do
|
describe (Text.unpack groupname) $ tests `forM_` \(name, pend, inp) -> do
|
||||||
(if pend then before_ pending else id)
|
(if pend then before_ pending else id)
|
||||||
$ it (Text.unpack name)
|
$ it (Text.unpack name)
|
||||||
$ roundTripEqual inp
|
$ roundTripEqual defaultTestConfig inp
|
||||||
|
groupsCtxFree `forM_` \(groupname, tests) -> do
|
||||||
|
describe ("context free: " ++ Text.unpack groupname)
|
||||||
|
$ tests
|
||||||
|
`forM_` \(name, pend, inp) -> do
|
||||||
|
(if pend then before_ pending else id)
|
||||||
|
$ it (Text.unpack name)
|
||||||
|
$ roundTripEqual contextFreeTestConfig inp
|
||||||
where
|
where
|
||||||
-- this function might be implemented in a weirdly complex fashion; the
|
-- this function might be implemented in a weirdly complex fashion; the
|
||||||
-- reason being that it was copied from a somewhat more complex variant.
|
-- reason being that it was copied from a somewhat more complex variant.
|
||||||
|
@ -132,10 +145,10 @@ main = do
|
||||||
--------------------
|
--------------------
|
||||||
-- past this line: copy-pasta from other test (meh..)
|
-- past this line: copy-pasta from other test (meh..)
|
||||||
--------------------
|
--------------------
|
||||||
roundTripEqual :: Text -> Expectation
|
roundTripEqual :: Config -> Text -> Expectation
|
||||||
roundTripEqual t =
|
roundTripEqual c t =
|
||||||
fmap (fmap PPTextWrapper)
|
fmap (fmap PPTextWrapper)
|
||||||
(parsePrintModuleTests defaultTestConfig "TestFakeFileName.hs" t)
|
(parsePrintModuleTests c "TestFakeFileName.hs" t)
|
||||||
`shouldReturn` Right (PPTextWrapper t)
|
`shouldReturn` Right (PPTextWrapper t)
|
||||||
|
|
||||||
newtype PPTextWrapper = PPTextWrapper Text
|
newtype PPTextWrapper = PPTextWrapper Text
|
||||||
|
@ -170,3 +183,12 @@ defaultTestConfig = Config
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
contextFreeTestConfig :: Config
|
||||||
|
contextFreeTestConfig =
|
||||||
|
defaultTestConfig
|
||||||
|
{ _conf_layout = (_conf_layout defaultTestConfig)
|
||||||
|
{_lconfig_indentPolicy = coerce IndentPolicyLeft
|
||||||
|
,_lconfig_alignmentLimit = coerce (1 :: Int)
|
||||||
|
,_lconfig_columnAlignMode = coerce ColumnAlignModeDisabled
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue