diff --git a/types/errors/stacktrace.go b/types/errors/stacktrace.go index f7079c56d..c1330204d 100644 --- a/types/errors/stacktrace.go +++ b/types/errors/stacktrace.go @@ -73,14 +73,25 @@ func writeSimpleFrame(s io.Writer, f errors.Frame) { if len(chunks) == 2 { file = chunks[1] } + // replace specific file versions in stack trace + file = replacePackageVersionStr(file) fmt.Fprintf(s, " [%s:%d]", file, line) } +func replacePackageVersionStr(err string) string { + err = strings.Replace(err, "sei-wasmd@v0.3.11", "sei-wasmd@v0.3.10", 1) + err = strings.Replace(err, "CosmWasm/wasmd@v0.27.0", "sei-protocol/sei-wasmd@v0.3.10", 1) + err = strings.Replace(err, "sei-cosmos@v0.3.67", "sei-cosmos@v0.3.66", 1) + err = strings.Replace(err, "sei-cosmos@v0.3.68", "sei-cosmos@v0.3.66", 1) + return err +} + // Format works like pkg/errors, with additions. // %s is just the error message // %+v is the full stack trace // %v appends a compressed [filename:line] where the error -// was created +// +// was created // // Inspired by https://github.com/pkg/errors/blob/v0.8.1/errors.go#L162-L176 func (e *wrappedError) Format(s fmt.State, verb rune) { diff --git a/types/errors/stacktrace_test.go b/types/errors/stacktrace_test.go index 06eb829f0..b903f6f42 100644 --- a/types/errors/stacktrace_test.go +++ b/types/errors/stacktrace_test.go @@ -60,3 +60,27 @@ func (s *errorsTestSuite) TestStackTrace() { s.Require().True(strings.Contains(tinyStack, thisTestSrc)) } } + +func (s *errorsTestSuite) TestReplaceWasmdVersionStr() { + input := "sei-wasmd@v0.3.11/some/path/file.go" + expected := "sei-wasmd@v0.3.10/some/path/file.go" + result := replacePackageVersionStr(input) + s.Require().Equal(expected, result) + + input = "CosmWasm/wasmd@v0.27.0/some/path/file.go" + expected = "sei-protocol/sei-wasmd@v0.3.10/some/path/file.go" + result = replacePackageVersionStr(input) + s.Require().Equal(expected, result) +} + +func (s *errorsTestSuite) TestReplaceSeiCosmosVersionStr() { + input := "sei-cosmos@v0.3.67/some/path/file.go" + expected := "sei-cosmos@v0.3.66/some/path/file.go" + result := replacePackageVersionStr(input) + s.Require().Equal(expected, result) + + input = "sei-cosmos@v0.3.68/some/path/file.go" + expected = "sei-cosmos@v0.3.66/some/path/file.go" + result = replacePackageVersionStr(input) + s.Require().Equal(expected, result) +}