111 lines
2.3 KiB
Go
111 lines
2.3 KiB
Go
/*
|
|
* Copyright 2022 CloudWeGo Authors
|
|
*
|
|
* 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 thrift
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"testing"
|
|
|
|
"github.com/cloudwego/hertz/cmd/hz/generator"
|
|
"github.com/cloudwego/hertz/cmd/hz/meta"
|
|
"github.com/cloudwego/thriftgo/plugin"
|
|
)
|
|
|
|
func TestRun(t *testing.T) {
|
|
data, err := ioutil.ReadFile("../testdata/request_thrift.out")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
req, err := plugin.UnmarshalRequest(data)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
plu := new(Plugin)
|
|
plu.setLogger()
|
|
|
|
plu.req = req
|
|
|
|
_, err = plu.parseArgs()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
options := CheckTagOption(plu.args)
|
|
|
|
pkgInfo, err := plu.getPackageInfo()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
args := plu.args
|
|
customPackageTemplate := args.CustomizePackage
|
|
pkg, err := args.GetGoPackage()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
handlerDir, err := args.GetHandlerDir()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
routerDir, err := args.GetRouterDir()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
modelDir, err := args.GetModelDir()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
clientDir, err := args.GetClientDir()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
sg := generator.HttpPackageGenerator{
|
|
ConfigPath: customPackageTemplate,
|
|
HandlerDir: handlerDir,
|
|
RouterDir: routerDir,
|
|
ModelDir: modelDir,
|
|
ClientDir: clientDir,
|
|
TemplateGenerator: generator.TemplateGenerator{
|
|
OutputDir: args.OutDir,
|
|
},
|
|
ProjPackage: pkg,
|
|
Options: options,
|
|
}
|
|
if args.ModelBackend != "" {
|
|
sg.Backend = meta.Backend(args.ModelBackend)
|
|
}
|
|
|
|
err = sg.Generate(pkgInfo)
|
|
if err != nil {
|
|
t.Fatalf("generate package failed: %v", err)
|
|
}
|
|
files, err := sg.GetFormatAndExcludedFiles()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
res, err := plu.GetResponse(files, sg.OutputDir)
|
|
if err != nil {
|
|
return
|
|
}
|
|
plu.response(res)
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|