mirror of
https://github.com/haskell-nix/hnix-store.git
synced 2024-09-19 22:07:13 +03:00
add Serialize for BuildResult
This commit is contained in:
parent
7f4aeae935
commit
c53c10721b
@ -5,8 +5,11 @@ Maintainer : srk <srk@48.io>
|
||||
|-}
|
||||
module System.Nix.Store.Remote.Serialize where
|
||||
|
||||
import Data.Text
|
||||
import Data.Serialize (Serialize(..))
|
||||
import Data.Text (Text)
|
||||
|
||||
import qualified Data.Bool
|
||||
import qualified Data.Text
|
||||
|
||||
import System.Nix.Build (BuildMode(..), BuildStatus(..), BuildResult(..))
|
||||
import System.Nix.Store.Remote.Serialize.Prim
|
||||
@ -24,13 +27,23 @@ instance Serialize BuildStatus where
|
||||
put = putEnum
|
||||
|
||||
instance Serialize BuildResult where
|
||||
get =
|
||||
BuildResult
|
||||
get = do
|
||||
status <- get
|
||||
errorMessage <-
|
||||
(\em -> Data.Bool.bool (Just em) Nothing (Data.Text.null em))
|
||||
<$> get
|
||||
-- TODO(srk): fishy
|
||||
<*> (Just <$> get)
|
||||
<*> getInt
|
||||
<*> getBool
|
||||
<*> getTime
|
||||
<*> getTime
|
||||
put = undefined
|
||||
timesBuilt <- getInt
|
||||
isNonDeterministic <- getBool
|
||||
startTime <- getTime
|
||||
stopTime <- getTime
|
||||
pure $ BuildResult{..}
|
||||
|
||||
put BuildResult{..} = do
|
||||
put status
|
||||
case errorMessage of
|
||||
Just err -> putText err
|
||||
Nothing -> putText mempty
|
||||
putInt timesBuilt
|
||||
putBool isNonDeterministic
|
||||
putTime startTime
|
||||
putTime stopTime
|
||||
|
@ -102,11 +102,26 @@ prop_Text = roundTripS
|
||||
prop_buildMode :: BuildMode -> Property
|
||||
prop_buildMode = roundTripS
|
||||
|
||||
-- ** BuildStatus
|
||||
|
||||
prop_buildStatus :: BuildStatus -> Property
|
||||
prop_buildStatus = roundTripS
|
||||
|
||||
spec_buildMode :: Spec
|
||||
spec_buildMode =
|
||||
-- ** BuildResult
|
||||
|
||||
prop_buildResult :: Property
|
||||
prop_buildResult =
|
||||
forAll (arbitrary `suchThat` ((/= Just "") . System.Nix.Build.errorMessage))
|
||||
$ \br ->
|
||||
roundTripS
|
||||
$ br { System.Nix.Build.startTime = Data.Time.Clock.POSIX.posixSecondsToUTCTime 0
|
||||
, System.Nix.Build.stopTime = Data.Time.Clock.POSIX.posixSecondsToUTCTime 0
|
||||
}
|
||||
|
||||
-- ** Enums
|
||||
|
||||
spec_buildEnums :: Spec
|
||||
spec_buildEnums =
|
||||
let it' name constr value = it name $ runPut (put constr) `shouldBe` runPut (putInt value)
|
||||
in do
|
||||
describe "Build enum order matches Nix" $ do
|
||||
|
Loading…
Reference in New Issue
Block a user