From f56acd06e4e81f18ba6dee67053954f3892a4de0 Mon Sep 17 00:00:00 2001 From: vi Date: Fri, 25 Jul 2014 17:27:50 +0800 Subject: [PATCH] A test suite to validate a successful parse on each html_files/*html. --- taggy.cabal | 30 +++++++++++++++++-- tests/integration/Main.hs | 24 +++++++++++++++ tests/{ => unit}/Spec.hs | 0 .../{ => unit}/Text/Taggy/CombinatorsSpec.hs | 0 tests/{ => unit}/Text/Taggy/EntitiesSpec.hs | 0 tests/{ => unit}/Text/Taggy/ParserSpec.hs | 0 tests/{ => unit}/Text/Taggy/RendererSpec.hs | 0 7 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 tests/integration/Main.hs rename tests/{ => unit}/Spec.hs (100%) rename tests/{ => unit}/Text/Taggy/CombinatorsSpec.hs (100%) rename tests/{ => unit}/Text/Taggy/EntitiesSpec.hs (100%) rename tests/{ => unit}/Text/Taggy/ParserSpec.hs (100%) rename tests/{ => unit}/Text/Taggy/RendererSpec.hs (100%) diff --git a/taggy.cabal b/taggy.cabal index 111a557..64bc941 100644 --- a/taggy.cabal +++ b/taggy.cabal @@ -45,6 +45,7 @@ copyright: 2014 Alp Mestanogullari, Vikram Verma category: Text, Web build-type: Simple extra-source-files: html_files/*.html +data-files: html_files/*.html cabal-version: >=1.10 library @@ -93,13 +94,13 @@ benchmark taggytagsoup vector default-language: Haskell2010 -test-suite spec +test-suite unit type: exitcode-stdio-1.0 ghc-options: -Wall -O -fno-warn-unused-do-bind hs-source-dirs: - src, tests + src, tests/unit main-is: Spec.hs build-depends: @@ -114,3 +115,28 @@ test-suite spec , unordered-containers default-language: Haskell2010 + +test-suite integration + type: + exitcode-stdio-1.0 + ghc-options: + -Wall -Werror -O -fno-warn-unused-do-bind + hs-source-dirs: + src, tests/integration + main-is: + Main.hs + build-depends: + base == 4.* + , blaze-html + , blaze-markup + , directory + , text + , hspec >= 1.11 + , hspec-attoparsec + , vector + , attoparsec + , unordered-containers + other-modules: + Paths_taggy + default-language: + Haskell2010 diff --git a/tests/integration/Main.hs b/tests/integration/Main.hs new file mode 100644 index 0000000..d0c2d61 --- /dev/null +++ b/tests/integration/Main.hs @@ -0,0 +1,24 @@ +{-# LANGUAGE TupleSections #-} + +module Main (main) where + +import Prelude hiding (readFile) +import Data.Functor ((<$>)) +import Data.List (isSuffixOf) +import Data.Text.Lazy (Text) +import Data.Text.Lazy.IO (readFile) +import Paths_taggy (getDataFileName) +import System.Directory (getDirectoryContents, setCurrentDirectory) +import Test.Hspec (hspec, runIO, describe, it, shouldSatisfy) +import Text.Taggy (taggyWith) + +getHTMLFiles :: IO [(FilePath, Text)] +getHTMLFiles = getDataFileName "html_files" + >>= setCurrentDirectory + >> filter (isSuffixOf ".html") <$> getDirectoryContents "." + >>= mapM (\name -> fmap (name,) $ readFile name) + +main :: IO () +main = hspec . (runIO getHTMLFiles >>=) . mapM_ $ \(name, content) -> + describe name . it "Should parse without error." $ + taggyWith True content `shouldSatisfy` not . null diff --git a/tests/Spec.hs b/tests/unit/Spec.hs similarity index 100% rename from tests/Spec.hs rename to tests/unit/Spec.hs diff --git a/tests/Text/Taggy/CombinatorsSpec.hs b/tests/unit/Text/Taggy/CombinatorsSpec.hs similarity index 100% rename from tests/Text/Taggy/CombinatorsSpec.hs rename to tests/unit/Text/Taggy/CombinatorsSpec.hs diff --git a/tests/Text/Taggy/EntitiesSpec.hs b/tests/unit/Text/Taggy/EntitiesSpec.hs similarity index 100% rename from tests/Text/Taggy/EntitiesSpec.hs rename to tests/unit/Text/Taggy/EntitiesSpec.hs diff --git a/tests/Text/Taggy/ParserSpec.hs b/tests/unit/Text/Taggy/ParserSpec.hs similarity index 100% rename from tests/Text/Taggy/ParserSpec.hs rename to tests/unit/Text/Taggy/ParserSpec.hs diff --git a/tests/Text/Taggy/RendererSpec.hs b/tests/unit/Text/Taggy/RendererSpec.hs similarity index 100% rename from tests/Text/Taggy/RendererSpec.hs rename to tests/unit/Text/Taggy/RendererSpec.hs