feat: add status code for mobile UI

This commit is contained in:
debugtalk
2022-10-19 11:48:40 +08:00
parent a2f1f7ca0e
commit d8dc3c58c9
11 changed files with 106 additions and 43 deletions

View File

@@ -13,9 +13,11 @@ import (
"github.com/httprunner/funplugin"
"github.com/httprunner/funplugin/shared"
"github.com/maja42/goval"
"github.com/pkg/errors"
"github.com/rs/zerolog/log"
"github.com/httprunner/httprunner/v4/hrp/internal/builtin"
"github.com/httprunner/httprunner/v4/hrp/internal/code"
)
func newParser() *Parser {
@@ -183,18 +185,18 @@ func (p *Parser) ParseString(raw string, variablesMapping map[string]interface{}
argsStr := funcMatched[2]
arguments, err := parseFunctionArguments(argsStr)
if err != nil {
return raw, err
return raw, errors.Wrap(code.ParseStringError, err.Error())
}
parsedArgs, err := p.Parse(arguments, variablesMapping)
if err != nil {
return raw, err
return raw, errors.Wrap(code.ParseStringError, err.Error())
}
result, err := p.callFunc(funcName, parsedArgs.([]interface{})...)
if err != nil {
log.Error().Str("funcName", funcName).Interface("arguments", arguments).
Err(err).Msg("call function failed")
return raw, err
return raw, errors.Wrap(code.ParseStringError, err.Error())
}
log.Info().Str("funcName", funcName).Interface("arguments", arguments).
Interface("output", result).Msg("call function success")
@@ -226,7 +228,8 @@ func (p *Parser) ParseString(raw string, variablesMapping map[string]interface{}
}
varValue, ok := variablesMapping[varName]
if !ok {
return raw, fmt.Errorf("variable %s not found", varName)
return raw, errors.Wrap(code.ParseStringError,
fmt.Sprintf("variable %s not found", varName))
}
if fmt.Sprintf("${%s}", varName) == raw || fmt.Sprintf("$%s", varName) == raw {
@@ -428,7 +431,8 @@ func (p *Parser) ParseVariables(variables map[string]interface{}) (map[string]in
// variables = {"key": ["$key", 2]}
if _, ok := extractVarsSet[varName]; ok {
log.Error().Interface("variables", variables).Msg("[parseVariables] variable self reference error")
return variables, fmt.Errorf("variable self reference: %v", varName)
return variables, errors.Wrap(code.ParseVariablesError,
fmt.Sprintf("variable self reference: %v", varName))
}
// check if reference variable not in variables mapping
@@ -443,7 +447,8 @@ func (p *Parser) ParseVariables(variables map[string]interface{}) (map[string]in
}
if len(undefinedVars) > 0 {
log.Error().Interface("undefinedVars", undefinedVars).Msg("[parseVariables] variable not defined error")
return variables, fmt.Errorf("variable not defined: %v", undefinedVars)
return variables, errors.Wrap(code.ParseVariablesError,
fmt.Sprintf("variable not defined: %v", undefinedVars))
}
parsedValue, err := p.Parse(varValue, parsedVariables)
@@ -456,7 +461,7 @@ func (p *Parser) ParseVariables(variables map[string]interface{}) (map[string]in
// check if circular reference exists
if traverseRounds > len(variables) {
log.Error().Msg("[parseVariables] circular reference error, break infinite loop!")
return variables, fmt.Errorf("circular reference")
return variables, errors.Wrap(code.ParseVariablesError, "circular reference")
}
}