When will the `function is too short to patch` error be reported?
Ericwww opened this issue · comments
Describe the bug
We read the README and fount if inline or compilation optimization is not disabled, an error (maybe panic) "function is too short to patch" will be reported.
We want to use this feature in our CI/CD process to remind developers to turn off inline and compilation optimizations.
To Reproduce
Steps to reproduce the behavior:
- Prepare a package called
test-mockey
- write mockey.go as below
package test_mockey
func NeedMock() string {return "origin"}
- wirte mockey_test.go as below
package test_mockey
import (
"github.com/agiledragon/gomonkey"
"testing"
"github.com/bytedance/mockey"
)
func TestMockey(t *testing.T) {
mocker := mockey.Mock(NeedMock).Return("mocked by mockey").Build()
defer mocker.UnPatch()
println(NeedMock())
t.Log("aaaa")
}
func TestGoMonkey(t *testing.T) {
patches := gomonkey.ApplyFunc(NeedMock, func() string {
return "mocked by gomonkey"
})
defer patches.Reset()
println(NeedMock())
t.Log("aaaa")
}
Expected behavior
Throw "function is too short to patch" error or panic
Screenshots
GOROOT=C:\Program Files\Go #gosetup
GOPATH=C:\Users\*******\go #gosetup
"C:\Program Files\Go\bin\go.exe" test -c -o C:\Users\*******\AppData\Local\Temp\GoLand\___2go_test_awesomeProject1_test_mockey.test.exe awesomeProject1/test-mockey #gosetup
"C:\Program Files\Go\bin\go.exe" tool test2json -t C:\Users\*******\AppData\Local\Temp\GoLand\___2go_test_awesomeProject1_test_mockey.test.exe -test.v -test.paniconexit0 #gosetup
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS X0 [RSI] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RSI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> MOVUPS [RDI] X0 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> ADD RDI 0x10 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffcopy> RET <nil> <nil> <nil> <nil> %!v(MISSING)
[MOCKEY] init: duffcopy(2450720,2451616)
[MOCKEY] init: <duffzero> MOVUPS [RDI] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x10] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x20] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x30] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> LEA RDI [RDI+0x40] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x10] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x20] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x30] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> LEA RDI [RDI+0x40] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x10] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x20] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x30] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> LEA RDI [RDI+0x40] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x10] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x20] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x30] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> LEA RDI [RDI+0x40] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x10] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x20] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x30] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> LEA RDI [RDI+0x40] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x10] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x20] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x30] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> LEA RDI [RDI+0x40] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x10] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x20] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x30] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> LEA RDI [RDI+0x40] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x10] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x20] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x30] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> LEA RDI [RDI+0x40] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x10] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x20] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x30] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> LEA RDI [RDI+0x40] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x10] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x20] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x30] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> LEA RDI [RDI+0x40] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x10] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x20] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x30] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> LEA RDI [RDI+0x40] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x10] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x20] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x30] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> LEA RDI [RDI+0x40] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x10] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x20] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x30] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> LEA RDI [RDI+0x40] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x10] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x20] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x30] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> LEA RDI [RDI+0x40] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x10] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x20] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x30] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> LEA RDI [RDI+0x40] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x10] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x20] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> MOVUPS [RDI+0x30] X15 <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> LEA RDI [RDI+0x40] <nil> <nil> %!v(MISSING)
[MOCKEY] init: <duffzero> RET <nil> <nil> <nil> <nil> %!v(MISSING)
[MOCKEY] init: duffzero(2450336,2450704)
=== RUN TestMockey
[MOCKEY] Disassemble: inst: LEA RAX, [RIP+0x3677e]
[MOCKEY] Disassemble: inst: MOV EBX, 0x6
[MOCKEY] PatchValue: hook code len(12), cuttingIdx(12)
[MOCKEY] 3190848 added
origin
mockey_test.go:14: aaaa
[MOCKEY] 3190848 removed
--- PASS: TestMockey (0.00s)
=== RUN TestGoMonkey
origin
mockey_test.go:23: aaaa
--- PASS: TestGoMonkey (0.00s)
PASS
Process finished with the exit code 0
Mockey version:
v1.2.6
Environment:
Additional context
Will be provided if asked
简单来说,我们想利用function is too short to patch
这个error或者panic来完善开发流程,达到提醒开发者禁用内联和编译优化的目的。但是在实际测试使用的时候,发现在不禁用内联和编译优化的情况下,Mock确实没有生效,但是没有相关error或者panic产生来提醒开发者
简单来说,我们想利用
function is too short to patch
这个error或者panic来完善开发流程,达到提醒开发者禁用内联和编译优化的目的。但是在实际测试使用的时候,发现在不禁用内联和编译优化的情况下,Mock确实没有生效,但是没有相关error或者panic产生来提醒开发者
不建议用function的长度判断是否开了內联优化,这个取决于编译器的行为
提供一个思路:可以通过分析一些简单函数调用的机器码来判断(但并不是很推荐这么做),比如这样:
func fn() {
}
func fn2() {
fn()
}
func TestGCFlagsNlArm64(t *testing.T) {
var asm []byte
header := (*reflect.SliceHeader)(unsafe.Pointer(&asm))
header.Data = reflect.ValueOf(fn2).Pointer()
header.Len = 1000
header.Cap = 1000
Nl := false
pos := 0
for pos < len(asm) {
inst, _ := arm64asm.Decode(asm[pos:])
if inst.Op == arm64asm.RET {
break
}
if inst.Op == arm64asm.BL {
Nl = true
break
}
pos += int(unsafe.Sizeof(inst.Enc))
}
fmt.Println(Nl)
}