diff --git a/.github/workflows/haskell.yml b/.github/workflows/haskell.yml index aa5af485..85f07660 100644 --- a/.github/workflows/haskell.yml +++ b/.github/workflows/haskell.yml @@ -167,6 +167,10 @@ jobs: run: cabal build --only-dependencies --enable-tests --enable-benchmarks - name: Build all targets (cabal) run: cabal build --enable-tests --enable-benchmarks all + - name: Symlink cardano-node binaries + run: cabal install --package-env=$(pwd) --overwrite-policy=always cardano-cli cardano-node + - name: Run privnet tests + run: cabal run atlas-privnet-tests -- -j1 --hide-successes - name: Run all tests (cabal) run: cabal run atlas-tests -- -j1 --hide-successes - name: Run doctest (docspec) @@ -182,10 +186,6 @@ jobs: echo "===========================[ RUN DOCSPEC ]===========================" ./cabal-docspec -q --ignore-trailing-space echo " ============================[ FINISHED ]============================" - - name: Symlink cardano-node binaries - run: cabal install --package-env=$(pwd) --overwrite-policy=always cardano-cli cardano-node - - name: Run privnet tests - run: cabal run atlas-privnet-tests -- -j1 --hide-successes - name: Run checks (cabal) run: cabal check - name: Create source distribution file (cabal) diff --git a/src/GeniusYield/Providers/Blockfrost.hs b/src/GeniusYield/Providers/Blockfrost.hs index c018bb8a..09e9a895 100644 --- a/src/GeniusYield/Providers/Blockfrost.hs +++ b/src/GeniusYield/Providers/Blockfrost.hs @@ -449,7 +449,7 @@ blockfrostEraHistory proj = do { eraEpochSize = CSlot.EpochSize $ fromIntegral _parametersEpochLength , eraSlotLength = CTime.mkSlotLength _parametersSlotLength , eraSafeZone = Ouroboros.StandardSafeZone _parametersSafeZone - , eraGenesisWin = 0 + , eraGenesisWin = 0 -- We don't make use of it. } mkEra Blockfrost.NetworkEraSummary {_networkEraStart, _networkEraEnd, _networkEraParameters} = Ouroboros.EraSummary { eraStart = mkBound _networkEraStart diff --git a/src/GeniusYield/Providers/Maestro.hs b/src/GeniusYield/Providers/Maestro.hs index 942ae76f..9c849c1f 100644 --- a/src/GeniusYield/Providers/Maestro.hs +++ b/src/GeniusYield/Providers/Maestro.hs @@ -543,7 +543,7 @@ maestroEraHistory env = do { eraEpochSize = CSlot.EpochSize $ fromIntegral eraParametersEpochLength , eraSlotLength = CTime.mkSlotLength $ Maestro.epochSlotLengthMilliseconds eraParametersSlotLength / 1000 , eraSafeZone = Ouroboros.StandardSafeZone $ fromJust eraParametersSafeZone - , eraGenesisWin = 0 + , eraGenesisWin = 0 -- We don't make use of it. } mkEra Maestro.EraSummary {eraSummaryStart, eraSummaryEnd, eraSummaryParameters} = Ouroboros.EraSummary { eraStart = mkBound eraSummaryStart diff --git a/src/GeniusYield/Test/Privnet/Setup.hs b/src/GeniusYield/Test/Privnet/Setup.hs index b21a0ce6..b70e7ccb 100644 --- a/src/GeniusYield/Test/Privnet/Setup.hs +++ b/src/GeniusYield/Test/Privnet/Setup.hs @@ -16,6 +16,7 @@ module GeniusYield.Test.Privnet.Setup ( mkPrivnetTestFor', -- * "Cardano.Testnet" re-exports cardanoDefaultTestnetOptions, + cardanoDefaultTestnetOptionsConway, cardanoDefaultTestnetNodeOptions, CardanoTestnetOptions (..), TestnetNodeOptions (..), @@ -65,6 +66,8 @@ import Testnet.Types -- The first argument is the log severity filter. Only logs of this severity or higher will be passed on to the second argument, which is a logging action. newtype Setup = Setup (GYLogSeverity -> (String -> IO ()) -> (Ctx -> IO ()) -> IO ()) +cardanoDefaultTestnetOptionsConway :: CardanoTestnetOptions +cardanoDefaultTestnetOptionsConway = cardanoDefaultTestnetOptions {cardanoNodeEra = Api.AnyCardanoEra Api.ConwayEra} data PrivnetRuntime = PrivnetRuntime { runtimeNodeSocket :: !FilePath , runtimeNetworkInfo :: !GYNetworkInfo diff --git a/src/GeniusYield/Types/TxCert.hs b/src/GeniusYield/Types/TxCert.hs index a5d2f43c..d5e4050d 100644 --- a/src/GeniusYield/Types/TxCert.hs +++ b/src/GeniusYield/Types/TxCert.hs @@ -16,12 +16,14 @@ module GeniusYield.Types.TxCert ( ) where import GeniusYield.Types.Certificate -import GeniusYield.Types.Credential (GYStakeCredential) +import GeniusYield.Types.Credential (GYStakeCredential (..)) import GeniusYield.Types.Delegatee (GYDelegatee) import GeniusYield.Types.TxCert.Internal -mkStakeAddressRegistrationCertificate :: GYStakeCredential -> GYTxCert v -mkStakeAddressRegistrationCertificate sc = GYTxCert (GYStakeAddressRegistrationCertificatePB sc) Nothing +{-| Post conway, newer stake address registration certificate also require a witness. +-} +mkStakeAddressRegistrationCertificate :: GYStakeCredential -> GYTxCertWitness v -> GYTxCert v +mkStakeAddressRegistrationCertificate sc wit = GYTxCert (GYStakeAddressRegistrationCertificatePB sc) (Just wit) {-| Note that deregistration certificate requires following preconditions: diff --git a/tests-privnet/GeniusYield/Test/Privnet/Stake/Utils.hs b/tests-privnet/GeniusYield/Test/Privnet/Stake/Utils.hs index 38f97a88..f5692dac 100644 --- a/tests-privnet/GeniusYield/Test/Privnet/Stake/Utils.hs +++ b/tests-privnet/GeniusYield/Test/Privnet/Stake/Utils.hs @@ -72,9 +72,9 @@ registerStakeCredentialSteps strat user mstakeValHash info ctx = do pp <- ctxGetParams ctx & gyGetProtocolParameters' info $ "-- Protocol parameters --\n" <> show pp <> "\n-- x --\n" txBodyReg <- ctxRun ctx user $ do - buildTxBodyWithStrategy strat $ mustHaveCertificate (mkStakeAddressRegistrationCertificate (resolveStakeCredential user mstakeValHash)) + buildTxBodyWithStrategy strat $ mustHaveCertificate (mkStakeAddressRegistrationCertificate (resolveStakeCredential user mstakeValHash) (resolveCertWitness (isJust mstakeValHash))) info $ "-- Registration tx body --\n" <> show txBodyReg <> "\n-- x --\n" - ctxRun ctx user $ signAndSubmitConfirmed_ txBodyReg + ctxRun ctx user $ submitTxBodyConfirmed_ txBodyReg $ resolveSigningRequirement user mstakeValHash delegateStakeCredentialSteps :: GYCoinSelectionStrategy -> User -> Maybe GYStakeValidatorHash -> GYStakePoolId -> (String -> IO ()) -> Ctx -> IO () delegateStakeCredentialSteps strat user mstakeValHash spId info ctx = do diff --git a/tests-privnet/atlas-privnet-tests.hs b/tests-privnet/atlas-privnet-tests.hs index df1f356f..0622dacf 100644 --- a/tests-privnet/atlas-privnet-tests.hs +++ b/tests-privnet/atlas-privnet-tests.hs @@ -10,8 +10,8 @@ module Main (main) where import GeniusYield.Imports -import Test.Tasty (defaultMain, testGroup) -import Test.Tasty.HUnit (testCaseSteps) +import Test.Tasty (defaultMain, testGroup) +import Test.Tasty.HUnit (testCaseSteps) import GeniusYield.CardanoApi.EraHistory import GeniusYield.Types @@ -19,13 +19,13 @@ import GeniusYield.Types import GeniusYield.Test.Privnet.Ctx import qualified GeniusYield.Test.Privnet.Examples import GeniusYield.Test.Privnet.Setup -import qualified GeniusYield.Test.Privnet.Stake import qualified GeniusYield.Test.Privnet.SimpleScripts +import qualified GeniusYield.Test.Privnet.Stake import GeniusYield.TxBuilder main :: IO () main = do - withPrivnet cardanoDefaultTestnetOptions $ \setup -> + withPrivnet cardanoDefaultTestnetOptionsConway $ \setup -> defaultMain $ testGroup "atlas-privnet-tests" [ testCaseSteps "Balances" $ \info -> withSetup info setup $ \ctx -> do forM_ (zip [(1 :: Integer) ..] (ctxUserF ctx : ctxUsers ctx)) diff --git a/tests-unified/atlas-unified-tests.hs b/tests-unified/atlas-unified-tests.hs index 21f2ef09..c34e68fc 100644 --- a/tests-unified/atlas-unified-tests.hs +++ b/tests-unified/atlas-unified-tests.hs @@ -2,7 +2,8 @@ module Main ( main ) where -import Test.Tasty (defaultMain, testGroup) +import Test.Tasty (defaultMain, + testGroup) import GeniusYield.Test.Privnet.Setup @@ -10,5 +11,5 @@ import GeniusYield.Test.Unified.BetRef.PlaceBet import GeniusYield.Test.Unified.BetRef.TakePot main :: IO () -main = withPrivnet cardanoDefaultTestnetOptions $ \setup -> +main = withPrivnet cardanoDefaultTestnetOptionsConway $ \setup -> defaultMain $ testGroup "BetRef" [placeBetTests setup, takeBetPotTests setup]