Add plugin hook tester

This commit is contained in:
Austin Roberts 2021-08-25 14:00:27 -05:00
parent d2df0b4c5f
commit 40377543bf
2 changed files with 41 additions and 0 deletions

View File

@ -0,0 +1,22 @@
package core
import (
"testing"
"github.com/ethereum/go-ethereum/plugins"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/common"
)
func TestReorgLongHeadersHook(t *testing.T) {
invoked := false
done := plugins.HookTester("NewHead", func(b *types.Block, h common.Hash, logs []*types.Log) {
// invoked = true
if b == nil { t.Errorf("Expected block to be non-nil") }
if h == (common.Hash{}) { t.Errorf("Expected hash to be non-empty") }
if len(logs) > 0 { t.Errorf("Expected some logs") }
})
defer done()
testReorgLong(t, true)
if !invoked { t.Errorf("Expected plugin invocation")}
}

19
plugins/hooktester.go Normal file
View File

@ -0,0 +1,19 @@
package plugins
// type PluginLoader struct{
// Plugins []*plugin.Plugin
// Subcommands map[string]Subcommand
// Flags []*flag.FlagSet
// LookupCache map[string][]interface{}
// }
func HookTester(name string, fn interface{}) func() {
oldDefault := DefaultPluginLoader
DefaultPluginLoader = &PluginLoader{
LookupCache: map[string][]interface{}{
name: []interface{}{fn},
},
}
return func() { DefaultPluginLoader = oldDefault }
}