check.go 2.5 KB
Newer Older
aaronchen2k2k's avatar
aaronchen2k2k 已提交
1 2 3 4
package biz

import (
	"fmt"
5
	"github.com/easysoft/zentaoatf/src/misc"
6 7
	"github.com/easysoft/zentaoatf/src/model"
	"github.com/easysoft/zentaoatf/src/utils"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
8 9
)

aaronchen2k2k's avatar
aaronchen2k2k 已提交
10
func CheckResults(dir string, langType string, report *model.TestReport) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
11 12 13
	fmt.Printf("\n=== Begin to analyse test result ===\n\n")

	scriptFiles, _ := utils.GetAllFiles(dir, langType)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
14

aaronchen2k2k's avatar
aaronchen2k2k 已提交
15
	for _, scriptFile := range scriptFiles {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
16
		logFile := utils.ScriptToLogName(dir, scriptFile)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
17

18
		stepArr := utils.ReadCheckpointSteps(scriptFile)
19
		expectArr := utils.ReadExpect(scriptFile)
20
		skip, logArr := utils.ReadLog(logFile)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
21

22
		ValidateTestCase(scriptFile, langType, stepArr, expectArr, skip, logArr, report)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
23 24 25
	}
}

26
func ValidateTestCase(scriptFile string, langType string,
27
	stepArr []string, expectArr [][]string, skip bool, actualArr [][]string, report *model.TestReport) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
28

29
	stepLogs := make([]model.StepLog, 0)
30
	caseResult := misc.PASS
aaronchen2k2k's avatar
aaronchen2k2k 已提交
31

32 33 34 35 36 37 38 39 40
	if skip {
		caseResult = misc.SKIP
	} else {
		indx := 0
		for _, step := range stepArr {
			var expectLines []string
			if len(expectArr) > indx {
				expectLines = expectArr[indx]
			}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
41

42 43 44 45
			var actualLines []string
			if len(actualArr) > indx {
				actualLines = actualArr[indx]
			}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
46

47 48 49 50 51 52
			stepResult, checkpointLogs := ValidateStep(langType, expectLines, actualLines)
			step := model.StepLog{Numb: indx + 1, Name: step, Status: stepResult, CheckPoints: checkpointLogs}
			stepLogs = append(stepLogs, step)
			if !stepResult {
				caseResult = misc.FAIL
			}
53

54 55
			indx++
		}
56 57
	}

58
	if caseResult == misc.FAIL {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
59
		report.Fail = report.Fail + 1
60
	} else if caseResult == misc.PASS {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
61
		report.Pass = report.Pass + 1
62 63
	} else if caseResult == misc.SKIP {
		report.Skip = report.Skip + 1
aaronchen2k2k's avatar
aaronchen2k2k 已提交
64
	}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
65
	report.Total = report.Total + 1
aaronchen2k2k's avatar
aaronchen2k2k 已提交
66

67
	cs := model.CaseLog{Path: scriptFile, Status: caseResult, Steps: stepLogs}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
68
	report.Cases = append(report.Cases, cs)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
69 70
}

71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
func ValidateStep(langType string, expectLines []string, actualLines []string) (bool, []model.CheckPointLog) {

	stepResult := true

	checkpointLogs := make([]model.CheckPointLog, 0)

	indx2 := 0
	for _, expect := range expectLines {
		log := "N/A"
		if len(actualLines) > indx2 {
			log = actualLines[indx2]
		}

		pass := MatchString(expect, log, langType)
		if !pass {
			stepResult = false
		}

		cp := model.CheckPointLog{Numb: indx2 + 1, Status: pass, Expect: expect, Actual: log}
		checkpointLogs = append(checkpointLogs, cp)

		indx2++
	}

	return stepResult, checkpointLogs

}

aaronchen2k2k's avatar
aaronchen2k2k 已提交
99 100 101 102
func PrintAndLog(logs *[]string, str string) {
	*logs = append(*logs, str)
	fmt.Println(str)
}