From cfd416843d4b20efdb3fdcd3963454b835dab7c8 Mon Sep 17 00:00:00 2001 From: Nikolaos Bezirgiannis Date: Tue, 14 Jan 2025 12:33:25 +0100 Subject: [PATCH] conformance: Add budgeting for haskell steppable --- plutus-conformance/haskell-steppable/Spec.hs | 18 ++++++++++-------- plutus-conformance/plutus-conformance.cabal | 1 - 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/plutus-conformance/haskell-steppable/Spec.hs b/plutus-conformance/haskell-steppable/Spec.hs index 4ff5ebd3861..76622d2a3ca 100644 --- a/plutus-conformance/haskell-steppable/Spec.hs +++ b/plutus-conformance/haskell-steppable/Spec.hs @@ -3,11 +3,10 @@ module Main (main) where import PlutusConformance.Common -import PlutusCore.Evaluation.Machine.ExBudgetingDefaults (defaultCekParametersForTesting) +import PlutusCore.Evaluation.Machine.MachineParameters.Default +import PlutusPrelude import UntypedPlutusCore as UPLC -import UntypedPlutusCore.Evaluation.Machine.SteppableCek qualified as SCek - -import Control.Lens +import UntypedPlutusCore.Evaluation.Machine.SteppableCek as SCek failingEvaluationTests :: [FilePath] failingEvaluationTests = [] @@ -17,15 +16,18 @@ failingBudgetTests = [] -- | The `evaluator` for the steppable-version of the CEK machine. evalSteppableUplcProg :: UplcEvaluator -evalSteppableUplcProg = UplcEvaluatorWithoutCosting $ traverseOf UPLC.progTerm $ \t -> do +evalSteppableUplcProg = UplcEvaluatorWithCosting $ \modelParams (UPLC.Program a v t) -> do + params <- case mkMachineParametersFor [def] modelParams of + Left _ -> Nothing + Right machParamsList -> lookup def machParamsList -- runCek-like functions (e.g. evaluateCekNoEmit) are partial on term's with free variables, -- that is why we manually check first for any free vars case UPLC.deBruijnTerm t of Left (_ :: UPLC.FreeVariableError) -> Nothing Right _ -> Just () - case SCek.evaluateCekNoEmit defaultCekParametersForTesting t of - Left _ -> Nothing - Right prog -> Just prog + case SCek.runCekNoEmit params counting t of + (Left _,_) -> Nothing + (Right t', CountingSt cost) -> Just (UPLC.Program a v t', cost) main :: IO () main = diff --git a/plutus-conformance/plutus-conformance.cabal b/plutus-conformance/plutus-conformance.cabal index bb51c2adb88..26b24882404 100644 --- a/plutus-conformance/plutus-conformance.cabal +++ b/plutus-conformance/plutus-conformance.cabal @@ -87,7 +87,6 @@ test-suite haskell-steppable-conformance other-modules: build-depends: , base >=4.9 && <5 - , lens , plutus-conformance , plutus-core ^>=1.39