{-# OPTIONS_GHC -fconstraint-solver-iterations=0 #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module System.Nix.Arbitrary.Build where
import Data.Time (UTCTime)
import Data.Text.Arbitrary ()
import Test.QuickCheck (Arbitrary(..), scale, suchThat)
import Test.QuickCheck.Arbitrary.Generic (GenericArbitrary(..))
import System.Nix.Arbitrary.OutputName ()
import System.Nix.Arbitrary.Realisation ()
import System.Nix.Arbitrary.UTCTime ()
import System.Nix.Build
import qualified Data.Time.Clock.POSIX
deriving via GenericArbitrary BuildMode
instance Arbitrary BuildMode
deriving via GenericArbitrary BuildStatus
instance Arbitrary BuildStatus
instance Arbitrary BuildResult where
arbitrary :: Gen BuildResult
arbitrary = do
BuildStatus
buildResultStatus <- Gen BuildStatus
forall a. Arbitrary a => Gen a
arbitrary
Maybe Text
buildResultErrorMessage <- Gen (Maybe Text)
forall a. Arbitrary a => Gen a
arbitrary
Maybe Int
buildResultTimesBuilt <- Gen (Maybe Int)
forall a. Arbitrary a => Gen a
arbitrary Gen (Maybe Int) -> (Maybe Int -> Bool) -> Gen (Maybe Int)
forall a. Gen a -> (a -> Bool) -> Gen a
`suchThat` (Maybe Int -> Maybe Int -> Bool
forall a. Eq a => a -> a -> Bool
/= Int -> Maybe Int
forall a. a -> Maybe a
Just Int
0)
Maybe Bool
buildResultIsNonDeterministic <- Gen (Maybe Bool)
forall a. Arbitrary a => Gen a
arbitrary Gen (Maybe Bool) -> (Maybe Bool -> Bool) -> Gen (Maybe Bool)
forall a. Gen a -> (a -> Bool) -> Gen a
`suchThat` (Maybe Bool -> Maybe Bool -> Bool
forall a. Eq a => a -> a -> Bool
/= Maybe Bool
forall a. Maybe a
Nothing)
Maybe UTCTime
buildResultStartTime <- Gen (Maybe UTCTime)
forall a. Arbitrary a => Gen a
arbitrary Gen (Maybe UTCTime)
-> (Maybe UTCTime -> Bool) -> Gen (Maybe UTCTime)
forall a. Gen a -> (a -> Bool) -> Gen a
`suchThat` (Maybe UTCTime -> Maybe UTCTime -> Bool
forall a. Eq a => a -> a -> Bool
/= UTCTime -> Maybe UTCTime
forall a. a -> Maybe a
Just UTCTime
t0)
Maybe UTCTime
buildResultStopTime <- Gen (Maybe UTCTime)
forall a. Arbitrary a => Gen a
arbitrary Gen (Maybe UTCTime)
-> (Maybe UTCTime -> Bool) -> Gen (Maybe UTCTime)
forall a. Gen a -> (a -> Bool) -> Gen a
`suchThat` (Maybe UTCTime -> Maybe UTCTime -> Bool
forall a. Eq a => a -> a -> Bool
/= UTCTime -> Maybe UTCTime
forall a. a -> Maybe a
Just UTCTime
t0)
Maybe (Map (DerivationOutput OutputName) Realisation)
buildResultBuiltOutputs <- (Int -> Int)
-> Gen (Maybe (Map (DerivationOutput OutputName) Realisation))
-> Gen (Maybe (Map (DerivationOutput OutputName) Realisation))
forall a. (Int -> Int) -> Gen a -> Gen a
scale (Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
10) (Gen (Maybe (Map (DerivationOutput OutputName) Realisation))
forall a. Arbitrary a => Gen a
arbitrary Gen (Maybe (Map (DerivationOutput OutputName) Realisation))
-> (Maybe (Map (DerivationOutput OutputName) Realisation) -> Bool)
-> Gen (Maybe (Map (DerivationOutput OutputName) Realisation))
forall a. Gen a -> (a -> Bool) -> Gen a
`suchThat` (Maybe (Map (DerivationOutput OutputName) Realisation)
-> Maybe (Map (DerivationOutput OutputName) Realisation) -> Bool
forall a. Eq a => a -> a -> Bool
/= Maybe (Map (DerivationOutput OutputName) Realisation)
forall a. Maybe a
Nothing))
BuildResult -> Gen BuildResult
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure BuildResult{Maybe Bool
Maybe Int
Maybe Text
Maybe (Map (DerivationOutput OutputName) Realisation)
Maybe UTCTime
BuildStatus
buildResultStatus :: BuildStatus
buildResultErrorMessage :: Maybe Text
buildResultTimesBuilt :: Maybe Int
buildResultIsNonDeterministic :: Maybe Bool
buildResultStartTime :: Maybe UTCTime
buildResultStopTime :: Maybe UTCTime
buildResultBuiltOutputs :: Maybe (Map (DerivationOutput OutputName) Realisation)
buildResultStatus :: BuildStatus
buildResultErrorMessage :: Maybe Text
buildResultTimesBuilt :: Maybe Int
buildResultIsNonDeterministic :: Maybe Bool
buildResultStartTime :: Maybe UTCTime
buildResultStopTime :: Maybe UTCTime
buildResultBuiltOutputs :: Maybe (Map (DerivationOutput OutputName) Realisation)
..}
where
t0 :: UTCTime
t0 :: UTCTime
t0 = POSIXTime -> UTCTime
Data.Time.Clock.POSIX.posixSecondsToUTCTime POSIXTime
0