mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2025-01-05 02:24:29 +00:00
24987878e4
* Most of the PR changed files are extra and slightly more complicated unit tests. * Fixed Eth1DataVotes not inheriting genesis * Fixed Attestations simulation using wrong slot when reconstructing partecipation * Fixed Copy() operation on BeaconState on Eth1DataVotes * Used correct ListSSZ type for Eth1DataVotes and HistoricalSummaries * Fixed wrong []uint64 deltas on empty slots
43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
package consensus_tests
|
|
|
|
import (
|
|
"fmt"
|
|
"io/fs"
|
|
"testing"
|
|
|
|
"github.com/ledgerwatch/erigon/cl/transition/machine"
|
|
"github.com/ledgerwatch/erigon/spectest"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
var FinalityFinality = spectest.HandlerFunc(func(t *testing.T, root fs.FS, c spectest.TestCase) (err error) {
|
|
|
|
testState, err := spectest.ReadBeaconState(root, c.Version(), spectest.PreSsz)
|
|
require.NoError(t, err)
|
|
|
|
expectedState, err := spectest.ReadBeaconState(root, c.Version(), spectest.PostSsz)
|
|
require.NoError(t, err)
|
|
|
|
blocks, err := spectest.ReadBlocks(root, c.Version())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
startSlot := testState.Slot()
|
|
for _, block := range blocks {
|
|
if err := machine.TransitionState(c.Machine, testState, block); err != nil {
|
|
require.NoError(t, fmt.Errorf("cannot transition state: %w. slot=%d. start_slot=%d", err, block.Block.Slot, startSlot))
|
|
}
|
|
}
|
|
expectedRoot, err := testState.HashSSZ()
|
|
assert.NoError(t, err)
|
|
|
|
haveRoot, err := expectedState.HashSSZ()
|
|
assert.NoError(t, err)
|
|
|
|
assert.EqualValues(t, haveRoot, expectedRoot, "state root")
|
|
|
|
return nil
|
|
})
|