teardown 0.4.1.0 → 0.5.0.0
raw patch · 5 files changed
+72/−28 lines, 5 filesdep +prettyprinterdep −ansi-wl-pprintPVP ok
version bump matches the API change (PVP)
Dependencies added: prettyprinter
Dependencies removed: ansi-wl-pprint
API changes (from Hackage documentation)
- Control.Teardown: prettyTeardownResult :: TeardownResult -> Doc
+ Control.Teardown: prettyTeardownResult :: TeardownResult -> Doc ann
Files
- CHANGELOG.md +10/−0
- README.md +4/−5
- src/Control/Teardown/Internal/Printer.hs +23/−21
- src/Control/Teardown/Internal/Types.hs +33/−0
- teardown.cabal +2/−2
CHANGELOG.md view
@@ -7,6 +7,16 @@ [1]: http://semver.org/spec/v2.0.0.html [2]: https://github.com/roman/Haskell-teardown/libraries/teardown/CHANGELOG.md +## V0.5.0.0++**BREAKING CHANGES**++* Move from `ansi-wl-pprint` to `prettyprinter`+* Re-implement `Printer` using `prettyprinter` API, now `prettyTeardownResult`+ returns a `Doc` type from the `prettyprinter` library+* Add a `Pretty` instance for the `DisposeResult` type+* Add a `Display` instance for the `DisposeResult` type+ ## v0.4.1.0 * Ensure that all `IO ()` sub-routines on `runTeardown` get executed inside a
README.md view
@@ -32,17 +32,16 @@ ## Documentation -* [Tutorial](https://romanandreg.gitbooks.io/teardown/v0.4/tutorial.html)-* [How-To Guides](https://romanandreg.gitbooks.io/teardown/v0.4/how-to/create-teardown.html) * [API Reference](https://hackage.haskell.org/package/teardown)+* [How-To Guides](https://romanandreg.gitbook.io/teardown/how-to/v0.5) ## Development -[](https://travis-ci.org/roman/Haskell-teardown)-[](https://img.shields.io/github/commits-since/roman/haskell-teardown/v0.4.0.0.svg)++[](https://img.shields.io/github/commits-since/roman/haskell-teardown/v0.5.0.0.svg) [](http://packdeps.haskellers.com/feed?needle=teardown) -Follow the [developer guidelines](https://romanandreg.gitbooks.io/teardown/content/CONTRIBUTING.html)+Follow the [developer guidelines](https://romanandreg.gitbook.io/teardown/development-notes) ## License
src/Control/Teardown/Internal/Printer.hs view
@@ -2,24 +2,22 @@ {-# LANGUAGE OverloadedStrings #-} module Control.Teardown.Internal.Printer where -import Data.Monoid ((<>))-import RIO hiding ((<>))+import RIO hiding ((<>)) import Data.Typeable (typeOf) import qualified RIO.Text as Text -import Text.PrettyPrint.ANSI.Leijen hiding ((<>))-+import Data.Text.Prettyprint.Doc import Control.Teardown.Internal.Types -treeTrunk :: Int -> Int -> Doc-treeTrunk start level = hcat (map (\_ -> text " ") [1 .. start])- <> hcat (map (\_ -> text " |") [start .. level - 1])+treeTrunk :: Int -> Int -> Doc ann+treeTrunk start level = hcat (map (\_ -> " ") [1 .. start])+ <> hcat (map (\_ -> " |") [start .. level - 1]) -- | Renders an ASCII Tree with the "TeardownResult" of a "Teardown" sub-routine -- execution-prettyTeardownResult :: TeardownResult -> Doc+prettyTeardownResult :: TeardownResult -> Doc ann prettyTeardownResult result = render 0 0 result <> hardline where renderError start level (SomeException err) =@@ -33,12 +31,12 @@ errorReport = treeTrunk (start - 1) (level + 1) <> ">"- <> indent 2 (text (show (typeOf err)) <> ":")- <+> text (Text.unpack fstErrLine)+ <> indent 2 (pretty (show (typeOf err)) <> ":")+ <+> pretty (Text.unpack fstErrLine) : map (\l -> treeTrunk (start - 1) (level + 1) <> ">" <> indent 2- (text $ Text.unpack l)+ (pretty $ Text.unpack l) ) errLines in@@ -50,26 +48,30 @@ treeTrunk start (level + 1) <> render (start + 1) (level + 1) lastResult (r : results) -> treeTrunk start (level + 1)- <> render start (level + 1) r- <$$> renderTree start level results+ <> render start (level + 1) r+ <> hardline+ <> renderTree start level results+ render start level disposeResult = case disposeResult of- EmptyResult desc -> "`-" <+> "✓" <+> text (Text.unpack desc) <+> "(empty)"+ EmptyResult desc ->+ "`-" <+> "✓" <+> pretty (Text.unpack desc) <+> "(empty)" LeafResult desc elapsed Nothing ->- "`-" <+> "✓" <+> text (Text.unpack desc) <+> text+ "`-" <+> "✓" <+> pretty (Text.unpack desc) <+> pretty ("(" <> show elapsed <> ")") LeafResult desc elapsed (Just err) -> "`-"- <+> "✘"- <+> text (Text.unpack desc)- <+> text ("(" <> show elapsed <> ")")- <$$> renderError start level err+ <+> "✘"+ <+> pretty (Text.unpack desc)+ <+> pretty ("(" <> show elapsed <> ")")+ <> hardline+ <> renderError start level err BranchResult desc elapsed didFail results -> vcat [ "`-" <+> (if didFail then "✘" else "✓")- <+> text (Text.unpack desc)- <+> text ("(" <> show elapsed <> ")")+ <+> pretty (Text.unpack desc)+ <+> parens (pretty $ show elapsed) , renderTree start level results ]
src/Control/Teardown/Internal/Types.hs view
@@ -3,6 +3,7 @@ {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE OverloadedStrings #-} module Control.Teardown.Internal.Types where import RIO@@ -12,6 +13,10 @@ import GHC.Generics (Generic) #endif +import Data.Text.Prettyprint.Doc (Pretty, pretty, (<+>))+import qualified Data.Text.Prettyprint.Doc as Pretty++ -------------------------------------------------------------------------------- type Description = Text@@ -47,6 +52,34 @@ resultDescription :: !Description } deriving (Generic, Show)++instance Pretty TeardownResult where+ pretty result =+ case result of+ EmptyResult {resultDescription} ->+ "✓" <+> pretty resultDescription <+> Pretty.parens "empty"+ LeafResult {resultDescription, resultElapsedTime, resultError} ->+ case resultError of+ Nothing ->+ "✓" <+> pretty resultDescription <+> Pretty.parens (pretty $ show resultElapsedTime)+ Just err ->+ Pretty.hang 2+ (Pretty.vsep ["✘"+ <+> pretty resultDescription+ <+> Pretty.parens (pretty $ show resultElapsedTime)+ , "|" <+> pretty (show err) ])+ BranchResult {resultDidFail, resultDescription, resultElapsedTime, resultListing} ->+ let+ symbolDoc = if resultDidFail then "✘" else "✓"+ in+ symbolDoc+ <+> pretty resultDescription+ <+> Pretty.parens (pretty $ show resultElapsedTime)+ <> Pretty.hardline+ <> Pretty.indent 2 (Pretty.align (Pretty.vsep (map pretty resultListing)))++instance Display TeardownResult where+ display = displayShow . pretty getElapsedTime :: TeardownResult -> NominalDiffTime getElapsedTime result =
teardown.cabal view
@@ -1,5 +1,5 @@ name: teardown-version: 0.4.1.0+version: 0.5.0.0 cabal-version: >=1.10 build-type: Simple license: MIT@@ -39,8 +39,8 @@ exposed-modules: Control.Teardown build-depends:- ansi-wl-pprint >=0.6.7.3, base >=4.8 && <5,+ prettyprinter >=1.1, rio >=0.0.0.0, typed-process >=0.1.0.0, unliftio >=0.2.4.0