2017-10-10 2 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

アサートはパニックを引き起こし、パニックフィルタはエラーの原因となったゴーコードのソースファイルを見つけることができないため失敗しています。デプロイメントからソースファイルを取り除いた場合、これは(本当にすべきではありませんが)スタックにエラーがあると言うファイルをロードしようとしているコードを見ている可能性があります。

0

これはレヴェルのバグによるものである - https://github.com/revel/revel/issues/1287

問題は、サーバーが/goに等しく設定し、間違って楽しむGOPATHありGOPATHためであるとスタックトレース(/usr/local/go/src/runtime/debug/stack.go:24)の最初のフレームを識別することですそれは/go/srcを含んでいます。パス上の任意の場所に/goが含まれていないサーバー上の別のGOPATHを手動で設定または維持することで、この問題を回避できます。これはまた、公式のドッカーコンテナーの問題でもあります。https://hub.docker.com/_/golang/

関連する問題