Unskip SimpleTx3, check err in pre/post state validations

This commit is contained in:
Gustav Simonsson 2015-07-07 23:57:54 +02:00
parent 0b53a5c673
commit b08abe64e4
2 changed files with 33 additions and 14 deletions

View File

@ -208,10 +208,22 @@ func (t *BlockTest) InsertPreState(ethereum *eth.Ethereum) (*state.StateDB, erro
db := ethereum.StateDb() db := ethereum.StateDb()
statedb := state.New(common.Hash{}, db) statedb := state.New(common.Hash{}, db)
for addrString, acct := range t.preAccounts { for addrString, acct := range t.preAccounts {
addr, _ := hex.DecodeString(addrString) addr, err := hex.DecodeString(addrString)
code, _ := hex.DecodeString(strings.TrimPrefix(acct.Code, "0x")) if err != nil {
balance, _ := new(big.Int).SetString(acct.Balance, 0) return nil, err
nonce, _ := strconv.ParseUint(acct.Nonce, 16, 64) }
code, err := hex.DecodeString(strings.TrimPrefix(acct.Code, "0x"))
if err != nil {
return nil, err
}
balance, ok := new(big.Int).SetString(acct.Balance, 0)
if !ok {
return nil, err
}
nonce, err := strconv.ParseUint(prepInt(16, acct.Nonce), 16, 64)
if err != nil {
return nil, err
}
if acct.PrivateKey != "" { if acct.PrivateKey != "" {
privkey, err := hex.DecodeString(strings.TrimPrefix(acct.PrivateKey, "0x")) privkey, err := hex.DecodeString(strings.TrimPrefix(acct.PrivateKey, "0x"))
@ -365,10 +377,22 @@ func (s *BlockTest) validateBlockHeader(h *btHeader, h2 *types.Header) error {
func (t *BlockTest) ValidatePostState(statedb *state.StateDB) error { func (t *BlockTest) ValidatePostState(statedb *state.StateDB) error {
for addrString, acct := range t.preAccounts { for addrString, acct := range t.preAccounts {
// XXX: is is worth it checking for errors here? // XXX: is is worth it checking for errors here?
addr, _ := hex.DecodeString(addrString) addr, err := hex.DecodeString(addrString)
code, _ := hex.DecodeString(strings.TrimPrefix(acct.Code, "0x")) if err != nil {
balance, _ := new(big.Int).SetString(acct.Balance, 0) return err
nonce, _ := strconv.ParseUint(acct.Nonce, 16, 64) }
code, err := hex.DecodeString(strings.TrimPrefix(acct.Code, "0x"))
if err != nil {
return err
}
balance, ok := new(big.Int).SetString(acct.Balance, 0)
if !ok {
return err
}
nonce, err := strconv.ParseUint(prepInt(16, acct.Nonce), 16, 64)
if err != nil {
return err
}
// address is indirectly verified by the other fields, as it's the db key // address is indirectly verified by the other fields, as it's the db key
code2 := statedb.GetCode(common.BytesToAddress(addr)) code2 := statedb.GetCode(common.BytesToAddress(addr))

View File

@ -37,11 +37,6 @@ var (
vmTestDir = filepath.Join(baseDir, "VMTests") vmTestDir = filepath.Join(baseDir, "VMTests")
BlockSkipTests = []string{ BlockSkipTests = []string{
// Fails in InsertPreState with: computed state root does not
// match genesis block bba25a96 0d8f85c8 Christoph said it will be
// fixed eventually
"SimpleTx3",
// These tests are not valid, as they are out of scope for RLP and // These tests are not valid, as they are out of scope for RLP and
// the consensus protocol. // the consensus protocol.
"BLOCK__RandomByteAtTheEnd", "BLOCK__RandomByteAtTheEnd",
@ -50,7 +45,7 @@ var (
"TRANSCT__ZeroByteAtTheEnd", "TRANSCT__ZeroByteAtTheEnd",
} }
/* Go does not support transaction (account) nonces above 2^64. This /* Go client does not support transaction (account) nonces above 2^64. This
technically breaks consensus but is regarded as "reasonable technically breaks consensus but is regarded as "reasonable
engineering constraint" as accounts cannot easily reach such high engineering constraint" as accounts cannot easily reach such high
nonce values in practice nonce values in practice