mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
tests: put execution spec tests into their own unit test
This commit is contained in:
parent
aab4a82bc5
commit
141a307035
1 changed files with 33 additions and 21 deletions
|
|
@ -19,12 +19,11 @@ package tests
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/core/rawdb"
|
"github.com/ethereum/go-ethereum/core/rawdb"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBlockchain(t *testing.T) {
|
func TestBlockchain(t *testing.T) {
|
||||||
t.Parallel()
|
|
||||||
|
|
||||||
bt := new(testMatcher)
|
bt := new(testMatcher)
|
||||||
// General state tests are 'exported' as blockchain tests, but we can run them natively.
|
// General state tests are 'exported' as blockchain tests, but we can run them natively.
|
||||||
// For speedier CI-runs, the line below can be uncommented, so those are skipped.
|
// For speedier CI-runs, the line below can be uncommented, so those are skipped.
|
||||||
|
|
@ -49,26 +48,39 @@ func TestBlockchain(t *testing.T) {
|
||||||
// using 4.6 TGas
|
// using 4.6 TGas
|
||||||
bt.skipLoad(`.*randomStatetest94.json.*`)
|
bt.skipLoad(`.*randomStatetest94.json.*`)
|
||||||
|
|
||||||
for _, dir := range []string{
|
bt.walk(t, blockTestDir, func(t *testing.T, name string, test *BlockTest) {
|
||||||
blockTestDir,
|
execBlockTest(t, bt, test)
|
||||||
executionSpecDir,
|
})
|
||||||
} {
|
|
||||||
bt.walk(t, dir, func(t *testing.T, name string, test *BlockTest) {
|
|
||||||
if err := bt.checkFailure(t, test.Run(false, rawdb.HashScheme, nil)); err != nil {
|
|
||||||
t.Errorf("test in hash mode without snapshotter failed: %v", err)
|
|
||||||
}
|
|
||||||
if err := bt.checkFailure(t, test.Run(true, rawdb.HashScheme, nil)); err != nil {
|
|
||||||
t.Errorf("test in hash mode with snapshotter failed: %v", err)
|
|
||||||
}
|
|
||||||
if err := bt.checkFailure(t, test.Run(false, rawdb.PathScheme, nil)); err != nil {
|
|
||||||
t.Errorf("test in path mode without snapshotter failed: %v", err)
|
|
||||||
}
|
|
||||||
if err := bt.checkFailure(t, test.Run(true, rawdb.PathScheme, nil)); err != nil {
|
|
||||||
t.Errorf("test in path mode with snapshotter failed: %v", err)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// There is also a LegacyTests folder, containing blockchain tests generated
|
// There is also a LegacyTests folder, containing blockchain tests generated
|
||||||
// prior to Istanbul. However, they are all derived from GeneralStateTests,
|
// prior to Istanbul. However, they are all derived from GeneralStateTests,
|
||||||
// which run natively, so there's no reason to run them here.
|
// which run natively, so there's no reason to run them here.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestExecutionSpec runs the test fixtures from execution-spec-tests.
|
||||||
|
func TestExecutionSpec(t *testing.T) {
|
||||||
|
if !common.FileExist(executionSpecDir) {
|
||||||
|
t.Skipf("directory %s does not exist", executionSpecDir)
|
||||||
|
}
|
||||||
|
bt := new(testMatcher)
|
||||||
|
|
||||||
|
// skip tests here if needed
|
||||||
|
|
||||||
|
bt.walk(t, executionSpecDir, func(t *testing.T, name string, test *BlockTest) {
|
||||||
|
execBlockTest(t, bt, test)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func execBlockTest(t *testing.T, bt *testMatcher, test *BlockTest) {
|
||||||
|
if err := bt.checkFailure(t, test.Run(false, rawdb.HashScheme, nil)); err != nil {
|
||||||
|
t.Errorf("test in hash mode without snapshotter failed: %v", err)
|
||||||
|
}
|
||||||
|
if err := bt.checkFailure(t, test.Run(true, rawdb.HashScheme, nil)); err != nil {
|
||||||
|
t.Errorf("test in hash mode with snapshotter failed: %v", err)
|
||||||
|
}
|
||||||
|
if err := bt.checkFailure(t, test.Run(false, rawdb.PathScheme, nil)); err != nil {
|
||||||
|
t.Errorf("test in path mode without snapshotter failed: %v", err)
|
||||||
|
}
|
||||||
|
if err := bt.checkFailure(t, test.Run(true, rawdb.PathScheme, nil)); err != nil {
|
||||||
|
t.Errorf("test in path mode with snapshotter failed: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue