Skip to content
This repository was archived by the owner on Aug 18, 2020. It is now read-only.

Commit 1b39e25

Browse files
Merge pull request #3618 from input-output-hk/intricate+mhuesch/CO-354/fix-protocolmagic-eq
[CO-354] Fix `ProtocolMagic` Eq instance & related tests
2 parents 3ea91b9 + 9dfdd70 commit 1b39e25

File tree

5 files changed

+31
-15
lines changed

5 files changed

+31
-15
lines changed

core/test/Test/Pos/Core/ExampleHelpers.hs

+24-3
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ module Test.Pos.Core.ExampleHelpers
2525
, exampleGenesisAvvmBalances0
2626
, exampleGenesisAvvmBalances1
2727
, exampleGenesisAvvmBalances2
28+
, exampleGenesisConfiguration_GCSpec0YesNetworkMagic
2829
, exampleGenesisConfiguration_GCSpec0
2930
, exampleGenesisConfiguration_GCSpec1
3031
, exampleGenesisConfiguration_GCSpec2
@@ -41,6 +42,7 @@ module Test.Pos.Core.ExampleHelpers
4142
, exampleLightDlgIndices
4243
, exampleOpening
4344
, exampleOpeningsMap
45+
, exampleGenesisProtocolConstants0YesNetworkMagic
4446
, exampleGenesisProtocolConstants0
4547
, exampleGenesisProtocolConstants1
4648
, exampleGenesisProtocolConstants2
@@ -743,6 +745,16 @@ exampleGenesisConfiguration_GCSrc :: GenesisConfiguration
743745
exampleGenesisConfiguration_GCSrc =
744746
GCSrc "dRaMwdYsH3QA3dChe" (abstractHash (Raw "Test"))
745747

