Skip to content

Commit

Permalink
Merge #3236
Browse files Browse the repository at this point in the history
3236: Test to assert mainnet configuration is valid r=newhoggy a=newhoggy

Ensures that `configuration/cardano/mainnet-config.json` is always valid.

Co-authored-by: John Ky <john.ky@iohk.io>
  • Loading branch information
iohk-bors[bot] and newhoggy committed Sep 25, 2021
2 parents 5f0d240 + b9f7ce6 commit ed7fdbf
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 2 deletions.
7 changes: 5 additions & 2 deletions cardano-cli/cardano-cli.cabal
Expand Up @@ -144,7 +144,6 @@ library
, transformers
, transformers-except
, utf8-string
, unordered-containers
, vector
, yaml

Expand Down Expand Up @@ -177,13 +176,17 @@ test-suite cardano-cli-test
, cardano-node
, cardano-prelude
, cardano-slotting
, directory
, exceptions
, filepath
, hedgehog
, hedgehog-extras
, parsec
, text
, transformers

other-modules: Test.Cli.FilePermissions
other-modules: Test.Config.Mainnet
Test.Cli.FilePermissions
Test.Cli.ITN
Test.Cli.MultiAssetParsing
Test.Cli.Pioneers.Exercise1
Expand Down
39 changes: 39 additions & 0 deletions cardano-cli/test/Test/Config/Mainnet.hs
@@ -0,0 +1,39 @@
{-# LANGUAGE DisambiguateRecordFields #-}
{-# LANGUAGE OverloadedStrings #-}

module Test.Config.Mainnet
( tests
) where

import Cardano.Api (initialLedgerState, renderInitialLedgerStateError)
import Control.Monad
import Control.Monad.Trans.Except
import Data.Bool (Bool(..))
import Data.Either (Either(..))
import Data.Function
import Data.Maybe
import Hedgehog (Property)
import System.FilePath ((</>))
import System.IO (IO)

import qualified Data.Text as T
import qualified GHC.Stack as GHC
import qualified Hedgehog as H
import qualified Hedgehog.Extras.Test.Base as H
import qualified Hedgehog.Extras.Test.Process as H
import qualified System.Directory as IO

hprop_configMainnet :: Property
hprop_configMainnet = H.propertyOnce $ do
projectBase <- H.note =<< H.evalIO . IO.canonicalizePath =<< H.getProjectBase
result <- H.evalIO $ runExceptT $ initialLedgerState $ projectBase </> "configuration/cardano/mainnet-config.json"

This comment has been minimized.

Copy link
@jonathancross

jonathancross Nov 19, 2021

Not a good practice to hardcode paths like this. Shouldn't it be a user-configurable option?

case result of
Right (_, _) -> return ()
Left e -> H.failWithCustom GHC.callStack Nothing (T.unpack (renderInitialLedgerStateError e))

tests :: IO Bool
tests =
H.checkSequential
$ H.Group "Test.Config.Mainnet"
[ ("hprop_configMainnet", hprop_configMainnet)
]
2 changes: 2 additions & 0 deletions cardano-cli/test/cardano-cli-test.hs
Expand Up @@ -10,6 +10,7 @@ import qualified Test.Cli.Pioneers.Exercise2
import qualified Test.Cli.Pioneers.Exercise3
import qualified Test.Cli.Pioneers.Exercise4
import qualified Test.Cli.Shelley.Run.Query
import qualified Test.Config.Mainnet

main :: IO ()
main =
Expand All @@ -22,4 +23,5 @@ main =
, Test.Cli.Pioneers.Exercise3.tests
, Test.Cli.Pioneers.Exercise4.tests
, Test.Cli.Shelley.Run.Query.tests
, Test.Config.Mainnet.tests
]

0 comments on commit ed7fdbf

Please sign in to comment.