github.com/getgauge/gauge@v1.6.9/execution/result/conceptResult.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 result 8 9 import "github.com/getgauge/gauge-proto/go/gauge_messages" 10 11 // ConceptResult represents result of a concept execution 12 type ConceptResult struct { 13 ProtoConcept *gauge_messages.ProtoConcept 14 } 15 16 // NewConceptResult creates a ConceptResult with given ProtoConcept 17 func NewConceptResult(con *gauge_messages.ProtoConcept) *ConceptResult { 18 return &ConceptResult{ProtoConcept: con} 19 } 20 21 // SetFailure sets the conceptResult as failed 22 func (conceptResult *ConceptResult) SetFailure() { 23 conceptResult.ProtoConcept.ConceptExecutionResult.ExecutionResult.Failed = true 24 } 25 26 // GetFailed returns the state of the concept result 27 func (conceptResult *ConceptResult) GetFailed() bool { 28 return conceptResult.ProtoConcept.GetConceptExecutionResult().GetExecutionResult().GetFailed() 29 } 30 31 // GetRecoverable returns the state of the concept result 32 func (conceptResult *ConceptResult) GetRecoverable() bool { 33 return conceptResult.ProtoConcept.GetConceptExecutionResult().GetExecutionResult().GetRecoverableError() 34 } 35 36 // ExecTime returns the time taken for concept execution 37 func (conceptResult *ConceptResult) ExecTime() int64 { 38 return conceptResult.ProtoConcept.GetConceptExecutionResult().GetExecutionResult().GetExecutionTime() 39 } 40 41 // SetConceptExecResult sets the conceptExecResult as result of concept execution as well as result of ConceptStep 42 func (conceptResult *ConceptResult) SetConceptExecResult(conceptExecResult *gauge_messages.ProtoStepExecutionResult) { 43 conceptResult.ProtoConcept.ConceptExecutionResult = conceptExecResult 44 conceptResult.ProtoConcept.ConceptStep.StepExecutionResult = conceptExecResult 45 } 46 47 // UpdateConceptExecResult sets the result of Concept execution 48 func (conceptResult *ConceptResult) UpdateConceptExecResult() { 49 var failed, recoverable bool 50 protoConcept := conceptResult.ProtoConcept 51 var conceptExecutionTime int64 52 for _, step := range protoConcept.GetSteps() { 53 if step.GetItemType() == gauge_messages.ProtoItem_Concept { 54 stepExecResult := step.GetConcept().GetConceptExecutionResult().GetExecutionResult() 55 conceptExecutionTime += stepExecResult.GetExecutionTime() 56 if step.GetConcept().GetConceptExecutionResult().GetExecutionResult().GetFailed() { 57 failed = true 58 conceptExecutionResult := &gauge_messages.ProtoStepExecutionResult{ExecutionResult: step.GetConcept().GetConceptExecutionResult().GetExecutionResult(), Skipped: false} 59 conceptExecutionResult.ExecutionResult.ExecutionTime = conceptExecutionTime 60 protoConcept.ConceptExecutionResult = conceptExecutionResult 61 protoConcept.ConceptStep.StepExecutionResult = conceptExecutionResult 62 recoverable = step.GetConcept().GetConceptExecutionResult().GetExecutionResult().GetRecoverableError() 63 if !recoverable { 64 return 65 } 66 } 67 } else if step.GetItemType() == gauge_messages.ProtoItem_Step { 68 stepExecResult := step.GetStep().GetStepExecutionResult().GetExecutionResult() 69 conceptExecutionTime += stepExecResult.GetExecutionTime() 70 if stepExecResult.GetFailed() { 71 failed = true 72 conceptExecutionResult := &gauge_messages.ProtoStepExecutionResult{ExecutionResult: stepExecResult, Skipped: false} 73 conceptExecutionResult.ExecutionResult.ExecutionTime = conceptExecutionTime 74 protoConcept.ConceptExecutionResult = conceptExecutionResult 75 protoConcept.ConceptStep.StepExecutionResult = conceptExecutionResult 76 recoverable = step.GetStep().GetStepExecutionResult().GetExecutionResult().GetRecoverableError() 77 if !recoverable { 78 return 79 } 80 } 81 } 82 } 83 84 conceptResult.SetConceptExecResult(&gauge_messages.ProtoStepExecutionResult{ExecutionResult: &gauge_messages.ProtoExecutionResult{RecoverableError: recoverable, Failed: failed, ExecutionTime: conceptExecutionTime}}) 85 protoConcept.ConceptStep.StepExecutionResult.Skipped = false 86 } 87 88 func (conceptResult *ConceptResult) GetPreHook() []*gauge_messages.ProtoHookFailure { 89 return nil 90 } 91 92 func (conceptResult *ConceptResult) GetPostHook() []*gauge_messages.ProtoHookFailure { 93 return nil 94 } 95 96 func (conceptResult *ConceptResult) AddPreHook(_ ...*gauge_messages.ProtoHookFailure) { 97 } 98 99 func (conceptResult *ConceptResult) AddPostHook(_ ...*gauge_messages.ProtoHookFailure) { 100 } 101 102 func (conceptResult *ConceptResult) Item() interface{} { 103 return conceptResult.ProtoConcept 104 }