hpack 0.7.1 → 0.8.0
raw patch · 4 files changed
+43/−23 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Hpack.Config: data GitRef
- Hpack.Config: dependencyGitRef :: Dependency -> Maybe GitRef
- Hpack.Config: dependencyName :: Dependency -> String
- Hpack.Config: executableMain :: Executable -> FilePath
- Hpack.Config: executableName :: Executable -> String
- Hpack.Config: executableOtherModules :: Executable -> [String]
- Hpack.Config: gitRefRef :: GitRef -> String
- Hpack.Config: gitRefUrl :: GitRef -> String
- Hpack.Config: instance (HasFieldNames a, FromJSON a) => FromJSON (CaptureUnknownFields a)
- Hpack.Config: instance Constructor C1_0CaptureUnknownFields
- Hpack.Config: instance Constructor C1_0CommonOptions
- Hpack.Config: instance Constructor C1_0Dependency
- Hpack.Config: instance Constructor C1_0ExecutableSection
- Hpack.Config: instance Constructor C1_0GitRef
- Hpack.Config: instance Constructor C1_0LibrarySection
- Hpack.Config: instance Constructor C1_0PackageConfig
- Hpack.Config: instance Datatype D1CaptureUnknownFields
- Hpack.Config: instance Datatype D1CommonOptions
- Hpack.Config: instance Datatype D1Dependency
- Hpack.Config: instance Datatype D1ExecutableSection
- Hpack.Config: instance Datatype D1GitRef
- Hpack.Config: instance Datatype D1LibrarySection
- Hpack.Config: instance Datatype D1PackageConfig
- Hpack.Config: instance Eq CommonOptions
- Hpack.Config: instance Eq Dependency
- Hpack.Config: instance Eq Executable
- Hpack.Config: instance Eq ExecutableSection
- Hpack.Config: instance Eq GitRef
- Hpack.Config: instance Eq Library
- Hpack.Config: instance Eq LibrarySection
- Hpack.Config: instance Eq Package
- Hpack.Config: instance Eq PackageConfig
- Hpack.Config: instance Eq SourceRepository
- Hpack.Config: instance Eq a => Eq (CaptureUnknownFields a)
- Hpack.Config: instance Eq a => Eq (Section a)
- Hpack.Config: instance Foldable Section
- Hpack.Config: instance FromJSON CommonOptions
- Hpack.Config: instance FromJSON Dependency
- Hpack.Config: instance FromJSON ExecutableSection
- Hpack.Config: instance FromJSON LibrarySection
- Hpack.Config: instance FromJSON PackageConfig
- Hpack.Config: instance FromJSON a => FromJSON (Section a)
- Hpack.Config: instance Functor Section
- Hpack.Config: instance Generic (CaptureUnknownFields a)
- Hpack.Config: instance Generic CommonOptions
- Hpack.Config: instance Generic Dependency
- Hpack.Config: instance Generic ExecutableSection
- Hpack.Config: instance Generic GitRef
- Hpack.Config: instance Generic LibrarySection
- Hpack.Config: instance Generic PackageConfig
- Hpack.Config: instance HasFieldNames CommonOptions
- Hpack.Config: instance HasFieldNames ExecutableSection
- Hpack.Config: instance HasFieldNames LibrarySection
- Hpack.Config: instance HasFieldNames PackageConfig
- Hpack.Config: instance HasFieldNames a => HasFieldNames (Section a)
- Hpack.Config: instance IsString Dependency
- Hpack.Config: instance Ord Dependency
- Hpack.Config: instance Ord GitRef
- Hpack.Config: instance Selector S1_0_0CaptureUnknownFields
- Hpack.Config: instance Selector S1_0_0CommonOptions
- Hpack.Config: instance Selector S1_0_0Dependency
- Hpack.Config: instance Selector S1_0_0ExecutableSection
- Hpack.Config: instance Selector S1_0_0GitRef
- Hpack.Config: instance Selector S1_0_0LibrarySection
- Hpack.Config: instance Selector S1_0_0PackageConfig
- Hpack.Config: instance Selector S1_0_10PackageConfig
- Hpack.Config: instance Selector S1_0_11PackageConfig
- Hpack.Config: instance Selector S1_0_12PackageConfig
- Hpack.Config: instance Selector S1_0_13PackageConfig
- Hpack.Config: instance Selector S1_0_14PackageConfig
- Hpack.Config: instance Selector S1_0_15PackageConfig
- Hpack.Config: instance Selector S1_0_16PackageConfig
- Hpack.Config: instance Selector S1_0_17PackageConfig
- Hpack.Config: instance Selector S1_0_18PackageConfig
- Hpack.Config: instance Selector S1_0_19PackageConfig
- Hpack.Config: instance Selector S1_0_1CaptureUnknownFields
- Hpack.Config: instance Selector S1_0_1CommonOptions
- Hpack.Config: instance Selector S1_0_1Dependency
- Hpack.Config: instance Selector S1_0_1ExecutableSection
- Hpack.Config: instance Selector S1_0_1GitRef
- Hpack.Config: instance Selector S1_0_1LibrarySection
- Hpack.Config: instance Selector S1_0_1PackageConfig
- Hpack.Config: instance Selector S1_0_2CommonOptions
- Hpack.Config: instance Selector S1_0_2PackageConfig
- Hpack.Config: instance Selector S1_0_3CommonOptions
- Hpack.Config: instance Selector S1_0_3PackageConfig
- Hpack.Config: instance Selector S1_0_4CommonOptions
- Hpack.Config: instance Selector S1_0_4PackageConfig
- Hpack.Config: instance Selector S1_0_5CommonOptions
- Hpack.Config: instance Selector S1_0_5PackageConfig
- Hpack.Config: instance Selector S1_0_6PackageConfig
- Hpack.Config: instance Selector S1_0_7PackageConfig
- Hpack.Config: instance Selector S1_0_8PackageConfig
- Hpack.Config: instance Selector S1_0_9PackageConfig
- Hpack.Config: instance Show CommonOptions
- Hpack.Config: instance Show Dependency
- Hpack.Config: instance Show Executable
- Hpack.Config: instance Show ExecutableSection
- Hpack.Config: instance Show GitRef
- Hpack.Config: instance Show Library
- Hpack.Config: instance Show LibrarySection
- Hpack.Config: instance Show Package
- Hpack.Config: instance Show PackageConfig
- Hpack.Config: instance Show SourceRepository
- Hpack.Config: instance Show a => Show (CaptureUnknownFields a)
- Hpack.Config: instance Show a => Show (Section a)
- Hpack.Config: instance Traversable Section
- Hpack.Config: libraryExposedModules :: Library -> [String]
- Hpack.Config: libraryOtherModules :: Library -> [String]
- Hpack.Config: packageAuthor :: Package -> [String]
- Hpack.Config: packageBenchmarks :: Package -> [Section Executable]
- Hpack.Config: packageBugReports :: Package -> Maybe String
- Hpack.Config: packageCategory :: Package -> Maybe String
- Hpack.Config: packageCopyright :: Package -> [String]
- Hpack.Config: packageDataFiles :: Package -> [FilePath]
- Hpack.Config: packageDescription :: Package -> Maybe String
- Hpack.Config: packageExecutables :: Package -> [Section Executable]
- Hpack.Config: packageExtraSourceFiles :: Package -> [FilePath]
- Hpack.Config: packageHomepage :: Package -> Maybe String
- Hpack.Config: packageLibrary :: Package -> Maybe (Section Library)
- Hpack.Config: packageLicense :: Package -> Maybe String
- Hpack.Config: packageLicenseFile :: Package -> Maybe FilePath
- Hpack.Config: packageMaintainer :: Package -> [String]
- Hpack.Config: packageName :: Package -> String
- Hpack.Config: packageSourceRepository :: Package -> Maybe SourceRepository
- Hpack.Config: packageStability :: Package -> Maybe String
- Hpack.Config: packageSynopsis :: Package -> Maybe String
- Hpack.Config: packageTestedWith :: Package -> Maybe String
- Hpack.Config: packageTests :: Package -> [Section Executable]
- Hpack.Config: packageVersion :: Package -> String
- Hpack.Config: sectionCppOptions :: Section a -> [CppOption]
- Hpack.Config: sectionData :: Section a -> a
- Hpack.Config: sectionDefaultExtensions :: Section a -> [String]
- Hpack.Config: sectionDependencies :: Section a -> [Dependency]
- Hpack.Config: sectionGhcOptions :: Section a -> [GhcOption]
- Hpack.Config: sectionGhcProfOptions :: Section a -> [GhcProfOption]
- Hpack.Config: sectionSourceDirs :: Section a -> [FilePath]
- Hpack.Config: sourceRepositorySubdir :: SourceRepository -> Maybe String
- Hpack.Config: sourceRepositoryUrl :: SourceRepository -> String
- Hpack.Run: renderSettingsCommaStyle :: RenderSettings -> CommaStyle
- Hpack.Run: renderSettingsIndentation :: RenderSettings -> Int
+ Hpack.Config: Local :: FilePath -> AddSource
+ Hpack.Config: [dependencyGitRef] :: Dependency -> Maybe AddSource
+ Hpack.Config: [dependencyName] :: Dependency -> String
+ Hpack.Config: [executableMain] :: Executable -> FilePath
+ Hpack.Config: [executableName] :: Executable -> String
+ Hpack.Config: [executableOtherModules] :: Executable -> [String]
+ Hpack.Config: [libraryExposedModules] :: Library -> [String]
+ Hpack.Config: [libraryOtherModules] :: Library -> [String]
+ Hpack.Config: [packageAuthor] :: Package -> [String]
+ Hpack.Config: [packageBenchmarks] :: Package -> [Section Executable]
+ Hpack.Config: [packageBugReports] :: Package -> Maybe String
+ Hpack.Config: [packageCategory] :: Package -> Maybe String
+ Hpack.Config: [packageCopyright] :: Package -> [String]
+ Hpack.Config: [packageDataFiles] :: Package -> [FilePath]
+ Hpack.Config: [packageDescription] :: Package -> Maybe String
+ Hpack.Config: [packageExecutables] :: Package -> [Section Executable]
+ Hpack.Config: [packageExtraSourceFiles] :: Package -> [FilePath]
+ Hpack.Config: [packageHomepage] :: Package -> Maybe String
+ Hpack.Config: [packageLibrary] :: Package -> Maybe (Section Library)
+ Hpack.Config: [packageLicenseFile] :: Package -> Maybe FilePath
+ Hpack.Config: [packageLicense] :: Package -> Maybe String
+ Hpack.Config: [packageMaintainer] :: Package -> [String]
+ Hpack.Config: [packageName] :: Package -> String
+ Hpack.Config: [packageSourceRepository] :: Package -> Maybe SourceRepository
+ Hpack.Config: [packageStability] :: Package -> Maybe String
+ Hpack.Config: [packageSynopsis] :: Package -> Maybe String
+ Hpack.Config: [packageTestedWith] :: Package -> Maybe String
+ Hpack.Config: [packageTests] :: Package -> [Section Executable]
+ Hpack.Config: [packageVersion] :: Package -> String
+ Hpack.Config: [sectionCppOptions] :: Section a -> [CppOption]
+ Hpack.Config: [sectionData] :: Section a -> a
+ Hpack.Config: [sectionDefaultExtensions] :: Section a -> [String]
+ Hpack.Config: [sectionDependencies] :: Section a -> [Dependency]
+ Hpack.Config: [sectionGhcOptions] :: Section a -> [GhcOption]
+ Hpack.Config: [sectionGhcProfOptions] :: Section a -> [GhcProfOption]
+ Hpack.Config: [sectionSourceDirs] :: Section a -> [FilePath]
+ Hpack.Config: [sourceRepositorySubdir] :: SourceRepository -> Maybe String
+ Hpack.Config: [sourceRepositoryUrl] :: SourceRepository -> String
+ Hpack.Config: data AddSource
+ Hpack.Config: instance (Hpack.Config.HasFieldNames a, Data.Aeson.Types.Class.FromJSON a) => Data.Aeson.Types.Class.FromJSON (Hpack.Config.CaptureUnknownFields a)
+ Hpack.Config: instance Data.Aeson.Types.Class.FromJSON Hpack.Config.CommonOptions
+ Hpack.Config: instance Data.Aeson.Types.Class.FromJSON Hpack.Config.Dependency
+ Hpack.Config: instance Data.Aeson.Types.Class.FromJSON Hpack.Config.ExecutableSection
+ Hpack.Config: instance Data.Aeson.Types.Class.FromJSON Hpack.Config.LibrarySection
+ Hpack.Config: instance Data.Aeson.Types.Class.FromJSON Hpack.Config.PackageConfig
+ Hpack.Config: instance Data.Aeson.Types.Class.FromJSON a => Data.Aeson.Types.Class.FromJSON (Hpack.Config.Section a)
+ Hpack.Config: instance Data.Foldable.Foldable Hpack.Config.Section
+ Hpack.Config: instance Data.String.IsString Hpack.Config.Dependency
+ Hpack.Config: instance Data.Traversable.Traversable Hpack.Config.Section
+ Hpack.Config: instance GHC.Base.Functor Hpack.Config.Section
+ Hpack.Config: instance GHC.Classes.Eq Hpack.Config.AddSource
+ Hpack.Config: instance GHC.Classes.Eq Hpack.Config.CommonOptions
+ Hpack.Config: instance GHC.Classes.Eq Hpack.Config.Dependency
+ Hpack.Config: instance GHC.Classes.Eq Hpack.Config.Executable
+ Hpack.Config: instance GHC.Classes.Eq Hpack.Config.ExecutableSection
+ Hpack.Config: instance GHC.Classes.Eq Hpack.Config.Library
+ Hpack.Config: instance GHC.Classes.Eq Hpack.Config.LibrarySection
+ Hpack.Config: instance GHC.Classes.Eq Hpack.Config.Package
+ Hpack.Config: instance GHC.Classes.Eq Hpack.Config.PackageConfig
+ Hpack.Config: instance GHC.Classes.Eq Hpack.Config.SourceRepository
+ Hpack.Config: instance GHC.Classes.Eq a => GHC.Classes.Eq (Hpack.Config.CaptureUnknownFields a)
+ Hpack.Config: instance GHC.Classes.Eq a => GHC.Classes.Eq (Hpack.Config.Section a)
+ Hpack.Config: instance GHC.Classes.Ord Hpack.Config.AddSource
+ Hpack.Config: instance GHC.Classes.Ord Hpack.Config.Dependency
+ Hpack.Config: instance GHC.Generics.Constructor Hpack.Config.C1_0CaptureUnknownFields
+ Hpack.Config: instance GHC.Generics.Constructor Hpack.Config.C1_0CommonOptions
+ Hpack.Config: instance GHC.Generics.Constructor Hpack.Config.C1_0Dependency
+ Hpack.Config: instance GHC.Generics.Constructor Hpack.Config.C1_0ExecutableSection
+ Hpack.Config: instance GHC.Generics.Constructor Hpack.Config.C1_0LibrarySection
+ Hpack.Config: instance GHC.Generics.Constructor Hpack.Config.C1_0PackageConfig
+ Hpack.Config: instance GHC.Generics.Datatype Hpack.Config.D1CaptureUnknownFields
+ Hpack.Config: instance GHC.Generics.Datatype Hpack.Config.D1CommonOptions
+ Hpack.Config: instance GHC.Generics.Datatype Hpack.Config.D1Dependency
+ Hpack.Config: instance GHC.Generics.Datatype Hpack.Config.D1ExecutableSection
+ Hpack.Config: instance GHC.Generics.Datatype Hpack.Config.D1LibrarySection
+ Hpack.Config: instance GHC.Generics.Datatype Hpack.Config.D1PackageConfig
+ Hpack.Config: instance GHC.Generics.Generic (Hpack.Config.CaptureUnknownFields a)
+ Hpack.Config: instance GHC.Generics.Generic Hpack.Config.CommonOptions
+ Hpack.Config: instance GHC.Generics.Generic Hpack.Config.Dependency
+ Hpack.Config: instance GHC.Generics.Generic Hpack.Config.ExecutableSection
+ Hpack.Config: instance GHC.Generics.Generic Hpack.Config.LibrarySection
+ Hpack.Config: instance GHC.Generics.Generic Hpack.Config.PackageConfig
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_0CaptureUnknownFields
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_0CommonOptions
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_0Dependency
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_0ExecutableSection
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_0LibrarySection
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_0PackageConfig
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_10PackageConfig
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_11PackageConfig
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_12PackageConfig
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_13PackageConfig
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_14PackageConfig
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_15PackageConfig
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_16PackageConfig
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_17PackageConfig
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_18PackageConfig
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_19PackageConfig
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_1CaptureUnknownFields
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_1CommonOptions
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_1Dependency
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_1ExecutableSection
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_1LibrarySection
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_1PackageConfig
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_2CommonOptions
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_2PackageConfig
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_3CommonOptions
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_3PackageConfig
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_4CommonOptions
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_4PackageConfig
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_5CommonOptions
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_5PackageConfig
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_6PackageConfig
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_7PackageConfig
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_8PackageConfig
+ Hpack.Config: instance GHC.Generics.Selector Hpack.Config.S1_0_9PackageConfig
+ Hpack.Config: instance GHC.Show.Show Hpack.Config.AddSource
+ Hpack.Config: instance GHC.Show.Show Hpack.Config.CommonOptions
+ Hpack.Config: instance GHC.Show.Show Hpack.Config.Dependency
+ Hpack.Config: instance GHC.Show.Show Hpack.Config.Executable
+ Hpack.Config: instance GHC.Show.Show Hpack.Config.ExecutableSection
+ Hpack.Config: instance GHC.Show.Show Hpack.Config.Library
+ Hpack.Config: instance GHC.Show.Show Hpack.Config.LibrarySection
+ Hpack.Config: instance GHC.Show.Show Hpack.Config.Package
+ Hpack.Config: instance GHC.Show.Show Hpack.Config.PackageConfig
+ Hpack.Config: instance GHC.Show.Show Hpack.Config.SourceRepository
+ Hpack.Config: instance GHC.Show.Show a => GHC.Show.Show (Hpack.Config.CaptureUnknownFields a)
+ Hpack.Config: instance GHC.Show.Show a => GHC.Show.Show (Hpack.Config.Section a)
+ Hpack.Config: instance Hpack.Config.HasFieldNames Hpack.Config.CommonOptions
+ Hpack.Config: instance Hpack.Config.HasFieldNames Hpack.Config.ExecutableSection
+ Hpack.Config: instance Hpack.Config.HasFieldNames Hpack.Config.LibrarySection
+ Hpack.Config: instance Hpack.Config.HasFieldNames Hpack.Config.PackageConfig
+ Hpack.Config: instance Hpack.Config.HasFieldNames a => Hpack.Config.HasFieldNames (Hpack.Config.Section a)
+ Hpack.Config: type GitRef = String
+ Hpack.Config: type GitUrl = String
+ Hpack.Run: [renderSettingsCommaStyle] :: RenderSettings -> CommaStyle
+ Hpack.Run: [renderSettingsIndentation] :: RenderSettings -> Int
- Hpack.Config: Dependency :: String -> Maybe GitRef -> Dependency
+ Hpack.Config: Dependency :: String -> Maybe AddSource -> Dependency
- Hpack.Config: GitRef :: String -> String -> GitRef
+ Hpack.Config: GitRef :: GitUrl -> GitRef -> AddSource
Files
- hpack.cabal +1/−1
- src/Hpack/Config.hs +22/−10
- test/Hpack/ConfigSpec.hs +16/−8
- test/Hpack/UtilSpec.hs +4/−4
hpack.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack name: hpack-version: 0.7.1+version: 0.8.0 synopsis: An alternative format for Haskell packages category: Development homepage: https://github.com/sol/hpack#readme
src/Hpack/Config.hs view
@@ -15,7 +15,9 @@ , section , Package(..) , Dependency(..)-, GitRef(..)+, AddSource(..)+, GitUrl+, GitRef , packageDependencies , GhcOption , Section(..)@@ -68,7 +70,13 @@ name = typeName (Proxy :: Proxy a) hyphenize :: String -> String -> String-hyphenize name = camelTo '-' . drop (length name)+hyphenize name =+#if MIN_VERSION_aeson(0,10,0)+ camelTo2+#else+ camelTo+#endif+ '-' . drop (length name) class HasFieldNames a where fieldNames :: Proxy a -> [String]@@ -185,7 +193,7 @@ data Dependency = Dependency { dependencyName :: String-, dependencyGitRef :: Maybe GitRef+, dependencyGitRef :: Maybe AddSource } deriving (Eq, Show, Ord, Generic) instance IsString Dependency where@@ -194,17 +202,20 @@ instance FromJSON Dependency where parseJSON v = case v of String _ -> fromString <$> parseJSON v- Object o -> gitDependency o+ Object o -> addSourceDependency o _ -> typeMismatch "String or an Object" v where- gitDependency o = Dependency <$> name <*> (Just <$> git)+ addSourceDependency o = Dependency <$> name <*> (Just <$> (local <|> git)) where name :: Parser String name = o .: "name" - git :: Parser GitRef+ git :: Parser AddSource git = GitRef <$> url <*> ref + local :: Parser AddSource+ local = Local <$> o .: "path"+ url :: Parser String url = ((githubBaseUrl ++) <$> o .: "github")@@ -214,10 +225,11 @@ ref :: Parser String ref = o .: "ref" -data GitRef = GitRef {- gitRefUrl :: String-, gitRefRef :: String-} deriving (Eq, Show, Ord, Generic)+data AddSource = GitRef GitUrl GitRef | Local FilePath+ deriving (Eq, Show, Ord)++type GitUrl = String+type GitRef = String data Package = Package { packageName :: String
test/Hpack/ConfigSpec.hs view
@@ -40,8 +40,8 @@ git: "https://github.com/sol/hpack", ref: "master" }|]- git = GitRef "https://github.com/sol/hpack" "master"- parseEither parseJSON value `shouldBe` Right (Dependency "hpack" (Just git))+ source = GitRef "https://github.com/sol/hpack" "master"+ parseEither parseJSON value `shouldBe` Right (Dependency "hpack" (Just source)) it "accepts github dependencies" $ do let value = [aesonQQ|{@@ -49,13 +49,21 @@ github: "sol/hpack", ref: "master" }|]- git = GitRef "https://github.com/sol/hpack" "master"- parseEither parseJSON value `shouldBe` Right (Dependency "hpack" (Just git))+ source = GitRef "https://github.com/sol/hpack" "master"+ parseEither parseJSON value `shouldBe` Right (Dependency "hpack" (Just source)) + it "accepts local dependencies" $ do+ let value = [aesonQQ|{+ name: "hpack",+ path: "../hpack"+ }|]+ source = Local "../hpack"+ parseEither parseJSON value `shouldBe` Right (Dependency "hpack" (Just source))+ context "when parsing fails" $ do it "returns an error message" $ do let value = Number 23- parseEither parseJSON value `shouldBe` (Left "when expecting a String or an Object, encountered Number instead" :: Either String Dependency)+ parseEither parseJSON value `shouldBe` (Left "Error in $: expected String or an Object, encountered Number" :: Either String Dependency) context "when ref is missing" $ do it "produces accurate error messages" $ do@@ -64,7 +72,7 @@ git: "sol/hpack", ef: "master" }|]- parseEither parseJSON value `shouldBe` (Left "key \"ref\" not present" :: Either String Dependency)+ parseEither parseJSON value `shouldBe` (Left "Error in $: key \"ref\" not present" :: Either String Dependency) context "when both git and github are missing" $ do it "produces accurate error messages" $ do@@ -73,7 +81,7 @@ gi: "sol/hpack", ref: "master" }|]- parseEither parseJSON value `shouldBe` (Left "neither key \"git\" nor key \"github\" present" :: Either String Dependency)+ parseEither parseJSON value `shouldBe` (Left "Error in $: neither key \"git\" nor key \"github\" present" :: Either String Dependency) describe "getModules" $ around_ inTempDirectory $ do it "returns Haskell modules in specified source directory" $ do@@ -638,7 +646,7 @@ foo: ain: driver/Main.hs |]- readPackageConfig "package.yaml" `shouldReturn` Left "package.yaml: The key \"main\" was not found"+ readPackageConfig "package.yaml" `shouldReturn` Left "package.yaml: Error in $.executables.foo: failed to parse field executables: The key \"main\" was not found" context "when package.yaml does not exist" $ do it "returns an error" $
test/Hpack/UtilSpec.hs view
@@ -62,21 +62,21 @@ gi: "sol/hpack", ref: "master" }|]- parseError :: Either String (List Dependency)- parseError = Left "neither key \"git\" nor key \"github\" present"+ parseError :: String -> Either String (List Dependency)+ parseError prefix = Left (prefix ++ ": neither key \"git\" nor key \"github\" present") context "when parsing single values" $ do it "returns the value in a singleton list" $ do fromJSON (toJSON $ Number 23) `shouldBe` Success (List [23 :: Int]) it "returns error messages from element parsing" $ do- parseEither parseJSON invalid `shouldBe` parseError+ parseEither parseJSON invalid `shouldBe` parseError "Error in $" context "when parsing a list of values" $ do it "returns the list" $ do fromJSON (toJSON [Number 23, Number 42]) `shouldBe` Success (List [23, 42 :: Int]) it "propagates parse error messages of invalid elements" $ do- parseEither parseJSON (toJSON [String "foo", invalid]) `shouldBe` parseError+ parseEither parseJSON (toJSON [String "foo", invalid]) `shouldBe` parseError "Error in $[1]" describe "tryReadFile" $ do it "reads file" $ do