mirror of
https://github.com/gin-gonic/gin.git
synced 2025-10-22 01:12:16 +08:00
Merge ca5e7090c7d2ed03ec75c3f240c39de59788838d into 8ee9d959a0bcc132fae25ce61881c7effbe5c2f5
This commit is contained in:
commit
6639eff344
@ -79,7 +79,6 @@ func (c *Context) reset() {
|
||||
// This has to be used when the context has to be passed to a goroutine.
|
||||
func (c *Context) Copy() *Context {
|
||||
var cp = *c
|
||||
cp.writermem.ResponseWriter = nil
|
||||
cp.Writer = &cp.writermem
|
||||
cp.index = abortIndex
|
||||
cp.handlers = nil
|
||||
|
@ -324,7 +324,6 @@ func TestContextCopy(t *testing.T) {
|
||||
|
||||
cp := c.Copy()
|
||||
assert.Nil(t, cp.handlers)
|
||||
assert.Nil(t, cp.writermem.ResponseWriter)
|
||||
assert.Equal(t, &cp.writermem, cp.Writer.(*responseWriter))
|
||||
assert.Equal(t, cp.Request, c.Request)
|
||||
assert.Equal(t, cp.index, abortIndex)
|
||||
@ -1821,3 +1820,29 @@ func TestContextResetInHandler(t *testing.T) {
|
||||
c.Next()
|
||||
})
|
||||
}
|
||||
|
||||
func TestContextStreamToCopyOfContext(t *testing.T) {
|
||||
w := CreateTestResponseRecorder()
|
||||
c, _ := CreateTestContext(w)
|
||||
|
||||
h := func(c *Context) {
|
||||
nc := c.Copy()
|
||||
nc.Stream(func(w io.Writer) bool {
|
||||
w.Write([]byte("1"))
|
||||
return false
|
||||
})
|
||||
c.String(http.StatusOK, "%s", "2")
|
||||
w.closeClient()
|
||||
|
||||
nc.Stream(func(w io.Writer) bool {
|
||||
w.Write([]byte("3"))
|
||||
return false
|
||||
})
|
||||
}
|
||||
|
||||
assert.NotPanics(t, func() {
|
||||
h(c)
|
||||
})
|
||||
|
||||
assert.Equal(t, "12", w.Body.String())
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user