pkg/testutil/bldr/step_result_builder.go (48 lines of code) (raw):
package bldr
import (
"google.golang.org/protobuf/types/known/structpb"
"gitlab.com/gitlab-org/step-runner/pkg/runner"
"gitlab.com/gitlab-org/step-runner/proto"
)
type StepResultBuilder struct {
specDef *runner.SpecDefinition
status proto.StepResult_Status
step *proto.Step
outputs map[string]*structpb.Value
}
func StepResult() *StepResultBuilder {
return &StepResultBuilder{
specDef: SpecDef().Build(),
status: proto.StepResult_success,
step: nil,
outputs: map[string]*structpb.Value{},
}
}
func (bldr *StepResultBuilder) WithOutput(name string, value *structpb.Value) *StepResultBuilder {
bldr.outputs[name] = value
return bldr
}
func (bldr *StepResultBuilder) WithSpecDef(specDef *runner.SpecDefinition) *StepResultBuilder {
bldr.specDef = specDef
return bldr
}
func (bldr *StepResultBuilder) WithFailedStatus() *StepResultBuilder {
bldr.status = proto.StepResult_failure
return bldr
}
func (bldr *StepResultBuilder) WithSuccessStatus() *StepResultBuilder {
bldr.status = proto.StepResult_success
return bldr
}
func (bldr *StepResultBuilder) Build() *proto.StepResult {
return &proto.StepResult{
Step: bldr.step,
SpecDefinition: bldr.specDef.ToProto(),
Status: bldr.status,
Outputs: bldr.outputs,
Exports: make(map[string]string),
Env: nil,
ExecResult: &proto.StepResult_ExecResult{},
SubStepResults: nil,
}
}