1
0
Fork 0
forked from forgejo/forgejo

Migrate to use jsoniter instead of encoding/json (#14841)

* Migrate to use jsoniter

* fix tests

* update gitea.com/go-chi/binding

Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: 6543 <6543@obermui.de>
This commit is contained in:
zeripath 2021-03-01 21:08:10 +00:00 committed by GitHub
parent 59fd641d1f
commit f0e15250b9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
77 changed files with 264 additions and 82 deletions

View file

@ -5,7 +5,6 @@
package integrations
import (
"encoding/json"
"fmt"
"net/http"
"testing"
@ -13,6 +12,7 @@ import (
"code.gitea.io/gitea/models"
api "code.gitea.io/gitea/modules/structs"
jsoniter "github.com/json-iterator/go"
"github.com/stretchr/testify/assert"
)
@ -190,6 +190,7 @@ func TestAPIEditUser(t *testing.T) {
resp := session.MakeRequest(t, req, http.StatusUnprocessableEntity)
errMap := make(map[string]interface{})
json := jsoniter.ConfigCompatibleWithStandardLibrary
json.Unmarshal(resp.Body.Bytes(), &errMap)
assert.EqualValues(t, "email is not allowed to be empty string", errMap["message"].(string))

View file

@ -6,7 +6,6 @@ package integrations
import (
"context"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
@ -18,6 +17,7 @@ import (
"code.gitea.io/gitea/modules/queue"
api "code.gitea.io/gitea/modules/structs"
jsoniter "github.com/json-iterator/go"
"github.com/stretchr/testify/assert"
)
@ -212,6 +212,8 @@ func doAPICreatePullRequest(ctx APITestContext, owner, repo, baseBranch, headBra
expected = ctx.ExpectedCode
}
resp := ctx.Session.MakeRequest(t, req, expected)
json := jsoniter.ConfigCompatibleWithStandardLibrary
decoder := json.NewDecoder(resp.Body)
pr := api.PullRequest{}
err := decoder.Decode(&pr)

View file

@ -5,7 +5,6 @@
package integrations
import (
"encoding/json"
"io/ioutil"
"net/http"
"net/http/httptest"
@ -18,6 +17,7 @@ import (
"code.gitea.io/gitea/routers/routes"
"gitea.com/go-chi/session"
jsoniter "github.com/json-iterator/go"
"github.com/stretchr/testify/assert"
)
@ -62,6 +62,8 @@ func TestSessionFileCreation(t *testing.T) {
}()
var config session.Options
json := jsoniter.ConfigCompatibleWithStandardLibrary
err := json.Unmarshal([]byte(oldSessionConfig), &config)
assert.NoError(t, err)

View file

@ -8,7 +8,6 @@ import (
"bytes"
"context"
"database/sql"
"encoding/json"
"fmt"
"io"
"net/http"
@ -36,6 +35,7 @@ import (
"code.gitea.io/gitea/routers/routes"
"github.com/PuerkitoBio/goquery"
jsoniter "github.com/json-iterator/go"
"github.com/stretchr/testify/assert"
)
@ -376,6 +376,8 @@ func NewRequestWithValues(t testing.TB, method, urlStr string, values map[string
func NewRequestWithJSON(t testing.TB, method, urlStr string, v interface{}) *http.Request {
t.Helper()
json := jsoniter.ConfigCompatibleWithStandardLibrary
jsonBytes, err := json.Marshal(v)
assert.NoError(t, err)
req := NewRequestWithBody(t, method, urlStr, bytes.NewBuffer(jsonBytes))
@ -453,6 +455,8 @@ func logUnexpectedResponse(t testing.TB, recorder *httptest.ResponseRecorder) {
func DecodeJSON(t testing.TB, resp *httptest.ResponseRecorder, v interface{}) {
t.Helper()
json := jsoniter.ConfigCompatibleWithStandardLibrary
decoder := json.NewDecoder(resp.Body)
assert.NoError(t, decoder.Decode(v))
}

View file

@ -6,12 +6,12 @@ package integrations
import (
"bytes"
"encoding/json"
"io/ioutil"
"testing"
"code.gitea.io/gitea/modules/setting"
jsoniter "github.com/json-iterator/go"
"github.com/stretchr/testify/assert"
)
@ -70,6 +70,8 @@ func TestAccessTokenExchange(t *testing.T) {
RefreshToken string `json:"refresh_token"`
}
parsed := new(response)
json := jsoniter.ConfigCompatibleWithStandardLibrary
assert.NoError(t, json.Unmarshal(resp.Body.Bytes(), parsed))
assert.True(t, len(parsed.AccessToken) > 10)
assert.True(t, len(parsed.RefreshToken) > 10)
@ -93,6 +95,8 @@ func TestAccessTokenExchangeWithoutPKCE(t *testing.T) {
RefreshToken string `json:"refresh_token"`
}
parsed := new(response)
json := jsoniter.ConfigCompatibleWithStandardLibrary
assert.NoError(t, json.Unmarshal(resp.Body.Bytes(), parsed))
assert.True(t, len(parsed.AccessToken) > 10)
assert.True(t, len(parsed.RefreshToken) > 10)
@ -181,6 +185,8 @@ func TestAccessTokenExchangeWithBasicAuth(t *testing.T) {
RefreshToken string `json:"refresh_token"`
}
parsed := new(response)
json := jsoniter.ConfigCompatibleWithStandardLibrary
assert.NoError(t, json.Unmarshal(resp.Body.Bytes(), parsed))
assert.True(t, len(parsed.AccessToken) > 10)
assert.True(t, len(parsed.RefreshToken) > 10)
@ -223,6 +229,8 @@ func TestRefreshTokenInvalidation(t *testing.T) {
RefreshToken string `json:"refresh_token"`
}
parsed := new(response)
json := jsoniter.ConfigCompatibleWithStandardLibrary
assert.NoError(t, json.Unmarshal(resp.Body.Bytes(), parsed))
// test without invalidation

View file

@ -5,7 +5,6 @@
package integrations
import (
"encoding/json"
"net/http"
"net/http/httptest"
"path"
@ -14,6 +13,7 @@ import (
"code.gitea.io/gitea/modules/setting"
api "code.gitea.io/gitea/modules/structs"
jsoniter "github.com/json-iterator/go"
"github.com/stretchr/testify/assert"
)
@ -82,6 +82,7 @@ func doTestRepoCommitWithStatus(t *testing.T, state string, classes ...string) {
}
func testRepoCommitsWithStatus(t *testing.T, resp *httptest.ResponseRecorder, state string) {
json := jsoniter.ConfigCompatibleWithStandardLibrary
decoder := json.NewDecoder(resp.Body)
statuses := []*api.CommitStatus{}
assert.NoError(t, decoder.Decode(&statuses))

View file

@ -6,7 +6,6 @@ package integrations
import (
"context"
"encoding/json"
"fmt"
"os"
"runtime"
@ -17,6 +16,7 @@ import (
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/queue"
jsoniter "github.com/json-iterator/go"
)
var (
@ -158,6 +158,7 @@ func NewTestLogger() log.LoggerProvider {
// Init inits connection writer with json config.
// json config only need key "level".
func (log *TestLogger) Init(config string) error {
json := jsoniter.ConfigCompatibleWithStandardLibrary
err := json.Unmarshal([]byte(config), log)
if err != nil {
return err