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  }