packages feed

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 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