fix #1467: failed to parse parameters with plugin functions

This commit is contained in:
lilong.129
2023-04-19 15:51:46 +08:00
parent f567f70045
commit 6ca9c5236b
5 changed files with 24 additions and 16 deletions

View File

@@ -1,6 +1,6 @@
# Release History
## v4.3.3 (2023-04-18)
## v4.3.3 (2023-04-19)
**go version**
@@ -18,6 +18,7 @@
- fix: screencap compatibility for shell v1 and v2 protocol
- fix: display parsed url in html report
- fix: fast fail not closing the websocket connection
- fix #1467: failed to parse parameters with plugin functions
- fix #1549: avoid duplicate creating plugins
## v4.3.2 (2022-12-26)

View File

@@ -1 +1 @@
v4.3.3.2304182207
v4.3.3

View File

@@ -38,8 +38,8 @@ type iteratorStrategy struct {
PickOrder iteratorPickOrder `json:"pick_order,omitempty" yaml:"pick_order,omitempty"`
}
func initParametersIterator(cfg *TConfig) (*ParametersIterator, error) {
parameters, err := loadParameters(cfg.Parameters, cfg.Variables)
func (p *Parser) initParametersIterator(cfg *TConfig) (*ParametersIterator, error) {
parameters, err := p.loadParameters(cfg.Parameters, cfg.Variables)
if err != nil {
return nil, err
}
@@ -236,7 +236,7 @@ configParameters = {
]
}
*/
func loadParameters(configParameters map[string]interface{}, variablesMapping map[string]interface{}) (
func (p *Parser) loadParameters(configParameters map[string]interface{}, variablesMapping map[string]interface{}) (
map[string]Parameters, error) {
if len(configParameters) == 0 {
@@ -263,7 +263,7 @@ func loadParameters(configParameters map[string]interface{}, variablesMapping ma
// => [["test1", "111111"], ["test2", "222222"]]
// e.g. "app_version": "${gen_app_version()}"
// => ["1.0.0", "1.0.1"]
parsedParameterContent, err := newParser().ParseString(rawValue.String(), variablesMapping)
parsedParameterContent, err := p.ParseString(rawValue.String(), variablesMapping)
if err != nil {
log.Error().Err(err).
Str("parametersRawContent", rawValue.String()).

View File

@@ -74,8 +74,9 @@ func TestLoadParameters(t *testing.T) {
variablesMapping := map[string]interface{}{
"file": "account.csv",
}
parser := newParser()
for _, data := range testData {
value, err := loadParameters(data.configParameters, variablesMapping)
value, err := parser.loadParameters(data.configParameters, variablesMapping)
if !assert.Nil(t, err) {
t.Fatal()
}
@@ -92,21 +93,25 @@ func TestLoadParametersError(t *testing.T) {
{
map[string]interface{}{
"username_password": fmt.Sprintf("${parameterize(%s/account.csv)}", hrpExamplesDir),
"user_agent": []interface{}{"iOS/10.1", "iOS/10.2"}},
"user_agent": []interface{}{"iOS/10.1", "iOS/10.2"},
},
},
{
map[string]interface{}{
"username-password": fmt.Sprintf("${parameterize(%s/account.csv)}", hrpExamplesDir),
"user-agent": []interface{}{"iOS/10.1", "iOS/10.2"}},
"user-agent": []interface{}{"iOS/10.1", "iOS/10.2"},
},
},
{
map[string]interface{}{
"username-password": fmt.Sprintf("${param(%s/account.csv)}", hrpExamplesDir),
"user_agent": []interface{}{"iOS/10.1", "iOS/10.2"}},
"user_agent": []interface{}{"iOS/10.1", "iOS/10.2"},
},
},
}
parser := newParser()
for _, data := range testData {
_, err := loadParameters(data.configParameters, map[string]interface{}{})
_, err := parser.loadParameters(data.configParameters, map[string]interface{}{})
if !assert.Error(t, err) {
t.Fatal()
}
@@ -240,8 +245,9 @@ func TestInitParametersIteratorCount(t *testing.T) {
1,
},
}
parser := newParser()
for _, data := range testData {
iterator, err := initParametersIterator(data.cfg)
iterator, err := parser.initParametersIterator(data.cfg)
if !assert.Nil(t, err) {
t.Fatal()
}
@@ -288,8 +294,9 @@ func TestInitParametersIteratorUnlimitedCount(t *testing.T) {
},
},
}
parser := newParser()
for _, data := range testData {
iterator, err := initParametersIterator(data.cfg)
iterator, err := parser.initParametersIterator(data.cfg)
if !assert.Nil(t, err) {
t.Fatal()
}
@@ -370,8 +377,9 @@ func TestInitParametersIteratorContent(t *testing.T) {
map[string]interface{}{},
},
}
parser := newParser()
for _, data := range testData {
iterator, err := initParametersIterator(data.cfg)
iterator, err := parser.initParametersIterator(data.cfg)
if !assert.Nil(t, err) {
t.Fatal()
}

View File

@@ -386,7 +386,7 @@ func (r *CaseRunner) parseConfig() error {
r.parsedConfig.WebSocketSetting.checkWebSocket()
// parse testcase config parameters
parametersIterator, err := initParametersIterator(r.parsedConfig)
parametersIterator, err := r.parser.initParametersIterator(r.parsedConfig)
if err != nil {
log.Error().Err(err).
Interface("parameters", r.parsedConfig.Parameters).
@@ -629,7 +629,6 @@ func (r *SessionRunner) GetSummary() (*TestCaseSummary, error) {
return caseSummary, nil
}
// updateSummary updates summary of StepResult.
func (r *SessionRunner) updateSummary(stepResult *StepResult) {
switch stepResult.StepType {