git.iko.soy/typeable/bloodhound
on master help sign in
Semverification
commitb9139e93315d49d0c8d0f04d0cb9dfc3acef519d authorChris Allen <cma@bitemyapp.com> dateSat 5 May 2018, 16:48 (8 years ago) parentc18318d
5 files changed+64−59
bloodhound.cabal+26−24 src/Database/V5/Bloodhound/Internal/Client.hs+8−9 stack-8.2.yaml+2−2 tests/V5/Test/Common.hs+21−21 tests/V5/Test/Generators.hs+7−3
bloodhound.cabal+26−24
@@ -64,23 +64,24 @@ library
6464 Database.Bloodhound.Common.Script
6565 hs-source-dirs: src
6666 build-depends: base >= 4.3 && <5,
67+ aeson >= 0.11.1,
68+ blaze-builder,
6769 bytestring >= 0.10.0 && <0.11,
6870 containers >= 0.5.0.0 && <0.6,
69− aeson >= 0.11.1,
71+ exceptions,
72+ hashable,
7073 http-client >= 0.4.30 && <0.6,
74+ http-types >= 0.8 && <0.13,
75+ mtl >= 1.0 && <2.3,
7176 network-uri >= 2.6 && <2.7,
77+ scientific >= 0.3.0.0 && <0.4.0.0,
7278 semigroups >= 0.15 && <0.19,
73− time >= 1.4 && <1.9,
79+ semver,
7480 text >= 0.11 && <1.3,
75− mtl >= 1.0 && <2.3,
81+ time >= 1.4 && <1.9,
7682 transformers >= 0.2 && <0.6,
77− http-types >= 0.8 && <0.13,
78− vector >= 0.10.9 && <0.13,
79− scientific >= 0.3.0.0 && <0.4.0.0,
80− blaze-builder,
81− exceptions,
82− hashable,
83− unordered-containers
83+ unordered-containers,
84+ vector >= 0.10.9 && <0.13
8485 default-language: Haskell2010
8586
8687test-suite bloodhound-tests
@@ -109,28 +110,29 @@ test-suite bloodhound-tests
109110 Test.Suggest
110111 Test.Templates
111112 build-depends: base,
113+ QuickCheck,
114+ aeson,
112115 bloodhound,
113116 bytestring,
114− http-client,
115− http-types,
116117 containers,
118+ errors,
119+ exceptions,
117120 hspec >= 1.8,
118− text,
119− time,
120− aeson,
121− semigroups,
122− QuickCheck,
123− vector,
124− unordered-containers >= 0.2.5.0 && <0.3,
121+ http-client,
122+ http-types,
123+ microlens,
124+ microlens-aeson,
125125 mtl,
126+ network-uri,
126127 pretty-simple,
127128 quickcheck-arbitrary-template,
128129 quickcheck-properties,
129− errors,
130− exceptions,
130+ semigroups,
131+ semver,
131132 temporary,
133+ text,
134+ time,
132135 unix-compat,
133− network-uri,
134− microlens,
135− microlens-aeson
136+ unordered-containers >= 0.2.5.0 && <0.3,
137+ vector
136138 default-language: Haskell2010
src/Database/V5/Bloodhound/Internal/Client.hs+8−9
@@ -12,11 +12,10 @@ import Bloodhound.Import
1212import qualified Data.Text as T
1313import qualified Data.Traversable as DT
1414import qualified Data.HashMap.Strict as HM
15+import qualified Data.SemVer as SemVer
1516import qualified Data.Vector as V
16−import qualified Data.Version as Vers
1717import GHC.Enum
1818import Network.HTTP.Client
19−import qualified Text.ParserCombinators.ReadP as RP
2019import Text.Read (Read(..))
2120import qualified Text.Read as TR
2221
@@ -98,7 +97,7 @@ data Version = Version { number :: VersionNumber
9897
9998-- | Traditional software versioning number
10099newtype VersionNumber = VersionNumber
101− { versionNumber :: Vers.Version }
100+ { versionNumber :: SemVer.Version }
102101 deriving (Eq, Ord, Show)
103102
104103{-| 'Status' is a data type for describing the JSON body returned by
@@ -2398,12 +2397,12 @@ instance FromJSON Version where
23982397 <*> o .: "lucene_version"
23992398
24002399instance ToJSON VersionNumber where
2401− toJSON = toJSON . Vers.showVersion . versionNumber
2400+ toJSON = toJSON . SemVer.toText . versionNumber
24022401
24032402instance FromJSON VersionNumber where
2404− parseJSON = withText "VersionNumber" (parse . T.unpack)
2403+ parseJSON = withText "VersionNumber" parse
24052404 where
2406− parse s = case filter (null . snd)(RP.readP_to_S Vers.parseVersion s) of
2407− [(v, _)] -> pure (VersionNumber v)
2408− [] -> fail ("Invalid version string " ++ s)
2409− xs -> fail ("Ambiguous version string " ++ s ++ " (" ++ intercalate ", " (Vers.showVersion . fst <$> xs) ++ ")")
2405+ parse t =
2406+ case SemVer.fromText t of
2407+ (Left err) -> fail err
2408+ (Right v) -> return (VersionNumber v)
stack-8.2.yaml+2−2
@@ -7,9 +7,9 @@ packages:
77 - './examples'
88
99extra-deps:
10− - quickcheck-properties-0.1
11− - http-types-0.12.1
1210 - aeson-1.3.0.0
11+ - http-types-0.12.1
1312 - quickcheck-arbitrary-template-0.2.0.0
13+ - quickcheck-properties-0.1
1414
1515resolver: lts-11.6
tests/V5/Test/Common.hs+21−21
@@ -6,7 +6,7 @@ module Test.Common where
66import Test.Import
77
88import qualified Data.Map as M
9−import qualified Data.Version as Vers
9+import qualified Data.SemVer as SemVer
1010import qualified Network.HTTP.Types.Status as NHTS
1111
1212testServer :: Server
@@ -50,31 +50,31 @@ instance ToJSON ParentMapping where
5050 , "extra" .= object ["type" .= ("keyword" :: Text)]
5151 ]]
5252
53−es13 :: Vers.Version
54−es13 = Vers.Version [1, 3, 0] []
53+es11 :: SemVer.Version
54+es11 = SemVer.version 1 1 0 [] []
5555
56−es12 :: Vers.Version
57−es12 = Vers.Version [1, 2, 0] []
56+es13 :: SemVer.Version
57+es13 = SemVer.version 1 3 0 [] []
5858
59−es11 :: Vers.Version
60−es11 = Vers.Version [1, 1, 0] []
59+es12 :: SemVer.Version
60+es12 = SemVer.version 1 2 0 [] []
6161
62−es14 :: Vers.Version
63−es14 = Vers.Version [1, 4, 0] []
62+es14 :: SemVer.Version
63+es14 = SemVer.version 1 4 0 [] []
6464
65−es15 :: Vers.Version
66−es15 = Vers.Version [1, 5, 0] []
65+es15 :: SemVer.Version
66+es15 = SemVer.version 1 5 0 [] []
6767
68−es16 :: Vers.Version
69−es16 = Vers.Version [1, 6, 0] []
68+es16 :: SemVer.Version
69+es16 = SemVer.version 1 6 0 [] []
7070
71−es20 :: Vers.Version
72−es20 = Vers.Version [2, 0, 0] []
71+es20 :: SemVer.Version
72+es20 = SemVer.version 2 0 0 [] []
7373
74−es50 :: Vers.Version
75−es50 = Vers.Version [5, 0, 0] []
74+es50 :: SemVer.Version
75+es50 = SemVer.version 5 0 0 [] []
7676
77−getServerVersion :: IO (Maybe Vers.Version)
77+getServerVersion :: IO (Maybe SemVer.Version)
7878getServerVersion = fmap extractVersion <$> withTestEnv getStatus
7979 where
8080 extractVersion = versionNumber . number . version
@@ -282,11 +282,11 @@ searchExpectSource src expected = do
282282 liftIO $
283283 value `shouldBe` expected
284284
285−atleast :: Vers.Version -> IO Bool
285+atleast :: SemVer.Version -> IO Bool
286286atleast v = getServerVersion >>= \x -> return $ x >= Just v
287287
288−atmost :: Vers.Version -> IO Bool
288+atmost :: SemVer.Version -> IO Bool
289289atmost v = getServerVersion >>= \x -> return $ x <= Just v
290290
291−is :: Vers.Version -> IO Bool
291+is :: SemVer.Version -> IO Bool
292292is v = getServerVersion >>= \x -> return $ x == Just v
tests/V5/Test/Generators.hs+7−3
@@ -14,7 +14,7 @@ import qualified Data.List as L
1414import qualified Data.List.NonEmpty as NE
1515import qualified Data.Map as M
1616import qualified Data.Text as T
17−import qualified Data.Version as Vers
17+import qualified Data.SemVer as SemVer
1818import Test.QuickCheck.TH.Generators
1919
2020import Test.ApproxEq
@@ -215,9 +215,13 @@ instance Arbitrary NodeAttrFilter where
215215 return (NodeAttrFilter n ts)
216216
217217instance Arbitrary VersionNumber where
218− arbitrary = mk . fmap getPositive . getNonEmpty <$> arbitrary
218+ arbitrary = do
219+ major <- posInt
220+ minor <- posInt
221+ patch <- posInt
222+ return $ VersionNumber $ SemVer.version major minor patch [] []
219223 where
220− mk versions = VersionNumber (Vers.Version versions [])
224+ posInt = getPositive <$> arbitrary
221225
222226instance Arbitrary TemplateQueryKeyValuePairs where
223227 arbitrary = TemplateQueryKeyValuePairs . HM.fromList <$> arbitrary