github.com/prysmaticlabs/prysm@v1.4.4/spectest/shared/phase0/epoch_processing/rewards_and_penalties.go (about) 1 package epoch_processing 2 3 import ( 4 "context" 5 "path" 6 "testing" 7 8 "github.com/prysmaticlabs/prysm/beacon-chain/core/epoch/precompute" 9 "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" 10 iface "github.com/prysmaticlabs/prysm/beacon-chain/state/interface" 11 "github.com/prysmaticlabs/prysm/shared/testutil/require" 12 "github.com/prysmaticlabs/prysm/spectest/utils" 13 ) 14 15 // RunRewardsAndPenaltiesTests executes "epoch_processing/rewards_and_penalties" tests. 16 func RunRewardsAndPenaltiesTests(t *testing.T, config string) { 17 require.NoError(t, utils.SetConfig(t, config)) 18 19 testPath := "epoch_processing/rewards_and_penalties/pyspec_tests" 20 testFolders, testsFolderPath := utils.TestFolders(t, config, "phase0", testPath) 21 for _, folder := range testFolders { 22 helpers.ClearCache() 23 t.Run(folder.Name(), func(t *testing.T) { 24 folderPath := path.Join(testsFolderPath, folder.Name()) 25 RunEpochOperationTest(t, folderPath, processRewardsAndPenaltiesPrecomputeWrapper) 26 }) 27 } 28 } 29 30 func processRewardsAndPenaltiesPrecomputeWrapper(t *testing.T, st iface.BeaconState) (iface.BeaconState, error) { 31 ctx := context.Background() 32 vp, bp, err := precompute.New(ctx, st) 33 require.NoError(t, err) 34 vp, bp, err = precompute.ProcessAttestations(ctx, st, vp, bp) 35 require.NoError(t, err) 36 37 st, err = precompute.ProcessRewardsAndPenaltiesPrecompute(st, bp, vp, precompute.AttestationsDelta, precompute.ProposersDelta) 38 require.NoError(t, err, "Could not process reward") 39 40 return st, nil 41 }