748+
exampleGenesisConfiguration_GCSpec0YesNetworkMagic :: GenesisConfiguration
749+
exampleGenesisConfiguration_GCSpec0YesNetworkMagic =
750+
GCSpec $ UnsafeGenesisSpec
751+
exampleGenesisAvvmBalances0
752+
exampleSharedSeed0
753+
exampleGenesisDelegation
754+
exampleBlockVersionData0
755+
exampleGenesisProtocolConstants0YesNetworkMagic
756+
exampleGenesisInitializer0
757+
746758
exampleGenesisConfiguration_GCSpec0 :: GenesisConfiguration
747759
exampleGenesisConfiguration_GCSpec0 =
748760
GCSpec $ UnsafeGenesisSpec
@@ -950,11 +962,20 @@ exampleGenesisDelegation = UnsafeGenesisDelegation (HM.fromList
950962
pskDelChainCode = CC.ChainCode (hexToBS "55163b178e999b9fd50637b2edab8c85\
951963
\8a879ac3c4bd3e610095419a19696573")
952964

965+
exampleGenesisProtocolConstants0YesNetworkMagic :: GenesisProtocolConstants
966+
exampleGenesisProtocolConstants0YesNetworkMagic = GenesisProtocolConstants
967+
{ gpcK = 37
968+
, gpcProtocolMagic = ProtocolMagic { getProtocolMagicId = ProtocolMagicId 1783847074
969+
, getRequiresNetworkMagic = NMMustBeNothing
970+
}
971+
, gpcVssMaxTTL = VssMaxTTL {getVssMaxTTL = 1477558317}
972+
, gpcVssMinTTL = VssMinTTL {getVssMinTTL = 744040476}}
973+
953974
exampleGenesisProtocolConstants0 :: GenesisProtocolConstants
954975
exampleGenesisProtocolConstants0 = GenesisProtocolConstants
955976
{ gpcK = 37
956977
, gpcProtocolMagic = ProtocolMagic { getProtocolMagicId = ProtocolMagicId 1783847074
957-
, getRequiresNetworkMagic = NMMustBeNothing
978+
, getRequiresNetworkMagic = NMMustBeJust
958979
}
959980
, gpcVssMaxTTL = VssMaxTTL {getVssMaxTTL = 1477558317}
960981
, gpcVssMinTTL = VssMinTTL {getVssMinTTL = 744040476}}
@@ -963,7 +984,7 @@ exampleGenesisProtocolConstants1 :: GenesisProtocolConstants
963984
exampleGenesisProtocolConstants1 = GenesisProtocolConstants
964985
{ gpcK = 64
965986
, gpcProtocolMagic = ProtocolMagic { getProtocolMagicId = ProtocolMagicId 135977977
966-
, getRequiresNetworkMagic = NMMustBeNothing
987+
, getRequiresNetworkMagic = NMMustBeJust
967988
}
968989
, gpcVssMaxTTL = VssMaxTTL {getVssMaxTTL = 126106167}
969990
, gpcVssMinTTL = VssMinTTL {getVssMinTTL = 310228653}}
@@ -972,7 +993,7 @@ exampleGenesisProtocolConstants2 :: GenesisProtocolConstants
972993
exampleGenesisProtocolConstants2 = GenesisProtocolConstants
973994
{ gpcK = 2
974995
, gpcProtocolMagic = ProtocolMagic { getProtocolMagicId = ProtocolMagicId 1780893186
975-
, getRequiresNetworkMagic = NMMustBeNothing
996+
, getRequiresNetworkMagic = NMMustBeJust
976997
}
977998
, gpcVssMaxTTL = VssMaxTTL {getVssMaxTTL = 402296078}
978999
, gpcVssMinTTL = VssMinTTL {getVssMinTTL = 1341799941}}

core/test/Test/Pos/Core/Json.hs

+6-4
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@ import Pos.Aeson.Genesis ()
1212
import Test.Pos.Core.ExampleHelpers (exampleAddress, exampleAddress1, exampleAddress2,
1313
exampleAddress3, exampleAddress4,
1414
exampleGenesisConfiguration_GCSpec0,
15+
exampleGenesisConfiguration_GCSpec0YesNetworkMagic,
1516
exampleGenesisConfiguration_GCSpec1,
1617
exampleGenesisConfiguration_GCSpec2,
1718
exampleGenesisConfiguration_GCSrc,
1819
exampleGenesisData0, exampleGenesisData1,
1920
exampleGenesisData2,
2021
exampleGenesisProtocolConstants0,
22+
exampleGenesisProtocolConstants0YesNetworkMagic,
2123
exampleGenesisProtocolConstants1,
2224
exampleGenesisProtocolConstants2, feedPM)
2325
import Test.Pos.Core.Gen (genAddress, genBlockVersionData, genByte, genCoin,
@@ -82,8 +84,8 @@ roundTripAddressBuildable =
8284
golden_GenesisConfiguration_GCSpec0 :: Property
8385
golden_GenesisConfiguration_GCSpec0 =
8486
goldenTestJSON
85-
exampleGenesisConfiguration_GCSpec0
86-
"test/golden/json/GenesisConfiguration_GCSpec0"
87+
exampleGenesisConfiguration_GCSpec0YesNetworkMagic
88+
"test/golden/json/GenesisConfiguration_GCSpec0_YesNetworkMagic"
8789

8890
-- Test only decoding (for ensuring backwards compatibility with
8991
-- old GenesisConfiguration format).
@@ -240,8 +242,8 @@ roundTripEpochIndex = eachOf 1000 genEpochIndex roundTripsAesonBuildable
240242
golden_GenesisProtocolConstants0 :: Property
241243
golden_GenesisProtocolConstants0 =
242244
goldenTestJSON
243-
exampleGenesisProtocolConstants0
244-
"test/golden/json/GenesisProtocolConstants0"
245+
exampleGenesisProtocolConstants0YesNetworkMagic
246+
"test/golden/json/GenesisProtocolConstants0_YesNetworkMagic"
245247

246248
-- Test only decoding (for ensuring backwards compatibility with
247249
-- old GenesisProtocolConstants format).

crypto/Pos/Crypto/Configuration.hs

+1-8
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import Universum
1313
import Data.Aeson ((.:), (.=))
1414
import qualified Data.Aeson as A
1515
import Data.Aeson.Types (typeMismatch)
16-
import Data.Function (on)
1716
import Text.JSON.Canonical (FromJSON (..), JSValue (..), ReportSchemaErrors, ToJSON (..),
1817
expected)
1918

@@ -81,19 +80,13 @@ newtype ProtocolMagicId = ProtocolMagicId
8180
data ProtocolMagic = ProtocolMagic
8281
{ getProtocolMagicId :: !ProtocolMagicId
8382
, getRequiresNetworkMagic :: !RequiresNetworkMagic
84-
} deriving (Show, Generic)
83+
} deriving (Eq, Show, Generic)
8584

8685
-- mhueschen: For backwards-compatibility reasons, I redefine this function
8786
-- in terms of the two record accessors.
8887
getProtocolMagic :: ProtocolMagic -> Int32
8988
getProtocolMagic = unProtocolMagicId . getProtocolMagicId
9089

91-
-- Since ProtocolMagic is widely used and we want to maintain backwards
92-
-- compatibility of equality checks between the Int32 identifier, we only
93-
-- compare Eq on `getProtocolMagicId`.
94-
instance Eq ProtocolMagic where
95-
(==) = (==) `on` getProtocolMagicId
96-
9790
instance NFData ProtocolMagic
9891

9992
instance A.ToJSON ProtocolMagic where

0 commit comments

Comments
 (0)