Skip to content

Commit

Permalink
feat(test): update
Browse files Browse the repository at this point in the history
  • Loading branch information
Just-maple committed Oct 27, 2023
1 parent fc9d275 commit 786346c
Show file tree
Hide file tree
Showing 4 changed files with 255 additions and 3 deletions.
3 changes: 2 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ go 1.16

require (
github.com/go-sql-driver/mysql v1.7.1
github.com/go-zing/gozz-core v0.0.0-20231026075749-afdf2947e370
github.com/go-zing/gozz-core v0.0.0-20231027055904-11aa038e44db
github.com/google/wire v0.5.0
github.com/spf13/cobra v1.7.0
)
11 changes: 9 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=
github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
github.com/go-zing/gozz-core v0.0.0-20231026075749-afdf2947e370 h1:oXHM8O+iMzCXzvPJwP7fKIRMCiCdiKxXJWohTXdsTTI=
github.com/go-zing/gozz-core v0.0.0-20231026075749-afdf2947e370/go.mod h1:SAulUrU1emuMCixZXSm7LD++3SN/tgG0ex51zaBbqdA=
github.com/go-zing/gozz-core v0.0.0-20231027055904-11aa038e44db h1:7m9iSFqV3Iq1kYIZFK8zI2JH9mohXvng/Ke7zKQ/9XM=
github.com/go-zing/gozz-core v0.0.0-20231027055904-11aa038e44db/go.mod h1:SAulUrU1emuMCixZXSm7LD++3SN/tgG0ex51zaBbqdA=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
github.com/google/wire v0.5.0 h1:I7ELFeVBr3yfPIcc8+MWvrjk+3VjbcSzoXm3JVa+jD8=
github.com/google/wire v0.5.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
Expand All @@ -20,6 +25,7 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY=
golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
Expand Down Expand Up @@ -55,6 +61,7 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
Expand Down
119 changes: 119 additions & 0 deletions internal/plugins/tag_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
/*
* Copyright (c) 2023 Maple Wu <justmaplewu@gmail.com>
* National Electronics and Computer Technology Center, Thailand
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package plugins

import (
"bytes"
"encoding/base64"
"io/ioutil"
"os"
"testing"

zcore "github.com/go-zing/gozz-core"
)

const testTagData = `package tag05
import (
"time"
)
//go:generate gozz run -p "tag" ./
// +zz:tag:json,bson:{{ snake .FieldName }}
type (
UserStruct struct {
Id string
Name string
Address string
CreatedAt time.Time
UpdatedAt time.Time
Friends []struct {
Id string
Name string
Address string
CreatedAt time.Time
UpdatedAt time.Time
}
}
UserMap map[string]struct {
Id string
Name string
Address string
CreatedAt time.Time
UpdatedAt time.Time
}
UserSlice []struct {
Id string
Name string
Address string
CreatedAt time.Time
UpdatedAt time.Time
}
UserInterface interface {
User() struct {
Id string
Name string
Address string
CreatedAt time.Time
UpdatedAt time.Time
}
}
UserFunc func(struct {
Id string
Name string
Address string
CreatedAt time.Time
UpdatedAt time.Time
})
)
`

var testTagRetData, _ = base64.StdEncoding.DecodeString(`cGFja2FnZSB0YWcwNQoKaW1wb3J0ICgKCSJ0aW1lIgopCgovL2dvOmdlbmVyYXRlIGdvenogcnVuIC1wICJ0YWciIC4vCgovLyAreno6dGFnOmpzb24sYnNvbjp7eyBzbmFrZSAuRmllbGROYW1lIH19CnR5cGUgKAoJVXNlclN0cnVjdCBzdHJ1Y3QgewoJCUlkICAgICAgICBzdHJpbmcgICAgYGJzb246ImlkIiBqc29uOiJpZCJgCgkJTmFtZSAgICAgIHN0cmluZyAgICBgYnNvbjoibmFtZSIganNvbjoibmFtZSJgCgkJQWRkcmVzcyAgIHN0cmluZyAgICBgYnNvbjoiYWRkcmVzcyIganNvbjoiYWRkcmVzcyJgCgkJQ3JlYXRlZEF0IHRpbWUuVGltZSBgYnNvbjoiY3JlYXRlZF9hdCIganNvbjoiY3JlYXRlZF9hdCJgCgkJVXBkYXRlZEF0IHRpbWUuVGltZSBgYnNvbjoidXBkYXRlZF9hdCIganNvbjoidXBkYXRlZF9hdCJgCgkJRnJpZW5kcyAgIFtdc3RydWN0IHsKCQkJSWQgICAgICAgIHN0cmluZyAgICBgYnNvbjoiaWQiIGpzb246ImlkImAKCQkJTmFtZSAgICAgIHN0cmluZyAgICBgYnNvbjoibmFtZSIganNvbjoibmFtZSJgCgkJCUFkZHJlc3MgICBzdHJpbmcgICAgYGJzb246ImFkZHJlc3MiIGpzb246ImFkZHJlc3MiYAoJCQlDcmVhdGVkQXQgdGltZS5UaW1lIGBic29uOiJjcmVhdGVkX2F0IiBqc29uOiJjcmVhdGVkX2F0ImAKCQkJVXBkYXRlZEF0IHRpbWUuVGltZSBgYnNvbjoidXBkYXRlZF9hdCIganNvbjoidXBkYXRlZF9hdCJgCgkJfSBgYnNvbjoiZnJpZW5kcyIganNvbjoiZnJpZW5kcyJgCgl9CgoJVXNlck1hcCBtYXBbc3RyaW5nXXN0cnVjdCB7CgkJSWQgICAgICAgIHN0cmluZyAgICBgYnNvbjoiaWQiIGpzb246ImlkImAKCQlOYW1lICAgICAgc3RyaW5nICAgIGBic29uOiJuYW1lIiBqc29uOiJuYW1lImAKCQlBZGRyZXNzICAgc3RyaW5nICAgIGBic29uOiJhZGRyZXNzIiBqc29uOiJhZGRyZXNzImAKCQlDcmVhdGVkQXQgdGltZS5UaW1lIGBic29uOiJjcmVhdGVkX2F0IiBqc29uOiJjcmVhdGVkX2F0ImAKCQlVcGRhdGVkQXQgdGltZS5UaW1lIGBic29uOiJ1cGRhdGVkX2F0IiBqc29uOiJ1cGRhdGVkX2F0ImAKCX0KCglVc2VyU2xpY2UgW11zdHJ1Y3QgewoJCUlkICAgICAgICBzdHJpbmcgICAgYGJzb246ImlkIiBqc29uOiJpZCJgCgkJTmFtZSAgICAgIHN0cmluZyAgICBgYnNvbjoibmFtZSIganNvbjoibmFtZSJgCgkJQWRkcmVzcyAgIHN0cmluZyAgICBgYnNvbjoiYWRkcmVzcyIganNvbjoiYWRkcmVzcyJgCgkJQ3JlYXRlZEF0IHRpbWUuVGltZSBgYnNvbjoiY3JlYXRlZF9hdCIganNvbjoiY3JlYXRlZF9hdCJgCgkJVXBkYXRlZEF0IHRpbWUuVGltZSBgYnNvbjoidXBkYXRlZF9hdCIganNvbjoidXBkYXRlZF9hdCJgCgl9CgoJVXNlckludGVyZmFjZSBpbnRlcmZhY2UgewoJCVVzZXIoKSBzdHJ1Y3QgewoJCQlJZCAgICAgICAgc3RyaW5nICAgIGBic29uOiJpZCIganNvbjoiaWQiYAoJCQlOYW1lICAgICAgc3RyaW5nICAgIGBic29uOiJuYW1lIiBqc29uOiJuYW1lImAKCQkJQWRkcmVzcyAgIHN0cmluZyAgICBgYnNvbjoiYWRkcmVzcyIganNvbjoiYWRkcmVzcyJgCgkJCUNyZWF0ZWRBdCB0aW1lLlRpbWUgYGJzb246ImNyZWF0ZWRfYXQiIGpzb246ImNyZWF0ZWRfYXQiYAoJCQlVcGRhdGVkQXQgdGltZS5UaW1lIGBic29uOiJ1cGRhdGVkX2F0IiBqc29uOiJ1cGRhdGVkX2F0ImAKCQl9Cgl9CgoJVXNlckZ1bmMgZnVuYyhzdHJ1Y3QgewoJCUlkICAgICAgICBzdHJpbmcgICAgYGJzb246ImlkIiBqc29uOiJpZCJgCgkJTmFtZSAgICAgIHN0cmluZyAgICBgYnNvbjoibmFtZSIganNvbjoibmFtZSJgCgkJQWRkcmVzcyAgIHN0cmluZyAgICBgYnNvbjoiYWRkcmVzcyIganNvbjoiYWRkcmVzcyJgCgkJQ3JlYXRlZEF0IHRpbWUuVGltZSBgYnNvbjoiY3JlYXRlZF9hdCIganNvbjoiY3JlYXRlZF9hdCJgCgkJVXBkYXRlZEF0IHRpbWUuVGltZSBgYnNvbjoidXBkYXRlZF9hdCIganNvbjoidXBkYXRlZF9hdCJgCgl9KQopCg==`)

func TestTag(t *testing.T) {
_ = os.MkdirAll("test", 0o775)
defer os.RemoveAll("test")

if err := os.WriteFile("test/types.go", []byte(testTagData), 0o664); err != nil {
t.Fatal(err)
}

decls, err := zcore.ParseFileOrDirectory("test/types.go", zcore.AnnotationPrefix)
if err != nil {
return
}

plugin := &Tag{}
if err = plugin.Run(decls.Parse(plugin, nil)); err != nil {
t.Fatal(err)
}

data, err := ioutil.ReadFile("test/types.go")
if err != nil {
t.Fatal(err)
}

if !bytes.Equal(data, testTagRetData) {
t.Fatal(err)
}
}
125 changes: 125 additions & 0 deletions internal/plugins/wire_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
/*
* Copyright (c) 2023 Maple Wu <justmaplewu@gmail.com>
* National Electronics and Computer Technology Center, Thailand
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package plugins

import (
"os"
"testing"

zcore "github.com/go-zing/gozz-core"
)

const testWireData = `
package x
import (
"bytes"
"database/sql"
"io"
"github.com/google/wire"
)
// provide value and interface value
// +zz:wire:bind=io.Writer:aop
// +zz:wire
var Buffer = &bytes.Buffer{}
// provide referenced type
// +zz:wire
type NullString nullString
type nullString sql.NullString
// use provider function to provide referenced type alias
// +zz:wire
type String = string
func ProvideString() String {
return ""
}
// provide value from implicit type
// +zz:wire
var Bool = false
// +zz:wire:inject=./
type Target struct {
Buffer *bytes.Buffer
Writer io.Writer
NullString NullString
Int int
Float Float
Bytes *Bytes
}
type Float interface{}
// +zz:wire:bind=Float
func InitFloat() float64 {
return 0
}
type Bytes []byte
// +zz:wire
func InitBytes() *Bytes {
return nil
}
// origin wire set
// +zz:wire
var Set = wire.NewSet(wire.Value(Int))
var Int = 0
// mock set injector
// +zz:wire:inject=./inner:set=mock
type MockString sql.NullString
// mock set string
// provide type from function
// +zz:wire:set=mock
func InitMockString() String {
return "mock"
}
// mock set struct type provide fields
// +zz:wire:set=mock:field=*
type MockConfig struct{ Bool bool }
// mock set value
// +zz:wire:set=mock
var MockConfigValue = &MockConfig{Bool: true}
`

func TestWire(t *testing.T) {
_ = os.MkdirAll("test", 0o775)
defer os.RemoveAll("test")
if err := os.WriteFile("test/types.go", []byte(testWireData), 0o664); err != nil {
t.Fatal(err)
}
decls, err := zcore.ParseFileOrDirectory("test/types.go", zcore.AnnotationPrefix)
if err != nil {
return
}
plugin := Wire{}
if err = plugin.Run(decls.Parse(plugin, nil)); err != nil {
t.Fatal(err)
}
}

0 comments on commit 786346c

Please sign in to comment.