github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/courier/swagger/gen/status_error_scanner_test.go (about) 1 package gen 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 8 "github.com/artisanhe/tools/codegen/loaderx" 9 ) 10 11 func TestStatusErrorScanner(t *testing.T) { 12 tt := assert.New(t) 13 14 pkgImportPath, program := loaderx.NewTestProgram(` 15 package main 16 17 import ( 18 "github.com/artisanhe/tools/courier/status_error" 19 "net/http" 20 ) 21 22 const ( 23 // 内部未明确定义的错误 24 UnknownError status_error.StatusErrorCode = http.StatusInternalServerError*1e6 + 1 + iota 25 // 内部用于接收参数时非法的结构 26 InvalidStructError 27 ) 28 29 // @httpError(500000003,ReadFailed,"Read 调用时发生错误","",false); 30 // doc 31 func Err2() error { 32 return UnknownError 33 } 34 35 func Err3() error { 36 return status_error.DemoErr() 37 } 38 39 func Err() (err error) { 40 if true { 41 err = Err3() 42 return 43 } 44 return Err2() 45 } 46 `) 47 48 scanner := NewStatusErrorScanner(program) 49 query := loaderx.NewQuery(program, pkgImportPath) 50 statusErrors := scanner.StatusErrorsInFunc(query.Func("Err")) 51 52 tt.Len(statusErrors, 3) 53 }