Skip to content

Commit

Permalink
Show step's actualText as part of failure message (#7)
Browse files Browse the repository at this point in the history
Ref #5

Signed-off-by: Kaustav Das Modak <kaustav.dasmodak@yahoo.co.in>
  • Loading branch information
kaustavdm authored and kashishm committed May 5, 2016
1 parent 484e220 commit 60d8062
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 14 deletions.
20 changes: 12 additions & 8 deletions xmlReportBuilder.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,12 @@ package main
import (
"encoding/xml"
"fmt"
"github.com/getgauge/xml-report/gauge_messages"
"os"
"strconv"
"strings"
"time"

"github.com/getgauge/xml-report/gauge_messages"
)

const (
Expand Down Expand Up @@ -194,7 +195,7 @@ func (self *XmlBuilder) getTestSuite(result *gauge_messages.ProtoSpecResult, hos
}

func (self *XmlBuilder) getFailure(test *gauge_messages.ProtoScenario) (string, string) {
msg, content := self.getFailureFromExecutionResult(test.GetPreHookFailure(), test.GetPostHookFailure(), nil, "Scenario ")
msg, content := self.getFailureFromExecutionResult(test.GetScenarioHeading(), test.GetPreHookFailure(), test.GetPostHookFailure(), nil, "Scenario ")
return self.perform(msg, content, func(test *gauge_messages.ProtoScenario) (string, string) {
msg, content = self.getFailureFromSteps(test.GetContexts())
return self.perform(msg, content, func(test *gauge_messages.ProtoScenario) (string, string) {
Expand All @@ -214,11 +215,11 @@ func (self *XmlBuilder) getFailureFromSteps(items []*gauge_messages.ProtoItem) (
for _, item := range items {
msg, err := "", ""
if item.GetItemType() == gauge_messages.ProtoItem_Step {
msg, err = self.getFailureFromExecutionResult(item.GetStep().GetStepExecutionResult().GetPreHookFailure(),
msg, err = self.getFailureFromExecutionResult(item.GetStep().GetActualText(), item.GetStep().GetStepExecutionResult().GetPreHookFailure(),
item.GetStep().GetStepExecutionResult().GetPostHookFailure(),
item.GetStep().GetStepExecutionResult().GetExecutionResult(), "Step ")
} else if item.GetItemType() == gauge_messages.ProtoItem_Concept {
msg, err = self.getFailureFromExecutionResult(nil, nil, item.GetConcept().GetConceptExecutionResult().GetExecutionResult(), "Concept ")
msg, err = self.getFailureFromExecutionResult("", nil, nil, item.GetConcept().GetConceptExecutionResult().GetExecutionResult(), "Concept ")
}
if msg != "" {
return msg, err
Expand All @@ -227,13 +228,16 @@ func (self *XmlBuilder) getFailureFromSteps(items []*gauge_messages.ProtoItem) (
return "", ""
}

func (self *XmlBuilder) getFailureFromExecutionResult(preHookFailure *gauge_messages.ProtoHookFailure, postHookFailure *gauge_messages.ProtoHookFailure, stepExecutionResult *gauge_messages.ProtoExecutionResult, prefix string) (string, string) {
func (self *XmlBuilder) getFailureFromExecutionResult(name string, preHookFailure *gauge_messages.ProtoHookFailure, postHookFailure *gauge_messages.ProtoHookFailure, stepExecutionResult *gauge_messages.ProtoExecutionResult, prefix string) (string, string) {
if len(name) > 0 {
name = fmt.Sprintf("%s\n", name)
}
if preHookFailure != nil {
return fmt.Sprintf("%s%s: '%s'", prefix, preHookFailureMsg, preHookFailure.GetErrorMessage()), preHookFailure.GetStackTrace()
return fmt.Sprintf("%s%s%s: '%s'", name, prefix, preHookFailureMsg, preHookFailure.GetErrorMessage()), preHookFailure.GetStackTrace()
} else if postHookFailure != nil {
return fmt.Sprintf("%s%s: '%s'", prefix, postHookFailureMsg, postHookFailure.GetErrorMessage()), postHookFailure.GetStackTrace()
return fmt.Sprintf("%s%s%s: '%s'", name, prefix, postHookFailureMsg, postHookFailure.GetErrorMessage()), postHookFailure.GetStackTrace()
} else if stepExecutionResult != nil && stepExecutionResult.GetFailed() {
return fmt.Sprintf("%s%s: '%s'", prefix, executionFailureMsg, stepExecutionResult.GetErrorMessage()), stepExecutionResult.GetStackTrace()
return fmt.Sprintf("%s%s%s: '%s'", name, prefix, executionFailureMsg, stepExecutionResult.GetErrorMessage()), stepExecutionResult.GetStackTrace()
}
return "", ""
}
Expand Down
18 changes: 12 additions & 6 deletions xmlReportBuilder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,11 @@ package main

import (
"encoding/xml"
"testing"

"github.com/getgauge/xml-report/gauge_messages"
"github.com/golang/protobuf/proto"
. "gopkg.in/check.v1"
"testing"
)

func Test(t *testing.T) { TestingT(t) }
Expand Down Expand Up @@ -91,26 +92,31 @@ func (s *MySuite) TestToVerifyXmlContentForFailingExecutionResult(c *C) {

func (s *MySuite) TestToVerifyXmlContentForFailingHookExecutionResult(c *C) {
builder := &XmlBuilder{currentId: 0}
msg, content := builder.getFailureFromExecutionResult(nil, nil, nil, "PREFIX ")
msg, content := builder.getFailureFromExecutionResult("", nil, nil, nil, "PREFIX ")

c.Assert(msg, Equals, "")
c.Assert(content, Equals, "")

failure := &gauge_messages.ProtoHookFailure{StackTrace: proto.String("StackTrace"), ErrorMessage: proto.String("ErrorMessage")}
msg, content = builder.getFailureFromExecutionResult(failure, nil, nil, "PREFIX ")
msg, content = builder.getFailureFromExecutionResult("", failure, nil, nil, "PREFIX ")

c.Assert(msg, Equals, "PREFIX "+preHookFailureMsg+": 'ErrorMessage'")
c.Assert(content, Equals, "StackTrace")

msg, content = builder.getFailureFromExecutionResult(nil, failure, nil, "PREFIX ")
msg, content = builder.getFailureFromExecutionResult("", nil, failure, nil, "PREFIX ")

c.Assert(msg, Equals, "PREFIX "+postHookFailureMsg+": 'ErrorMessage'")
c.Assert(content, Equals, "StackTrace")

msg, content = builder.getFailureFromExecutionResult("Foo", nil, failure, nil, "PREFIX ")

c.Assert(msg, Equals, "Foo\nPREFIX "+postHookFailureMsg+": 'ErrorMessage'")
c.Assert(content, Equals, "StackTrace")

executionFailure := &gauge_messages.ProtoExecutionResult{StackTrace: proto.String("StackTrace"), ErrorMessage: proto.String("ErrorMessage"), Failed: proto.Bool(true)}
msg, content = builder.getFailureFromExecutionResult(nil, nil, executionFailure, "PREFIX ")
msg, content = builder.getFailureFromExecutionResult("Foo", nil, nil, executionFailure, "PREFIX ")

c.Assert(msg, Equals, "PREFIX "+executionFailureMsg+": 'ErrorMessage'")
c.Assert(msg, Equals, "Foo\nPREFIX "+executionFailureMsg+": 'ErrorMessage'")
c.Assert(content, Equals, "StackTrace")
}

Expand Down

0 comments on commit 60d8062

Please # to comment.