Run TestContextFormFileFailed17 test if current go version is go1.17 or go1.18

This commit is contained in:
mstmdev 2022-08-17 14:02:30 +08:00
parent a2a2dfd172
commit b55c968730

View File

@ -9,8 +9,11 @@ package gin
import ( import (
"bytes" "bytes"
"mime/multipart"
"net/http" "net/http"
"net/http/httptest" "net/http/httptest"
"runtime"
"strings"
"testing" "testing"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
@ -26,6 +29,24 @@ func (i interceptedWriter) WriteHeader(code int) {
i.ResponseWriter.WriteHeader(code) i.ResponseWriter.WriteHeader(code)
} }
func TestContextFormFileFailed17(t *testing.T) {
if !isGo117OrGo118() {
return
}
buf := new(bytes.Buffer)
mw := multipart.NewWriter(buf)
mw.Close()
c, _ := CreateTestContext(httptest.NewRecorder())
c.Request, _ = http.NewRequest("POST", "/", nil)
c.Request.Header.Set("Content-Type", mw.FormDataContentType())
c.engine.MaxMultipartMemory = 8 << 20
assert.Panics(t, func() {
f, err := c.FormFile("file")
assert.Error(t, err)
assert.Nil(t, f)
})
}
func TestInterceptedHeader(t *testing.T) { func TestInterceptedHeader(t *testing.T) {
w := httptest.NewRecorder() w := httptest.NewRecorder()
c, r := CreateTestContext(w) c, r := CreateTestContext(w)
@ -54,3 +75,15 @@ func TestInterceptedHeader(t *testing.T) {
assert.Equal(t, "", w.Result().Header.Get("X-Test")) assert.Equal(t, "", w.Result().Header.Get("X-Test"))
assert.Equal(t, "present", w.Result().Header.Get("X-Test-2")) assert.Equal(t, "present", w.Result().Header.Get("X-Test-2"))
} }
func isGo117OrGo118() bool {
version := strings.Split(runtime.Version()[2:], ".")
if len(version) >= 2 {
x := version[0]
y := version[1]
if x == "1" && (y == "17" || y == "18") {
return true
}
}
return false
}