Skip to content

Commit 9fb7854

Browse files
committed
tests: custom Arbitrary Trace and Arbitrary ErrorInfo w/o (Just 0)
1 parent c815068 commit 9fb7854

File tree

3 files changed

+23
-37
lines changed

3 files changed

+23
-37
lines changed

hnix-store-remote/src/System/Nix/Store/Remote/Arbitrary.hs

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import Data.Some (Some(Some))
77
import System.Nix.Arbitrary ()
88
import System.Nix.Store.Remote.Types
99

10-
import Test.QuickCheck (Arbitrary(..), oneof)
10+
import Test.QuickCheck (Arbitrary(..), oneof, suchThat)
1111
import Test.QuickCheck.Arbitrary.Generic (GenericArbitrary(..))
1212

1313
deriving via GenericArbitrary CheckMode
@@ -39,14 +39,26 @@ deriving via GenericArbitrary ActivityResult
3939
deriving via GenericArbitrary Field
4040
instance Arbitrary Field
4141

42-
deriving via GenericArbitrary Trace
43-
instance Arbitrary Trace
42+
instance Arbitrary Trace where
43+
arbitrary = do
44+
-- we encode 0 position as Nothing
45+
tracePosition <- arbitrary `suchThat` (/= Just 0)
46+
traceHint <- arbitrary
47+
48+
pure Trace{..}
4449

4550
deriving via GenericArbitrary BasicError
4651
instance Arbitrary BasicError
4752

48-
deriving via GenericArbitrary ErrorInfo
49-
instance Arbitrary ErrorInfo
53+
instance Arbitrary ErrorInfo where
54+
arbitrary = do
55+
errorInfoLevel <- arbitrary
56+
errorInfoMessage <- arbitrary
57+
-- we encode 0 position as Nothing
58+
errorInfoPosition <- arbitrary `suchThat` (/= Just 0)
59+
errorInfoTraces <- arbitrary
60+
61+
pure ErrorInfo{..}
5062

5163
deriving via GenericArbitrary LoggerOpCode
5264
instance Arbitrary LoggerOpCode

hnix-store-remote/tests/NixSerializerSpec.hs

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import System.Nix.StorePath (StoreDir)
1818
import System.Nix.StorePath.Metadata (Metadata(..))
1919
import System.Nix.Store.Remote.Arbitrary ()
2020
import System.Nix.Store.Remote.Serializer
21-
import System.Nix.Store.Remote.Types.Logger (ErrorInfo(..), Logger(..), Trace(..))
21+
import System.Nix.Store.Remote.Types.Logger (Logger(..))
2222
import System.Nix.Store.Remote.Types.ProtoVersion (HasProtoVersion(..), ProtoVersion(..))
2323
import System.Nix.Store.Remote.Types.StoreConfig (TestStoreConfig)
2424
import System.Nix.Store.Remote.Types.WorkerOp (WorkerOp(..))
@@ -112,19 +112,9 @@ spec = parallel $ do
112112
prop "Maybe Activity" $ roundtripS maybeActivity
113113
prop "ActivityResult" $ roundtripS activityResult
114114
prop "Field" $ roundtripS field
115-
prop "Trace"
116-
$ forAll (arbitrary `suchThat` ((/= Just 0) . tracePosition))
117-
$ roundtripS trace
115+
prop "Trace" $ roundtripS trace
118116
prop "BasicError" $ roundtripS basicError
119-
prop "ErrorInfo"
120-
$ forAll (arbitrary
121-
`suchThat`
122-
(\ErrorInfo{..}
123-
-> errorInfoPosition /= Just 0
124-
&& all ((/= Just 0) . tracePosition) errorInfoTraces
125-
)
126-
)
127-
$ roundtripS errorInfo
117+
prop "ErrorInfo" $ roundtripS errorInfo
128118
prop "LoggerOpCode" $ roundtripS loggerOpCode
129119
prop "Verbosity" $ roundtripS verbosity
130120
prop "Logger"
@@ -159,12 +149,7 @@ hacks v (Some (QueryMissing _)) | v < ProtoVersion 1 30 = False
159149
hacks _ _ = True
160150

161151
errorInfoIf :: Bool -> Logger -> Bool
162-
errorInfoIf True (Logger_Error (Right x)) = noJust0s x
163-
where
164-
noJust0s :: ErrorInfo -> Bool
165-
noJust0s ErrorInfo{..} =
166-
errorInfoPosition /= Just 0
167-
&& all ((/= Just 0) . tracePosition) errorInfoTraces
152+
errorInfoIf True (Logger_Error (Right _)) = True
168153
errorInfoIf False (Logger_Error (Left _)) = True
169154
errorInfoIf _ (Logger_Error _) = False
170155
errorInfoIf _ _ = True

hnix-store-remote/tests/SerializeSpec.hs

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import Data.Text (Text)
99
import Test.Hspec (Expectation, Spec, describe, it, parallel, shouldBe)
1010
import Test.Hspec.QuickCheck (prop)
1111
import Test.Hspec.Nix (roundtrips)
12-
import Test.QuickCheck (arbitrary, forAll, suchThat)
1312

1413
import qualified Data.Either
1514
import qualified Data.HashSet
@@ -92,19 +91,9 @@ spec = parallel $ do
9291
prop "ActivityID" $ roundtripS @ActivityID
9392
prop "Activity" $ roundtripS @Activity
9493
prop "Field" $ roundtripS @Field
95-
prop "Trace"
96-
$ forAll (arbitrary `suchThat` ((/= Just 0) . tracePosition))
97-
$ roundtripS @Trace
94+
prop "Trace" $ roundtripS @Trace
9895
prop "BasicError" $ roundtripS @BasicError
99-
prop "ErrorInfo"
100-
$ forAll (arbitrary
101-
`suchThat`
102-
(\ErrorInfo{..}
103-
-> errorInfoPosition /= Just 0
104-
&& all ((/= Just 0) . tracePosition) errorInfoTraces
105-
)
106-
)
107-
$ roundtripS @ErrorInfo
96+
prop "ErrorInfo" $ roundtripS @ErrorInfo
10897
prop "LoggerOpCode" $ roundtripS @LoggerOpCode
10998
prop "Verbosity" $ roundtripS @Verbosity
11099

0 commit comments

Comments
 (0)