herringbone-0.0.7: test/TestHerringbone.hs
module TestHerringbone where
import Data.Text (Text)
import qualified Data.Text.Encoding as T
import Data.Monoid
import Network.Wai.Handler.Warp
import Web.Herringbone
import Web.Herringbone.Preprocessor.StdIO
import Web.Herringbone.Preprocessor.CoffeeScript
import Web.Herringbone.Preprocessor.Sass
mkMockPP :: Text -> PP
mkMockPP ext = PP { ppExtension = ext
, ppAction = \sourceData -> do
return . Right $
"Preprocessed as: " <> T.encodeUtf8 ext <> "\n" <>
sourceData
}
pp1 :: PP
pp1 = mkMockPP "pp1"
pp2 :: PP
pp2 = mkMockPP "pp2"
pp3 :: PP
pp3 = mkMockPP "pp3"
failingPP :: PP
failingPP = PP { ppExtension = "fails"
, ppAction = const . return . Left $ "Oh snap!"
}
sed :: PP
sed = makeStdIOPP "sed" "sed" ["-e", "s/e/u/"]
testHB :: Herringbone
testHB = herringbone
( addSourceDir "test/resources/assets"
. addSourceDir "test/resources/assets2"
. setDestDir "test/resources/compiled_assets"
. addPreprocessors [ pp1
, pp2
, pp3
, failingPP
, coffeeScript
, sass
, scss
, sed
]
)
runTestHB :: Int -> IO ()
runTestHB port = run port (toApplication testHB)