示例#1
0
func (e *specExecutor) getSkippedScenarioResult(scenario *gauge.Scenario) *result.ScenarioResult {
	scenarioResult := &result.ScenarioResult{ProtoScenario: gauge.NewProtoScenario(scenario)}
	e.addAllItemsForScenarioExecution(scenario, scenarioResult)
	setSkipInfoInResult(scenarioResult, scenario, e.errMap)
	e.specResult.ScenarioSkippedCount++
	return scenarioResult
}
示例#2
0
func (e *specExecutor) executeScenario(scenario *gauge.Scenario) *result.ScenarioResult {
	e.currentExecutionInfo.CurrentScenario = &gauge_messages.ScenarioInfo{
		Name:     proto.String(scenario.Heading.Value),
		Tags:     getTagValue(scenario.Tags),
		IsFailed: proto.Bool(false),
	}

	scenarioResult := &result.ScenarioResult{ProtoScenario: gauge.NewProtoScenario(scenario)}
	e.addAllItemsForScenarioExecution(scenario, scenarioResult)

	scenarioExec := newScenarioExecutor(e.runner, e.pluginHandler, e.currentExecutionInfo, e.consoleReporter, e.errMap)
	scenarioExec.execute(scenarioResult, scenario)
	if scenarioResult.ProtoScenario.GetSkipped() {
		e.specResult.ScenarioSkippedCount++
	}
	return scenarioResult
}
示例#3
0
func (e *specExecutor) executeScenario(scenario *gauge.Scenario) *result.ScenarioResult {
	e.currentExecutionInfo.CurrentScenario = &gauge_messages.ScenarioInfo{
		Name:     proto.String(scenario.Heading.Value),
		Tags:     getTagValue(scenario.Tags),
		IsFailed: proto.Bool(false),
	}

	scenarioResult := &result.ScenarioResult{ProtoScenario: gauge.NewProtoScenario(scenario)}
	e.addAllItemsForScenarioExecution(scenario, scenarioResult)
	scenarioResult.ProtoScenario.Skipped = proto.Bool(false)

	if _, ok := e.errMap.ScenarioErrs[scenario]; ok {
		e.setSkipInfoInResult(scenarioResult, scenario)
		return scenarioResult
	}

	res := e.initScenarioDataStore()
	if res.GetFailed() {
		e.consoleReporter.Errorf("Failed to initialize scenario datastore. Error: %s", res.GetErrorMessage())
		e.handleScenarioDataStoreFailure(scenarioResult, scenario, fmt.Errorf(res.GetErrorMessage()))
		return scenarioResult
	}
	e.consoleReporter.ScenarioStart(scenario.Heading.Value)

	e.notifyBeforeScenarioHook(scenarioResult)
	if !e.specResult.IsFailed {
		stepExec := newStepExecutor(e.runner, e.pluginHandler, e.currentExecutionInfo, e.consoleReporter)
		stepExec.execute(scenarioResult)
	}

	e.notifyAfterScenarioHook(scenarioResult)
	scenarioResult.UpdateExecutionTime()

	e.consoleReporter.ScenarioEnd(scenarioResult.GetFailure())
	return scenarioResult
}
示例#4
0
func (e *specExecutor) executeScenario(scenario *gauge.Scenario) *result.ScenarioResult {
	e.currentExecutionInfo.CurrentScenario = &gauge_messages.ScenarioInfo{Name: proto.String(scenario.Heading.Value), Tags: getTagValue(scenario.Tags), IsFailed: proto.Bool(false)}
	scenarioResult := &result.ScenarioResult{ProtoScenario: gauge.NewProtoScenario(scenario)}
	e.addAllItemsForScenarioExecution(scenario, scenarioResult)
	scenarioResult.ProtoScenario.Skipped = proto.Bool(false)
	if _, ok := e.errMap.scenarioErrs[scenario]; ok {
		e.setSkipInfoInResult(scenarioResult, scenario)
		return scenarioResult
	}
	err := e.initScenarioDataStore()
	if err != nil {
		e.handleScenarioDataStoreFailure(scenarioResult, scenario, err)
		return scenarioResult
	}
	e.consoleReporter.ScenarioStart(scenario.Heading.Value)
	beforeHookExecutionStatus := e.executeBeforeScenarioHook(scenarioResult)
	if beforeHookExecutionStatus.GetFailed() {
		handleHookFailure(scenarioResult, beforeHookExecutionStatus, result.AddPreHook, e.consoleReporter)
		setScenarioFailure(e.currentExecutionInfo)
	} else {
		e.executeContextItems(scenarioResult)
		if !scenarioResult.GetFailure() {
			e.executeScenarioItems(scenarioResult)
		}
		e.executeTearDownItems(scenarioResult)
	}
	afterHookExecutionStatus := e.executeAfterScenarioHook(scenarioResult)
	scenarioResult.UpdateExecutionTime()
	if afterHookExecutionStatus.GetFailed() {
		handleHookFailure(scenarioResult, afterHookExecutionStatus, result.AddPostHook, e.consoleReporter)
		setScenarioFailure(e.currentExecutionInfo)
	}
	e.consoleReporter.ScenarioEnd(scenarioResult.GetFailure())

	return scenarioResult
}