route support no request and response (#178)
* add more test and support no request and response * fix slash when run on windows * optimize test
This commit is contained in:
@@ -185,6 +185,25 @@ service A-api {
|
|||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
const apiRouteTest = `
|
||||||
|
type Request struct {
|
||||||
|
Name string ` + "`" + `path:"name,options=you|me"` + "`" + `
|
||||||
|
}
|
||||||
|
type Response struct {
|
||||||
|
Message string ` + "`" + `json:"message"` + "`" + `
|
||||||
|
}
|
||||||
|
service A-api {
|
||||||
|
@handler NormalHandler
|
||||||
|
get /greet/from/:name(Request) returns (Response)
|
||||||
|
@handler NoResponseHandler
|
||||||
|
get /greet/from/:sex(Request)
|
||||||
|
@handler NoRequestHandler
|
||||||
|
get /greet/from/request returns (Response)
|
||||||
|
@handler NoRequestNoResponseHandler
|
||||||
|
get /greet/from
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
func TestParser(t *testing.T) {
|
func TestParser(t *testing.T) {
|
||||||
filename := "greet.api"
|
filename := "greet.api"
|
||||||
err := ioutil.WriteFile(filename, []byte(testApiTemplate), os.ModePerm)
|
err := ioutil.WriteFile(filename, []byte(testApiTemplate), os.ModePerm)
|
||||||
@@ -333,6 +352,21 @@ func TestApiHasNoRequestBody(t *testing.T) {
|
|||||||
validate(t, filename)
|
validate(t, filename)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestApiRoutes(t *testing.T) {
|
||||||
|
filename := "greet.api"
|
||||||
|
err := ioutil.WriteFile(filename, []byte(apiRouteTest), os.ModePerm)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
defer os.Remove(filename)
|
||||||
|
|
||||||
|
parser, err := parser.NewParser(filename)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
|
||||||
|
_, err = parser.Parse()
|
||||||
|
assert.Nil(t, err)
|
||||||
|
|
||||||
|
validate(t, filename)
|
||||||
|
}
|
||||||
|
|
||||||
func validate(t *testing.T, api string) {
|
func validate(t *testing.T, api string) {
|
||||||
dir := "_go"
|
dir := "_go"
|
||||||
err := DoGenProject(api, dir, true)
|
err := DoGenProject(api, dir, true)
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ func getParentPackage(dir string) (string, error) {
|
|||||||
}
|
}
|
||||||
parent := filepath.Clean(goctlutil.JoinPackages(p.GoMod.Module, absPath[len(goModePath):]))
|
parent := filepath.Clean(goctlutil.JoinPackages(p.GoMod.Module, absPath[len(goModePath):]))
|
||||||
parent = strings.ReplaceAll(parent, "\\", "/")
|
parent = strings.ReplaceAll(parent, "\\", "/")
|
||||||
|
parent = strings.ReplaceAll(parent, `\`, "/")
|
||||||
return parent, nil
|
return parent, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -70,6 +70,12 @@ func (p *serviceEntityParser) parseLine(line string, api *spec.ApiSpec, annos []
|
|||||||
ch, _, err := reader.ReadRune()
|
ch, _, err := reader.ReadRune()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == io.EOF {
|
if err == io.EOF {
|
||||||
|
if builder.Len() > 0 {
|
||||||
|
token := strings.TrimSpace(builder.String())
|
||||||
|
if len(token) > 0 && token != returnsTag {
|
||||||
|
fields = append(fields, token)
|
||||||
|
}
|
||||||
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ func Prepare(projectDir string, checkGrpcEnv bool) (*Project, error) {
|
|||||||
return &Project{
|
return &Project{
|
||||||
Name: name,
|
Name: name,
|
||||||
Path: path,
|
Path: path,
|
||||||
Package: pkg,
|
Package: strings.ReplaceAll(pkg, `\`, "/"),
|
||||||
IsInGoEnv: isInGoEnv,
|
IsInGoEnv: isInGoEnv,
|
||||||
GoMod: GoMod{
|
GoMod: GoMod{
|
||||||
Module: module,
|
Module: module,
|
||||||
|
|||||||
Reference in New Issue
Block a user