2015-07-06 19:54:22 -05:00
// Copyright 2015 The go-ethereum Authors
2015-07-22 11:48:40 -05:00
// This file is part of the go-ethereum library.
2015-07-06 19:54:22 -05:00
//
2015-07-23 11:35:11 -05:00
// The go-ethereum library is free software: you can redistribute it and/or modify
2015-07-06 19:54:22 -05:00
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
2015-07-22 11:48:40 -05:00
// The go-ethereum library is distributed in the hope that it will be useful,
2015-07-06 19:54:22 -05:00
// but WITHOUT ANY WARRANTY; without even the implied warranty of
2015-07-22 11:48:40 -05:00
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2015-07-06 19:54:22 -05:00
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
2015-07-22 11:48:40 -05:00
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
2015-07-06 19:54:22 -05:00
2015-04-20 11:14:57 -05:00
package tests
import (
"testing"
2017-07-11 06:49:14 -05:00
)
2016-10-05 16:55:47 -05:00
2017-07-11 06:49:14 -05:00
func TestBlockchain ( t * testing . T ) {
t . Parallel ( )
bt := new ( testMatcher )
// General state tests are 'exported' as blockchain tests, but we can run them natively.
bt . skipLoad ( ` ^GeneralStateTests/ ` )
// Skip random failures due to selfish mining test.
2017-08-10 04:38:17 -05:00
bt . skipLoad ( ` ^bcForgedTest/bcForkUncle\.json ` )
bt . skipLoad ( ` ^bcMultiChainTest/(ChainAtoChainB_blockorder|CallContractFromNotBestBlock) ` )
bt . skipLoad ( ` ^bcTotalDifficultyTest/(lotsOfLeafs|lotsOfBranches|sideChainWithMoreTransactions) ` )
// Constantinople is not implemented yet.
bt . skipLoad ( ` (?i)(constantinople) ` )
2017-07-11 06:49:14 -05:00
// Expected failures:
2017-08-10 04:38:17 -05:00
bt . fails ( "^TransitionTests/bcEIP158ToByzantium" , "byzantium not supported" )
bt . fails ( ` ^TransitionTests/bcHomesteadToDao/DaoTransactions(|_UncleExtradata|_EmptyTransactionAndForkBlocksAhead)\.json ` , "issue in test" )
bt . fails ( ` ^bc(Exploit|Fork|Gas|Multi|Total|State|Random|Uncle|Valid|Wallet).*_Byzantium$ ` , "byzantium not supported" )
bt . fails ( ` ^bcBlockGasLimitTest/(BlockGasLimit2p63m1|TransactionGasHigherThanLimit2p63m1|SuicideTransaction|GasUsedHigherThanBlockGasLimitButNotWithRefundsSuicideFirst|TransactionGasHigherThanLimit2p63m1_2).*_Byzantium$ ` , "byzantium not supported" )
2017-07-11 06:49:14 -05:00
bt . walk ( t , blockTestDir , func ( t * testing . T , name string , test * BlockTest ) {
2017-08-10 04:38:17 -05:00
if err := bt . checkFailure ( t , name , test . Run ( ) ) ; err != nil {
2017-07-11 06:49:14 -05:00
t . Error ( err )
}
} )
2016-10-05 16:55:47 -05:00
}