github.com/getgauge/gauge@v1.6.9/reporter/coloredConsole_test.go (about)

     1  /*----------------------------------------------------------------
     2   *  Copyright (c) ThoughtWorks, Inc.
     3   *  Licensed under the Apache License, Version 2.0
     4   *  See LICENSE in the project root for license information.
     5   *----------------------------------------------------------------*/
     6  
     7  package reporter
     8  
     9  import (
    10  	"github.com/getgauge/gauge-proto/go/gauge_messages"
    11  	"github.com/getgauge/gauge/execution/result"
    12  	"github.com/getgauge/gauge/gauge"
    13  	. "gopkg.in/check.v1"
    14  )
    15  
    16  func setupColoredConsole() (*dummyWriter, *coloredConsole) {
    17  	dw := newDummyWriter()
    18  	cc := newColoredConsole(dw)
    19  	return dw, cc
    20  }
    21  
    22  func (s *MySuite) TestScenarioStartInNonVerbose_ColoredConsole(c *C) {
    23  	dw, cc := setupColoredConsole()
    24  	cc.indentation = 2
    25  	scnRes := result.NewScenarioResult(&gauge_messages.ProtoScenario{ExecutionStatus: gauge_messages.ExecutionStatus_PASSED})
    26  
    27  	cc.ScenarioStart(&gauge.Scenario{Heading: &gauge.Heading{Value: "my first scenario"}}, &gauge_messages.ExecutionInfo{}, scnRes)
    28  
    29  	c.Assert(dw.output, Equals, "    ## my first scenario\t")
    30  }
    31  
    32  func (s *MySuite) TestScenarioEndInNonVerbose_ColoredConsole(c *C) {
    33  	dw, cc := setupColoredConsole()
    34  	cc.indentation = 2
    35  	scnRes := result.NewScenarioResult(&gauge_messages.ProtoScenario{ExecutionStatus: gauge_messages.ExecutionStatus_FAILED, Failed: true})
    36  	cc.ScenarioStart(&gauge.Scenario{Heading: &gauge.Heading{Value: "failing step"}}, &gauge_messages.ExecutionInfo{}, scnRes)
    37  	dw.output = ""
    38  
    39  	_, err := cc.Write([]byte("fail reason: blah"))
    40  	c.Assert(err, IsNil)
    41  	cc.ScenarioEnd(nil, scnRes, &gauge_messages.ExecutionInfo{})
    42  
    43  	c.Assert(dw.output, Equals, "fail reason: blah\n")
    44  }
    45  
    46  func (s *MySuite) TestFailingStepEnd_NonVerbose(c *C) {
    47  	dw, cc := setupColoredConsole()
    48  	cc.indentation = 2
    49  	stepText := "* say hello"
    50  	errMsg := "pre hook failure message"
    51  	stacktrace := "my stacktrace"
    52  	specName := "hello.spec"
    53  	specInfo := &gauge_messages.ExecutionInfo{CurrentSpec: &gauge_messages.SpecInfo{FileName: specName}}
    54  	stepExeRes := &gauge_messages.ProtoStepExecutionResult{ExecutionResult: &gauge_messages.ProtoExecutionResult{ErrorMessage: errMsg, StackTrace: stacktrace}}
    55  	stepRes := result.NewStepResult(&gauge_messages.ProtoStep{StepExecutionResult: stepExeRes})
    56  	stepRes.SetStepFailure()
    57  	cc.StepStart(stepText)
    58  	dw.output = ""
    59  
    60  	cc.StepEnd(gauge.Step{LineText: "* say hello"}, stepRes, specInfo)
    61  
    62  	c.Assert(dw.output, Equals, getFailureSymbol())
    63  }
    64  
    65  func (s *MySuite) TestPassingStepEndInNonVerbose_ColoredConsole(c *C) {
    66  	dw, cc := setupColoredConsole()
    67  	cc.indentation = 2
    68  	cc.StepStart("* say hello")
    69  	dw.output = ""
    70  
    71  	specName := "hello.spec"
    72  	specInfo := &gauge_messages.ExecutionInfo{CurrentSpec: &gauge_messages.SpecInfo{FileName: specName}}
    73  	stepRes := result.NewStepResult(&gauge_messages.ProtoStep{StepExecutionResult: &gauge_messages.ProtoStepExecutionResult{}})
    74  
    75  	cc.StepEnd(gauge.Step{LineText: "* say hello"}, stepRes, specInfo)
    76  
    77  	c.Assert(dw.output, Equals, getSuccessSymbol())
    78  }