Skip to content

Commit

Permalink
[v051] parameters now work with interface{} values
Browse files Browse the repository at this point in the history
  • Loading branch information
Sinyaev Anton Yuryevich committed Apr 5, 2022
1 parent e49129d commit 6f87550
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 14 deletions.
39 changes: 35 additions & 4 deletions pkg/allure/parameter.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
package allure

import (
"fmt"
"strings"
)

// Parameter is an implementation of the Parameter entity,
// which Allure uses as additional information describing the test Step
// (for example - request host or server address)
Expand All @@ -10,24 +15,50 @@ type Parameter struct {

// NewParameter Constructor. Builds and returns a new `Parameter` object,
// using `name` as the parameter name and `value`, as the value.
func NewParameter(name string, value string) Parameter {
func NewParameter(name string, value ...interface{}) Parameter {
val := trimBrackets(messageFromMsgAndArgs(value))
return Parameter{
Name: name,
Value: value,
Value: val,
}
}

// NewParameters Constructor. Accepts a list of strings, separated by commas.
// Each even string is considered a parameter name, and each odd-value of the parameter.
// If an odd number of lines is passed, the last line is discarded.
// Returns the list of parameters received after processing the passed list.
func NewParameters(kv ...string) []Parameter {
func NewParameters(kv ...interface{}) []Parameter {
if len(kv)%2 != 0 {
kv = kv[:len(kv)-1]
}
result := make([]Parameter, len(kv)/2)
for i := 0; i < len(kv); i += 2 {
result[i/2] = NewParameter(kv[i], kv[i+1])
val := trimBrackets(messageFromMsgAndArgs(kv[i+1]))
result[i/2] = NewParameter(messageFromMsgAndArgs(kv[i]), val)
}
return result
}

func trimBrackets(val string) string {
if strings.HasSuffix(val, "]") && strings.HasPrefix(val, "[") {
return strings.TrimSuffix(strings.TrimPrefix(val, "["), "]")
}
return val
}

func messageFromMsgAndArgs(msgAndArgs ...interface{}) string {
if len(msgAndArgs) == 0 || msgAndArgs == nil {
return ""
}
if len(msgAndArgs) == 1 {
msg := msgAndArgs[0]
if msgAsStr, ok := msg.(string); ok {
return msgAsStr
}
return fmt.Sprintf("%+v", msg)
}
if len(msgAndArgs) > 1 {
return fmt.Sprintf(msgAndArgs[0].(string), msgAndArgs[1:]...)
}
return ""
}
18 changes: 11 additions & 7 deletions pkg/allure/result_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -226,13 +226,17 @@ func TestResult_SetNewLabelMap(t *testing.T) {
}
result := new(Result)
result.SetNewLabelMap(labelMap)
label := result.Labels
require.NotNil(t, label)
require.Len(t, label, 2)
require.Equal(t, Framework.ToString(), label[0].Name)
require.Equal(t, labelValue1, label[0].Value)
require.Equal(t, Host.ToString(), label[1].Name)
require.Equal(t, labelValue2, label[1].Value)
labelFramework := result.GetLabel(Framework)
require.NotNil(t, labelFramework)
require.Len(t, labelFramework, 1)
require.Equal(t, Framework.ToString(), labelFramework[0].Name)
require.Equal(t, labelValue1, labelFramework[0].Value)

labelHost := result.GetLabel(Host)
require.NotNil(t, labelFramework)
require.Len(t, labelFramework, 1)
require.Equal(t, Host.ToString(), labelHost[0].Name)
require.Equal(t, labelValue2, labelHost[0].Value)
}

func TestResult_WithLaunchTags_noTags(t *testing.T) {
Expand Down
2 changes: 1 addition & 1 deletion pkg/allure/step.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ func (s *Step) WithParameters(params ...Parameter) *Step {
// parameter value. If an odd number of lines is passed, the last line is discarded.
// Adds to the array `Step.Parameters` all `allure.Parameter` received after conversion `kv`.
// Returns pointer to the current Step (for Fluent Interface).
func (s *Step) WithNewParameters(kv ...string) *Step {
func (s *Step) WithNewParameters(kv ...interface{}) *Step {
s.Parameters = append(s.Parameters, NewParameters(kv...)...)
return s
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/framework/core/common/step_context.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ func (ctx *stepCtx) WithParameters(parameters ...allure.Parameter) {
ctx.currentStep.WithParameters(parameters...)
}

func (ctx *stepCtx) WithNewParameters(kv ...string) {
func (ctx *stepCtx) WithNewParameters(kv ...interface{}) {
ctx.currentStep.WithNewParameters(kv...)
}

Expand Down
2 changes: 1 addition & 1 deletion pkg/framework/provider/test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ type StepCtx interface {
WithNewStep(stepName string, step func(ctx StepCtx), params ...allure.Parameter)
WithNewAsyncStep(stepName string, step func(ctx StepCtx), params ...allure.Parameter)
WithParameters(parameters ...allure.Parameter)
WithNewParameters(kv ...string)
WithNewParameters(kv ...interface{})
WithAttachments(attachments ...*allure.Attachment)
WithNewAttachment(name string, mimeType allure.MimeType, content []byte)
NewStep(stepName string, parameters ...allure.Parameter)
Expand Down

0 comments on commit 6f87550

Please sign in to comment.