From b09b9f55fc774297d5254e7507583601a33076ea Mon Sep 17 00:00:00 2001 From: tintinweb Date: Fri, 31 Jan 2020 15:50:07 +0100 Subject: [PATCH] add regression tests for #20611 --- eth/tracers/tracer_test.go | 40 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/eth/tracers/tracer_test.go b/eth/tracers/tracer_test.go index a45a121159..4f1b982bf8 100644 --- a/eth/tracers/tracer_test.go +++ b/eth/tracers/tracer_test.go @@ -63,6 +63,46 @@ func runTrace(tracer *Tracer) (json.RawMessage, error) { return tracer.GetResult() } +func TestRegressionPanicSlice(t *testing.T) { + tracer, err := New("{depths: [], step: function(log) { this.depths.push(log.memory.slice(-1,-2)); }, fault: function() {}, result: function() { return this.depths; }}") + if err != nil { + t.Fatal(err) + } + + ret, err := runTrace(tracer) + if err != nil { + t.Fatal(err) + } + t.Logf("Got result %s", string(ret)) +} + +func TestRegressionPanicPeek(t *testing.T) { + tracer, err := New("{depths: [], step: function(log) { this.depths.push(log.stack.peek(-1)); }, fault: function() {}, result: function() { return this.depths; }}") + if err != nil { + t.Fatal(err) + } + + ret, err := runTrace(tracer) + if err != nil { + t.Fatal(err) + } + t.Logf("Expected return value to be [0,1,2], got %s", string(ret)) +} + + +func TestRegressionPanicGetUint(t *testing.T) { + tracer, err := New("{ depths: [], step: function(log, db) { this.depths.push(log.memory.getUint(-64));}, fault: function() {}, result: function() { return this.depths; }}") + if err != nil { + t.Fatal(err) + } + + ret, err := runTrace(tracer) + if err != nil { + t.Fatal(err) + } + t.Logf("Expected return value to be [0,1,2], got %s", string(ret)) +} + func TestTracing(t *testing.T) { tracer, err := New("{count: 0, step: function() { this.count += 1; }, fault: function() {}, result: function() { return this.count; }}") if err != nil {