{-# LANGUAGE TypeApplications #-} import Cardano.Crypto.Libsodium (sodiumInit) import Cardano.Ledger.Shelley (ShelleyEra) import Data.Proxy (Proxy (..)) import System.Environment (lookupEnv) import System.IO (hSetEncoding, stdout, utf8) import Test.Cardano.Ledger.Shelley.PropertyTests (commonTests) import qualified Test.Cardano.Ledger.Shelley.Rewards as Rewards (tests) import qualified Test.Cardano.Ledger.Shelley.Rules.AdaPreservation as AdaPreservation import qualified Test.Cardano.Ledger.Shelley.Rules.ClassifyTraces as ClassifyTraces ( onlyValidChainSignalsAreGenerated, relevantCasesAreCovered, ) import qualified Test.Cardano.Ledger.Shelley.Rules.Deposits as Deposits (tests) import qualified Test.Cardano.Ledger.Shelley.Rules.IncrementalStake as IncrementalStake import qualified Test.Cardano.Ledger.Shelley.RulesTests as RulesTests ( chainExamples, multisigExamples, ) import qualified Test.Cardano.Ledger.Shelley.SafeHash as SafeHash (safeHashTest) import qualified Test.Cardano.Ledger.Shelley.Serialisation as Serialisation import Test.Cardano.Ledger.Shelley.Serialisation.EraIndepGenerators () import qualified Test.Cardano.Ledger.Shelley.UnitTests as UnitTests (unitTests) import qualified Test.Cardano.Ledger.Shelley.WitVKeys as WitVKeys (tests) import Test.QuickCheck (Args (maxSuccess), stdArgs) import Test.Tasty import Test.Tasty.QuickCheck (QuickCheckMaxRatio (..)) main :: IO () IO () main = do Handle -> TextEncoding -> IO () hSetEncoding Handle stdout TextEncoding utf8 IO () sodiumInit Maybe String nightly <- String -> IO (Maybe String) lookupEnv String "NIGHTLY" Spec -> IO () defaultMain (Spec -> IO ()) -> Spec -> IO () forall a b. (a -> b) -> a -> b $ case Maybe String nightly of Maybe String Nothing -> Spec defaultTests Just String _ -> Spec nightlyTests defaultTests :: TestTree defaultTests :: Spec defaultTests = String -> [Spec] -> Spec forall a. HasCallStack => String -> [SpecWith a] -> SpecWith a testGroup String "Shelley tests" [ forall era. (EraGen era, EraGov era, EraStake era, HasTrace (CHAIN era) (GenEnv MockCrypto era)) => Spec Deposits.tests @ShelleyEra , QuickCheckMaxRatio -> Spec -> Spec forall a. QuickCheckMaxRatio -> SpecWith a -> SpecWith a localOption (Int -> QuickCheckMaxRatio QuickCheckMaxRatio Int 50) (forall era. (EraGen era, EraStake era, ChainProperty era, HasTrace (CHAIN era) (GenEnv MockCrypto era)) => Int -> Spec ClassifyTraces.relevantCasesAreCovered @ShelleyEra (Args -> Int maxSuccess Args stdArgs)) , forall era. (EraGen era, EraStake era, ChainProperty era, HasTrace (CHAIN era) (GenEnv MockCrypto era), GovState era ~ ShelleyGovState era, State (EraRule "LEDGER" era) ~ LedgerState era, Signal (EraRule "LEDGER" era) ~ Tx era, Environment (EraRule "LEDGER" era) ~ LedgerEnv era, BaseM (EraRule "LEDGER" era) ~ ShelleyBase, STS (EraRule "LEDGER" era)) => Int -> Spec AdaPreservation.tests @ShelleyEra (Args -> Int maxSuccess Args stdArgs) , forall era. (EraGen era, EraGov era, EraStake era, HasTrace (CHAIN era) (GenEnv MockCrypto era)) => Spec ClassifyTraces.onlyValidChainSignalsAreGenerated @ShelleyEra , Spec WitVKeys.tests , Spec Rewards.tests , Spec Serialisation.tests , Spec RulesTests.chainExamples , Spec RulesTests.multisigExamples , Spec UnitTests.unitTests , Spec SafeHash.safeHashTest ] nightlyTests :: TestTree nightlyTests :: Spec nightlyTests = String -> [Spec] -> Spec forall a. HasCallStack => String -> [SpecWith a] -> SpecWith a testGroup String "Shelley tests - nightly" ([Spec] -> Spec) -> [Spec] -> Spec forall a b. (a -> b) -> a -> b $ Spec Serialisation.tests Spec -> [Spec] -> [Spec] forall a. a -> [a] -> [a] : Proxy ShelleyEra -> Spec forall era. (EraGen era, EraGov era, EraStake era, ShelleyEraAccounts era, HasTrace (CHAIN era) (GenEnv MockCrypto era)) => Proxy era -> Spec IncrementalStake.incrStakeComparisonTest (Proxy ShelleyEra forall {k} (t :: k). Proxy t Proxy :: Proxy ShelleyEra) Spec -> [Spec] -> [Spec] forall a. a -> [a] -> [a] : forall era. (EraGen era, EraStake era, ShelleyEraAccounts era, ApplyBlock era, GetLedgerView era, Embed (EraRule "BBODY" era) (CHAIN era), Embed (EraRule "TICK" era) (CHAIN era), Embed (EraRule "TICKN" era) (CHAIN era), HasTrace (EraRule "LEDGERS" era) (GenEnv MockCrypto era), State (EraRule "TICKN" era) ~ TicknState, Environment (EraRule "LEDGERS" era) ~ ShelleyLedgersEnv era, Environment (EraRule "TICKN" era) ~ TicknEnv, Signal (EraRule "LEDGERS" era) ~ Seq (Tx era), Signal (EraRule "TICKN" era) ~ Bool, BaseM (EraRule "LEDGERS" era) ~ ShelleyBase, AtMostEra "Alonzo" era, GovState era ~ ShelleyGovState era, InstantStake era ~ ShelleyInstantStake era, BaseEnv (EraRule "LEDGER" era) ~ Globals, HasTrace (EraRule "LEDGER" era) (GenEnv MockCrypto era), State (EraRule "TICK" era) ~ NewEpochState era, State (EraRule "LEDGER" era) ~ LedgerState era, BaseM (EraRule "LEDGER" era) ~ ShelleyBase, State (EraRule "BBODY" era) ~ ShelleyBbodyState era, Environment (EraRule "LEDGER" era) ~ LedgerEnv era, Environment (EraRule "TICK" era) ~ (), Signal (EraRule "LEDGER" era) ~ Tx era, State (EraRule "LEDGERS" era) ~ LedgerState era, Environment (EraRule "BBODY" era) ~ BbodyEnv era, Signal (EraRule "TICK" era) ~ SlotNo, Signal (EraRule "BBODY" era) ~ Block BHeaderView era) => [Spec] commonTests @ShelleyEra