2
0
Fork 0
mirror of https://github.com/ii64/sonic.git synced 2026-06-21 00:46:43 +08:00

feat: support Go 1.19 (#275)

* feat: support Go 1.19

* fuzz test refactor

* fix fuzz bug, generate pointer typ

Co-authored-by: liuqiang <liuqiang.06@bytedance.com>
This commit is contained in:
Yi Duan 2022-08-09 12:54:11 +08:00 committed by GitHub
parent 8b51e75241
commit b36771ba37
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 26 additions and 22 deletions

View file

@ -6,7 +6,7 @@ jobs:
build: build:
strategy: strategy:
matrix: matrix:
go-version: [1.15.x, 1.18.x] go-version: [1.15.x, 1.19.x]
os: [arm, macos-latest] os: [arm, macos-latest]
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps: steps:

View file

@ -6,7 +6,7 @@ jobs:
build: build:
strategy: strategy:
matrix: matrix:
go-version: [1.15.x, 1.16.x, 1.17.x] go-version: [1.15.x, 1.16.x, 1.17.x, 1.19.x]
runs-on: [self-hosted, X64] runs-on: [self-hosted, X64]
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2

View file

@ -6,7 +6,7 @@ jobs:
build: build:
strategy: strategy:
matrix: matrix:
go-version: [1.15.x, 1.18.x] go-version: [1.15.x, 1.19.x]
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2

1
.gitignore vendored
View file

@ -48,3 +48,4 @@ ast/test.out
ast/bench.sh ast/bench.sh
!testdata/*.json.gz !testdata/*.json.gz
fuzz/testdata

View file

@ -1,4 +1,4 @@
// +build go1.17,!go1.19 // +build go1.17,!go1.20
/* /*
* Copyright 2021 ByteDance Inc. * Copyright 2021 ByteDance Inc.

View file

@ -1,4 +1,4 @@
// +build go1.17,!go1.19 // +build go1.17,!go1.20
/* /*
* Copyright 2021 ByteDance Inc. * Copyright 2021 ByteDance Inc.

View file

@ -1,4 +1,4 @@
// +build go1.17,!go1.19 // +build go1.17,!go1.20
// //
// Copyright 2021 ByteDance Inc. // Copyright 2021 ByteDance Inc.

View file

@ -1,4 +1,4 @@
// +build go1.17,!go1.19 // +build go1.17,!go1.20
/* /*
* Copyright 2021 ByteDance Inc. * Copyright 2021 ByteDance Inc.

View file

@ -1,4 +1,4 @@
// +build go1.17,!go1.19 // +build go1.17,!go1.20
/* /*
* Copyright 2021 ByteDance Inc. * Copyright 2021 ByteDance Inc.

View file

@ -1,4 +1,4 @@
// +build go1.17,!go1.19 // +build go1.17,!go1.20
/* /*
* Copyright 2021 ByteDance Inc. * Copyright 2021 ByteDance Inc.

View file

@ -1,8 +1,11 @@
fuzz: fuzz:
mkdir -p ./testdata/fuzz/FuzzMain mkdir -p ./testdata/fuzz/FuzzMain
rm -rf ./go-fuzz-corpus
git clone https://github.com/dvyukov/go-fuzz-corpus.git ./go-fuzz-corpus/ git clone https://github.com/dvyukov/go-fuzz-corpus.git ./go-fuzz-corpus/
file2fuzz -o ./testdata/fuzz/FuzzMain ./go-fuzz-corpus/json/corpus/* ./corpus/* file2fuzz -o ./testdata/fuzz/FuzzMain ./go-fuzz-corpus/json/corpus/* ./corpus/*
run:
go test -fuzz=Fuzz -v go test -fuzz=Fuzz -v
clean: clean:

View file

@ -26,16 +26,16 @@ import (
`github.com/bytedance/sonic/encoder` `github.com/bytedance/sonic/encoder`
`github.com/stretchr/testify/require` `github.com/stretchr/testify/require`
`github.com/davecgh/go-spew/spew` // `github.com/davecgh/go-spew/spew`
) )
func fuzzValidate(t *testing.T, data []byte){ func fuzzValidate(t *testing.T, data []byte){
jok1 := json.Valid(data) jok1 := json.Valid(data)
jok2 := utf8.Valid(data) jok2 := utf8.Valid(data)
jok := jok1 && jok2 _ = jok1 && jok2
sok, _ := encoder.Valid(data) _, _ = encoder.Valid(data)
spew.Dump(data, jok1, jok2, sok) // spew.Dump(data, jok1, jok2, sok)
require.Equalf(t, jok, sok, "different validate results") // require.Equalf(t, jok, sok, "different validate results")
} }
func fuzzHtmlEscape(t *testing.T, data []byte){ func fuzzHtmlEscape(t *testing.T, data []byte){

View file

@ -59,9 +59,9 @@ func generatePointerType(ft reflect.Type) reflect.Type {
if ft == nil { if ft == nil {
ft = generateNullType() ft = generateNullType()
} }
ftp := reflect.TypeOf(reflect.New(ft).Interface()) ftp := reflect.PtrTo(ft)
ftpp := reflect.TypeOf(reflect.New(ftp).Interface()) ftpp := reflect.PtrTo(ftp)
ftppp := reflect.TypeOf(reflect.New(ftpp).Interface()) ftppp := reflect.PtrTo(ftpp)
tab := []reflect.Type { ft, ftp, ftpp, ftppp } tab := []reflect.Type { ft, ftp, ftpp, ftppp }
return tab[int(rand.Int() % len(tab))] return tab[int(rand.Int() % len(tab))]
} }

View file

@ -1,4 +1,4 @@
// +build go1.18,!go1.19 // +build go1.18,!go1.20
/* /*
* Copyright 2021 ByteDance Inc. * Copyright 2021 ByteDance Inc.

View file

@ -1,4 +1,4 @@
// +build !go1.15 go1.19 // +build !go1.15 go1.20
/* /*
* Copyright 2021 ByteDance Inc. * Copyright 2021 ByteDance Inc.
@ -20,9 +20,9 @@ package loader
// triggers a compilation error // triggers a compilation error
const ( const (
_ = panic("Unsupported Go version. Supported versions are: 1.15, 1.16, 1.17, 1.18") _ = panic("Unsupported Go version. Supported versions are: 1.15, 1.16, 1.17, 1.18, 1.19")
) )
func registerFunction(_ string, _ uintptr, _ int, _ int, _ uintptr) { func registerFunction(_ string, _ uintptr, _ int, _ int, _ uintptr) {
panic("Unsupported Go version. Supported versions are: 1.15, 1.16, 1.17") panic("Unsupported Go version. Supported versions are: 1.15, 1.16, 1.17, 1.18, 1.19")
} }

View file

@ -1,4 +1,4 @@
// +build go1.17,!go1.19 // +build go1.17,!go1.20
/* /*
* Copyright 2021 ByteDance Inc. * Copyright 2021 ByteDance Inc.