hpack 0.38.3 → 0.39.0
raw patch · 10 files changed
+229/−151 lines, 10 filesdep ~cryptonPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: crypton
API changes (from Hackage documentation)
Files
- CHANGELOG.md +3/−0
- hpack.cabal +1/−1
- resources/test/hpack.cabal +1/−1
- src/Hpack/Render.hs +13/−37
- src/Hpack/Render/Dsl.hs +68/−18
- src/Hpack/Render/Hints.hs +26/−11
- test/EndToEndSpec.hs +23/−3
- test/Hpack/Render/DslSpec.hs +77/−5
- test/Hpack/Render/HintsSpec.hs +5/−4
- test/Hpack/RenderSpec.hs +12/−71
CHANGELOG.md view
@@ -1,3 +1,6 @@+## Changes in 0.39.0+ - Handle multi-line values for the `description` field of `flags` (see #623) and other fields+ ## Changes in 0.38.3 - Accept a list for `category` (see #624)
hpack.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: hpack-version: 0.38.3+version: 0.39.0 synopsis: A modern format for Haskell packages description: See README at <https://github.com/sol/hpack#readme> category: Development
resources/test/hpack.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: hpack-version: 0.38.3+version: 0.39.0 synopsis: A modern format for Haskell packages description: See README at <https://github.com/sol/hpack#readme> category: Development
src/Hpack/Render.hs view
@@ -31,7 +31,6 @@ , renderFlag , renderSourceRepository , renderDirectories-, formatDescription #endif ) where @@ -46,7 +45,7 @@ import Hpack.Util import Hpack.Config import Hpack.Render.Hints-import Hpack.Render.Dsl hiding (sortFieldsBy)+import Hpack.Render.Dsl hiding (RenderSettings(..), defaultRenderSettings, sortFieldsBy) import qualified Hpack.Render.Dsl as Dsl data RenderEnv = RenderEnv {@@ -65,18 +64,24 @@ renderPackage :: [String] -> Package -> String renderPackage oldCabalFile = renderPackageWith settings headerFieldsAlignment formattingHintsFieldOrder formattingHintsSectionsFieldOrder where- FormattingHints{..} = sniffFormattingHints oldCabalFile+ hints@FormattingHints{..} = sniffFormattingHints oldCabalFile headerFieldsAlignment = fromMaybe 16 formattingHintsAlignment- settings = formattingHintsRenderSettings+ settings = formattingHintsRenderSettings hints renderPackageWith :: RenderSettings -> Alignment -> [String] -> [(String, [String])] -> Package -> String-renderPackageWith settings headerFieldsAlignment existingFieldOrder sectionsFieldOrder Package{..} = intercalate "\n" (unlines header : chunks)+renderPackageWith RenderSettings{..} headerFieldsAlignment existingFieldOrder sectionsFieldOrder Package{..} = intercalate "\n" (unlines header : chunks) where+ settings :: Dsl.RenderSettings+ settings = Dsl.RenderSettings {+ renderSettingsEmptyLinesAsDot = packageCabalVersion < makeCabalVersion [3]+ , ..+ }+ chunks :: [String] chunks = map unlines . filter (not . null) . map (render settings 0) $ sortStanzaFields sectionsFieldOrder stanzas header :: [String]- header = concatMap (render settings {renderSettingsFieldAlignment = headerFieldsAlignment} 0) packageFields+ header = concatMap (render settings {Dsl.renderSettingsFieldAlignment = headerFieldsAlignment} 0) packageFields packageFields :: [Element] packageFields = addVerbatim packageVerbatim . sortFieldsBy existingFieldOrder $@@ -117,7 +122,7 @@ ("name", Just packageName) , ("version", Just packageVersion) , ("synopsis", packageSynopsis)- , ("description", (formatDescription packageCabalVersion headerFieldsAlignment <$> packageDescription))+ , ("description", packageDescription) , formatList "category" packageCategory , ("stability", packageStability) , ("homepage", packageHomepage)@@ -139,9 +144,7 @@ formatValues values = guard (not $ null values) >> (Just $ intercalate separator values) where separator :: String- separator = ",\n" ++ replicate n ' '- where- Alignment n = max headerFieldsAlignment (Alignment $ length field + 2)+ separator = ",\n" sortStanzaFields :: [(String, [String])] -> [Element] -> [Element] sortStanzaFields sectionsFieldOrder = go@@ -150,33 +153,6 @@ [] -> [] Stanza name fields : xs | Just fieldOrder <- lookup name sectionsFieldOrder -> Stanza name (sortFieldsBy fieldOrder fields) : go xs x : xs -> x : go xs--formatDescription :: CabalVersion -> Alignment -> String -> String-formatDescription cabalVersion (Alignment alignment) description = case map emptyLineToDot $ lines description of- x : xs -> intercalate "\n" (x : indent xs)- [] -> ""- where- n :: Int- n = max alignment (length ("description: " :: String))-- indentation :: String- indentation = replicate n ' '-- emptyLineToDot :: String -> String- emptyLineToDot xs- | isEmptyLine xs && cabalVersion < makeCabalVersion [3] = "."- | otherwise = xs-- indent :: [String] -> [String]- indent = map indentLine-- indentLine :: String -> String- indentLine xs- | isEmptyLine xs = ""- | otherwise = indentation ++ xs-- isEmptyLine :: String -> Bool- isEmptyLine = all isSpace renderSourceRepository :: SourceRepository -> Element renderSourceRepository SourceRepository{..} = Stanza "source-repository head" [
src/Hpack/Render/Dsl.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE CPP #-}+{-# LANGUAGE LambdaCase #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} module Hpack.Render.Dsl (@@ -19,13 +20,18 @@ #ifdef TEST , Lines (..)+, IndentOrAlign (..) , renderValue , addSortKey #endif ) where import Imports+import Data.Char (isSpace) +data Element = Stanza String [Element] | Group Element Element | Field String Value | Verbatim String+ deriving (Eq, Show)+ data Value = Literal String | CommaSeparatedList [String]@@ -33,10 +39,26 @@ | WordList [String] deriving (Eq, Show) -data Element = Stanza String [Element] | Group Element Element | Field String Value | Verbatim String+data Lines = SingleLine String | MultipleLines IndentOrAlign [String] deriving (Eq, Show) -data Lines = SingleLine String | MultipleLines [String]+data IndentOrAlign =+ Indent+ -- ^+ -- Indent lines, e.g.+ --+ -- description:+ -- some+ -- multiline+ -- description+ |+ Align+ -- ^+ -- Align lines with field labels, e.g.+ --+ -- description: some+ -- multiline+ -- description deriving (Eq, Show) data CommaStyle = LeadingCommas | TrailingCommas@@ -52,46 +74,72 @@ renderSettingsIndentation :: Int , renderSettingsFieldAlignment :: Alignment , renderSettingsCommaStyle :: CommaStyle+, renderSettingsEmptyLinesAsDot :: Bool } deriving (Eq, Show) defaultRenderSettings :: RenderSettings-defaultRenderSettings = RenderSettings 2 0 LeadingCommas+defaultRenderSettings = RenderSettings 2 0 LeadingCommas True render :: RenderSettings -> Nesting -> Element -> [String]-render settings nesting (Stanza name elements) = indent settings nesting name : renderElements settings (succ nesting) elements-render settings nesting (Group a b) = render settings nesting a ++ render settings nesting b-render settings nesting (Field name value) = renderField settings nesting name value-render settings nesting (Verbatim str) = map (indent settings nesting) (lines str)+render settings nesting = \ case+ Stanza name elements -> indent settings nesting name : renderElements settings (succ nesting) elements+ Group a b -> render settings nesting a ++ render settings nesting b+ Field name value -> map (indent settings nesting) $ renderField settings name value+ Verbatim str -> map (indent settings nesting) (lines str) renderElements :: RenderSettings -> Nesting -> [Element] -> [String] renderElements settings nesting = concatMap (render settings nesting) -renderField :: RenderSettings -> Nesting -> String -> Value -> [String]-renderField settings@RenderSettings{..} nesting name value = case renderValue settings value of+renderField :: RenderSettings -> String -> Value -> [String]+renderField settings@RenderSettings{..} name = renderValue settings >>> \ case SingleLine "" -> []- SingleLine x -> [indent settings nesting (name ++ ": " ++ padding ++ x)]- MultipleLines [] -> []- MultipleLines xs -> (indent settings nesting name ++ ":") : map (indent settings $ succ nesting) xs+ SingleLine value -> [fieldName ++ value]+ MultipleLines _ [] -> []+ MultipleLines Indent values -> (name ++ ":") : map (indent settings 1) values+ MultipleLines Align (value : values) -> (fieldName ++ value) : map align values where Alignment fieldAlignment = renderSettingsFieldAlignment- padding = replicate (fieldAlignment - length name - 2) ' ' + fieldName :: String+ fieldName = name ++ ": " ++ fieldNamePadding++ fieldNamePadding :: String+ fieldNamePadding = replicate (fieldAlignment - length name - 2) ' '++ align :: String -> String+ align = \ case+ "" -> ""+ value -> padding ++ value++ padding :: String+ padding = replicate (length fieldName) ' '+ renderValue :: RenderSettings -> Value -> Lines-renderValue RenderSettings{..} v = case v of- Literal s -> SingleLine s+renderValue RenderSettings{..} = \ case+ Literal string -> case lines string of+ [value] -> SingleLine value+ values -> MultipleLines Align $ map emptyLineToDot values WordList ws -> SingleLine $ unwords ws LineSeparatedList xs -> renderLineSeparatedList renderSettingsCommaStyle xs CommaSeparatedList xs -> renderCommaSeparatedList renderSettingsCommaStyle xs+ where+ emptyLineToDot :: String -> String+ emptyLineToDot xs+ | isEmptyLine xs && renderSettingsEmptyLinesAsDot = "."+ | otherwise = xs + isEmptyLine :: String -> Bool+ isEmptyLine = all isSpace+ renderLineSeparatedList :: CommaStyle -> [String] -> Lines-renderLineSeparatedList style = MultipleLines . map (padding ++)+renderLineSeparatedList style = MultipleLines Indent . map (padding ++) where padding = case style of LeadingCommas -> " " TrailingCommas -> "" renderCommaSeparatedList :: CommaStyle -> [String] -> Lines-renderCommaSeparatedList style = MultipleLines . case style of+renderCommaSeparatedList style = MultipleLines Indent . case style of LeadingCommas -> map renderLeadingComma . zip (True : repeat False) TrailingCommas -> map renderTrailingComma . reverse . zip (True : repeat False) . reverse where@@ -109,7 +157,9 @@ fromString = Literal indent :: RenderSettings -> Nesting -> String -> String-indent RenderSettings{..} (Nesting nesting) s = replicate (nesting * renderSettingsIndentation) ' ' ++ s+indent RenderSettings{..} (Nesting nesting) = \ case+ "" -> ""+ s -> replicate (nesting * renderSettingsIndentation) ' ' ++ s sortFieldsBy :: [String] -> [Element] -> [Element] sortFieldsBy existingFieldOrder =
src/Hpack/Render/Hints.hs view
@@ -1,10 +1,13 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE ViewPatterns #-}+{-# LANGUAGE RecordWildCards #-} module Hpack.Render.Hints ( FormattingHints (..) , sniffFormattingHints+, RenderSettings (..)+, defaultRenderSettings+, formattingHintsRenderSettings #ifdef TEST-, sniffRenderSettings , extractFieldOrder , extractSectionsFieldOrder , sanitize@@ -21,14 +24,16 @@ import Data.Char import Data.Maybe -import Hpack.Render.Dsl+import Hpack.Render.Dsl (Alignment(..), CommaStyle(..))+import qualified Hpack.Render.Dsl as Dsl import Hpack.Util data FormattingHints = FormattingHints { formattingHintsFieldOrder :: [String] , formattingHintsSectionsFieldOrder :: [(String, [String])] , formattingHintsAlignment :: Maybe Alignment-, formattingHintsRenderSettings :: RenderSettings+, formattingHintsIndentation :: Maybe Int+, formattingHintsCommaStyle :: Maybe CommaStyle } deriving (Eq, Show) sniffFormattingHints :: [String] -> FormattingHints@@ -36,7 +41,8 @@ formattingHintsFieldOrder = extractFieldOrder input , formattingHintsSectionsFieldOrder = extractSectionsFieldOrder input , formattingHintsAlignment = sniffAlignment input-, formattingHintsRenderSettings = sniffRenderSettings input+, formattingHintsIndentation = sniffIndentation input+, formattingHintsCommaStyle = sniffCommaStyle input } sanitize :: [String] -> [String]@@ -124,11 +130,20 @@ where startsWithComma = isPrefixOf "," . dropWhile isSpace -sniffRenderSettings :: [String] -> RenderSettings-sniffRenderSettings input = RenderSettings indentation fieldAlignment commaStyle- where- indentation = max def $ fromMaybe def (sniffIndentation input)- where def = renderSettingsIndentation defaultRenderSettings+data RenderSettings = RenderSettings {+ renderSettingsIndentation :: Int+, renderSettingsFieldAlignment :: Alignment+, renderSettingsCommaStyle :: CommaStyle+} deriving (Eq, Show) - fieldAlignment = renderSettingsFieldAlignment defaultRenderSettings- commaStyle = fromMaybe (renderSettingsCommaStyle defaultRenderSettings) (sniffCommaStyle input)+defaultRenderSettings :: RenderSettings+defaultRenderSettings = let Dsl.RenderSettings{..} = Dsl.defaultRenderSettings in RenderSettings{..}++formattingHintsRenderSettings :: FormattingHints -> RenderSettings+formattingHintsRenderSettings FormattingHints{..} = defaultRenderSettings {+ renderSettingsIndentation = indentation+, renderSettingsCommaStyle = commaStyle+} where+ indentation = max def $ fromMaybe def formattingHintsIndentation+ where def = renderSettingsIndentation defaultRenderSettings+ commaStyle = fromMaybe (renderSettingsCommaStyle defaultRenderSettings) formattingHintsCommaStyle
test/EndToEndSpec.hs view
@@ -20,7 +20,7 @@ import qualified Hpack.Render as Hpack import Hpack.Config (packageConfig, readPackageConfig, DecodeOptions(..), defaultDecodeOptions, DecodeResult(..))-import Hpack.Render.Hints (FormattingHints(..), sniffFormattingHints)+import Hpack.Render.Hints (FormattingHints(..), sniffFormattingHints, formattingHintsRenderSettings) import qualified Paths_hpack as Hpack (version) @@ -378,6 +378,26 @@ location: https://github.com/hspec/hspec |] + describe "flags" $ do+ it "accepts multi-line flag descriptions" $ do+ [i|+ flags:+ some-flag:+ description: |+ some+ flag+ description+ manual: True+ default: False+ |] `shouldRenderTo` package [i|+ flag some-flag+ description: some+ flag+ description+ manual: True+ default: False+ |]+ describe "defaults" $ do it "accepts global defaults" $ do writeFile "defaults/sol/hpack-template/2017/defaults.yaml" [i|@@ -2113,9 +2133,9 @@ return $ case mPackage of Right (DecodeResult pkg cabalVersion _ warnings) -> let- FormattingHints{..} = sniffFormattingHints (lines old)+ hints@FormattingHints{..} = sniffFormattingHints (lines old) alignment = fromMaybe 0 formattingHintsAlignment- settings = formattingHintsRenderSettings+ settings = formattingHintsRenderSettings hints output = cabalVersion ++ Hpack.renderPackageWith settings alignment formattingHintsFieldOrder formattingHintsSectionsFieldOrder pkg in Right (warnings, output)
test/Hpack/Render/DslSpec.hs view
@@ -55,7 +55,79 @@ ] context "when rendering a Field" $ do- context "when rendering a MultipleLines value" $ do+ context "with a Literal value" $ do+ let+ description :: [String] -> Element+ description = Field "description" . Literal . unlines++ values :: [String]+ values = [+ "foo"+ , "bar"+ , "baz"+ ]++ it "renders field" $ do+ render_ (Field "description" "foo") `shouldBe` ["description: foo"]++ it "formats multi-line values" $ do+ render_ (description values) `shouldBe` [+ "description: foo"+ , " bar"+ , " baz"+ ]++ it "formats empty lines" $ do+ let+ field = description [+ "foo"+ , " "+ , "baz"+ ]+ render_ field `shouldBe` [+ "description: foo"+ , " ."+ , " baz"+ ]++ it "correctly handles empty lines at the beginning" $ do+ render_ (description $ "" : values) `shouldBe` [+ "description: ."+ , " foo"+ , " bar"+ , " baz"+ ]++ it "takes alignment into account" $ do+ let+ settings :: RenderSettings+ settings = defaultRenderSettings { renderSettingsFieldAlignment = 15 }++ render settings 0 (description values) `shouldBe` [+ "description: foo"+ , " bar"+ , " baz"+ ]++ context "when cabal-version is >= 3" $ do+ let+ settings :: RenderSettings+ settings = defaultRenderSettings { renderSettingsEmptyLinesAsDot = False }++ it "preserves empty lines" $ do+ let+ field = description [+ "foo"+ , ""+ , "baz"+ ]+ render settings 0 field `shouldBe` [+ "description: foo"+ , ""+ , " baz"+ ]++ context "with MultipleLines" $ do it "takes nesting into account" $ do let field = Field "foo" (CommaSeparatedList ["bar", "baz"]) render defaultRenderSettings 1 field `shouldBe` [@@ -92,14 +164,14 @@ renderValue defaultRenderSettings (WordList ["foo", "bar", "baz"]) `shouldBe` SingleLine "foo bar baz" it "renders CommaSeparatedList" $ do- renderValue defaultRenderSettings (CommaSeparatedList ["foo", "bar", "baz"]) `shouldBe` MultipleLines [+ renderValue defaultRenderSettings (CommaSeparatedList ["foo", "bar", "baz"]) `shouldBe` MultipleLines Indent [ " foo" , ", bar" , ", baz" ] it "renders LineSeparatedList" $ do- renderValue defaultRenderSettings (LineSeparatedList ["foo", "bar", "baz"]) `shouldBe` MultipleLines [+ renderValue defaultRenderSettings (LineSeparatedList ["foo", "bar", "baz"]) `shouldBe` MultipleLines Indent [ " foo" , " bar" , " baz"@@ -109,14 +181,14 @@ let settings = defaultRenderSettings{renderSettingsCommaStyle = TrailingCommas} it "renders CommaSeparatedList with trailing commas" $ do- renderValue settings (CommaSeparatedList ["foo", "bar", "baz"]) `shouldBe` MultipleLines [+ renderValue settings (CommaSeparatedList ["foo", "bar", "baz"]) `shouldBe` MultipleLines Indent [ "foo," , "bar," , "baz" ] it "renders LineSeparatedList without padding" $ do- renderValue settings (LineSeparatedList ["foo", "bar", "baz"]) `shouldBe` MultipleLines [+ renderValue settings (LineSeparatedList ["foo", "bar", "baz"]) `shouldBe` MultipleLines Indent [ "foo" , "bar" , "baz"
test/Hpack/Render/HintsSpec.hs view
@@ -3,11 +3,11 @@ import Test.Hspec import Hpack.Render.Hints-import Hpack.Render.Dsl+import Hpack.Render.Dsl (CommaStyle(..)) spec :: Spec spec = do- describe "sniffRenderSettings" $ do+ describe "formattingHintsRenderSettings" $ do context "when sniffed indentation is < default" $ do it "uses default instead" $ do let input = [@@ -15,8 +15,9 @@ , "exposed-modules:" , " Foo" ]- sniffIndentation input `shouldBe` Just 0- renderSettingsIndentation (sniffRenderSettings input) `shouldBe` 2+ hints = sniffFormattingHints input+ formattingHintsIndentation hints `shouldBe` Just 0+ renderSettingsIndentation (formattingHintsRenderSettings hints) `shouldBe` 2 describe "extractFieldOrder" $ do it "extracts field order hints" $ do
test/Hpack/RenderSpec.hs view
@@ -9,7 +9,8 @@ import Hpack.Syntax.DependencyVersion import Hpack.ConfigSpec hiding (spec) import Hpack.Config hiding (package)-import Hpack.Render.Dsl+import Hpack.Render.Dsl hiding (RenderSettings, defaultRenderSettings, render)+import qualified Hpack.Render.Dsl as Dsl import Hpack.Render library :: Library@@ -26,8 +27,8 @@ cabalVersion :: CabalVersion cabalVersion = makeCabalVersion [1,12] -cabal30 :: CabalVersion-cabal30 = makeCabalVersion [3,0,0]+render :: Element -> [FilePath]+render = Dsl.render Dsl.defaultRenderSettings 0 spec :: Spec spec = do@@ -232,7 +233,7 @@ it "renders conditionals" $ do let conditional = Conditional "os(windows)" (section Empty) {sectionDependencies = deps ["Win32"]} Nothing- render defaultRenderSettings 0 (run $ renderConditional renderEmptySection conditional) `shouldBe` [+ render (run $ renderConditional renderEmptySection conditional) `shouldBe` [ "if os(windows)" , " build-depends:" , " Win32"@@ -240,7 +241,7 @@ it "renders conditionals with else-branch" $ do let conditional = Conditional "os(windows)" (section Empty) {sectionDependencies = deps ["Win32"]} (Just $ (section Empty) {sectionDependencies = deps ["unix"]})- render defaultRenderSettings 0 (run $ renderConditional renderEmptySection conditional) `shouldBe` [+ render (run $ renderConditional renderEmptySection conditional) `shouldBe` [ "if os(windows)" , " build-depends:" , " Win32"@@ -252,7 +253,7 @@ it "renders nested conditionals" $ do let conditional = Conditional "arch(i386)" (section Empty) {sectionGhcOptions = ["-threaded"], sectionConditionals = [innerConditional]} Nothing innerConditional = Conditional "os(windows)" (section Empty) {sectionDependencies = deps ["Win32"]} Nothing- render defaultRenderSettings 0 (run $ renderConditional renderEmptySection conditional) `shouldBe` [+ render (run $ renderConditional renderEmptySection conditional) `shouldBe` [ "if arch(i386)" , " ghc-options: -threaded" , " if os(windows)"@@ -263,7 +264,7 @@ it "conditionalises both build-depends and mixins" $ do let conditional = Conditional "os(windows)" (section Empty) {sectionDependencies = [("Win32", depInfo)]} Nothing depInfo = defaultInfo { dependencyInfoMixins = ["hiding (Blah)"] }- render defaultRenderSettings 0 (run $ renderConditional renderEmptySection conditional) `shouldBe` [+ render (run $ renderConditional renderEmptySection conditional) `shouldBe` [ "if os(windows)" , " build-depends:" , " Win32"@@ -274,77 +275,17 @@ describe "renderFlag" $ do it "renders flags" $ do let flag = (Flag "foo" (Just "some flag") True False)- render defaultRenderSettings 0 (renderFlag flag) `shouldBe` [+ render (renderFlag flag) `shouldBe` [ "flag foo" , " description: some flag" , " manual: True" , " default: False" ] - describe "formatDescription" $ do- it "formats description" $ do- let description = unlines [- "foo"- , "bar"- ]- "description: " ++ formatDescription cabalVersion 0 description `shouldBe` intercalate "\n" [- "description: foo"- , " bar"- ]-- it "takes specified alignment into account" $ do- let description = unlines [- "foo"- , "bar"- , "baz"- ]- "description: " ++ formatDescription cabalVersion 15 description `shouldBe` intercalate "\n" [- "description: foo"- , " bar"- , " baz"- ]-- it "formats empty lines" $ do- let description = unlines [- "foo"- , " "- , "bar"- ]- "description: " ++ formatDescription cabalVersion 0 description `shouldBe` intercalate "\n" [- "description: foo"- , " ."- , " bar"- ]-- it "correctly handles empty lines at the beginning" $ do- let description = unlines [- ""- , "foo"- , "bar"- ]- "description: " ++ formatDescription cabalVersion 0 description `shouldBe` intercalate "\n" [- "description: ."- , " foo"- , " bar"- ]-- context "when cabal-version is >= 3" $ do- it "preserves empty lines" $ do- let description = unlines [- "foo"- , ""- , "bar"- ]- "description: " ++ formatDescription cabal30 0 description `shouldBe` intercalate "\n" [- "description: foo"- , ""- , " bar"- ]- describe "renderSourceRepository" $ do it "renders source-repository without subdir correctly" $ do let repository = SourceRepository "https://github.com/hspec/hspec" Nothing- (render defaultRenderSettings 0 $ renderSourceRepository repository)+ (render $ renderSourceRepository repository) `shouldBe` [ "source-repository head" , " type: git"@@ -353,7 +294,7 @@ it "renders source-repository with subdir" $ do let repository = SourceRepository "https://github.com/hspec/hspec" (Just "hspec-core")- (render defaultRenderSettings 0 $ renderSourceRepository repository)+ (render $ renderSourceRepository repository) `shouldBe` [ "source-repository head" , " type: git"@@ -363,7 +304,7 @@ describe "renderDirectories" $ do it "replaces . with ./. (for compatibility with cabal syntax)" $ do- (render defaultRenderSettings 0 $ renderDirectories "name" ["."])+ (render $ renderDirectories "name" ["."]) `shouldBe` [ "name:" , " ./"