mirror of
https://github.com/httprunner/httprunner.git
synced 2026-07-12 16:01:27 +08:00
feat: add status code for mobile UI
This commit is contained in:
@@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user