2017-10-10 173 views
2

我已经创建了Revel测试套件,我使用Assertf检查错误。Golang Revel Assertf导致恐慌

t.Assertf(err == nil, "error occurred: %v", err) 

它在我的Windows和Mac OSX中没有任何问题。但在我的远程服务器Ubuntu 16.04中,每当声明错误时,我都会收到类似这样的错误消息。

server.go:2753: http: panic serving [::1]:44626: open /go/src/runtime/debug/stack.go: no such file or directory 

goroutine 74 [running]: 
net/http.(*conn).serve.func1(0xc4204a7f40) 
    /usr/local/go/src/net/http/server.go:1721 +0xd0 
panic(0xa04ba0, 0xc4204c2f60) 
    /usr/local/go/src/runtime/panic.go:489 +0x2cf 
github.com/revel/revel.MustReadLines(0xc420198a4c, 0x1e, 0x1, 0xc4204d2a80, 0x3e) 
    /go/src/github.com/revel/revel/util.go:56 +0x168 
github.com/revel/revel.NewErrorFromPanic(0xa04ba0, 0xc4204c2f00, 0x0) 
    /go/src/github.com/revel/revel/errors.go:63 +0x25b 
github.com/revel/revel.handleInvocationPanic(0xc42024e0c0, 0xa04ba0, 0xc4204c2f00) 
    /go/src/github.com/revel/revel/panic.go:25 +0x4d 
github.com/revel/revel.PanicFilter.func1(0xc42024e0c0) 
    /go/src/github.com/revel/revel/panic.go:16 +0x5c 
panic(0xa04ba0, 0xc4204c2f00) 
    /usr/local/go/src/runtime/panic.go:489 +0x2cf 
github.com/revel/revel.InterceptorFilter.func1(0xc42024e0c0) 
    /go/src/github.com/revel/revel/intercept.go:97 +0x7d 
panic(0xa04ba0, 0xc4204c2f00) 
    /usr/local/go/src/runtime/panic.go:489 +0x2cf 
github.com/revel/revel.MustReadLines(0xc42018605a, 0x1e, 0x1, 0xc420278d10, 0xad) 
    /go/src/github.com/revel/revel/util.go:56 +0x168 
github.com/revel/revel.NewErrorFromPanic(0x9feea0, 0xc4204d8aa0, 0xc4204d8aa0) 
    /go/src/github.com/revel/revel/errors.go:63 +0x25b 
github.com/revel/modules/testrunner/app/controllers.TestRunner.Run.func1.1(0xaa9ba0, 0xc4204c2a80, 0x16, 0xc4204d284c, 0x15, 0xc4204d2862, 0x14, 0xc4203fac78) 
    /go/src/github.com/revel/modules/testrunner/app/controllers/testrunner.go:113 +0x70 
panic(0x9feea0, 0xc4204d8aa0) 
    /usr/local/go/src/runtime/panic.go:489 +0x2cf 
github.com/revel/revel/testing.(*TestSuite).Assertf(0xc4204c2a80, 0xc4203fa600, 0xac7700, 0x16, 0xc4203fa620, 0x1, 0x1) 
    /go/src/github.com/revel/revel/testing/testsuite.go:313 +0x87 
madvrstudio/bnkjigsaw/tests.(*ReceiptValidationTest).TestValidateAppStore(0xc4204c2a80) 
+0

https://github.com/revel/revel/issues/1266 –

回答

1

Assert会触发恐慌,并且panic过滤器失败,因为它无法找到导致错误的go代码的源文件。如果你已经从部署中删除了源文件,这可能会导致(恕我直言,它实际上不应该),但看着它正在试图加载堆栈说有错误的文件的代码。

0

这是由于一个错误的狂欢 - https://github.com/revel/revel/issues/1287

的问题是,你的服务器有GOPATH设置等于/go,陶醉错误地标识的堆栈跟踪(/usr/local/go/src/runtime/debug/stack.go:24)的第一帧作为GOPATH因为是它包含/go/src。您可以通过在任意位置的路径中手动设置/维护不包含/go的服务器上的其他GOPATH来解决此问题。这也是与官方码头集装箱的问题去找到在https://hub.docker.com/_/golang/