result.go 2.4 KB
Newer Older
aaronchen2k2k's avatar
aaronchen2k2k 已提交
1 2 3 4 5 6
package script

import (
	"fmt"
	"github.com/easysoft/zentaoatf/src/utils"
	"io/ioutil"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
7
	"os"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
8 9 10 11 12 13 14 15 16 17
	"path"
	"regexp"
	"strings"
)

func LoadTestResults(assert string) []string {
	ret := make([]string, 0)

	dir := utils.Prefer.WorkDir + utils.LogDir

18
	mode, name := GetRunModeAndName(assert)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
19

20
	reg := fmt.Sprintf("%s-%s-(.+)", mode, name)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
21 22 23 24
	myExp := regexp.MustCompile(reg)

	files, _ := ioutil.ReadDir(dir)
	for _, fi := range files {
25
		if fi.IsDir() {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
26 27 28 29 30 31 32 33 34
			arr := myExp.FindStringSubmatch(fi.Name())
			if len(arr) > 1 {
				ret = append(ret, arr[1])
			}
		}
	}

	return ret
}
35

aaronchen2k2k's avatar
aaronchen2k2k 已提交
36
func GetTestResult(assert string, date string) []string {
37
	mode, name := GetRunModeAndName(assert)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
38
	resultPath := utils.Prefer.WorkDir + utils.LogDir + logFolder(mode, name, date) + string(os.PathSeparator) + "result.txt"
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55

	arr := make([]string, 0)
	content := utils.ReadFile(resultPath)
	for _, line := range strings.Split(content, "\n") {
		pass, _ := regexp.MatchString("^\\s(PASS|FAIL).*", line)
		if !pass {
			continue
		}

		line := strings.TrimSpace(line)
		if line == "" {
			continue
		}

		arr = append(arr, line)
	}

aaronchen2k2k's avatar
aaronchen2k2k 已提交
56
	return arr
57 58
}

59 60
func GetCheckpointsResult(assert string, date string, caseLine string) string {
	mode, name := GetRunModeAndName(assert)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
61
	resultPath := utils.Prefer.WorkDir + utils.LogDir + logFolder(mode, name, date) + string(os.PathSeparator) + "result.txt"
62 63 64

	content := utils.ReadFile(resultPath)

aaronchen2k2k's avatar
aaronchen2k2k 已提交
65
	caseLine = strings.Replace(caseLine, " ", "\\s", -1)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
66
	caseLine = strings.Replace(caseLine, "\\", "\\\\\\\\", -1)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
67

aaronchen2k2k's avatar
aaronchen2k2k 已提交
68 69
	utils.PrintToCmd(caseLine)

aaronchen2k2k's avatar
aaronchen2k2k 已提交
70
	myExp := regexp.MustCompile(`(?m:^\s` + caseLine + `\n([\s\S]*?)((^\s(PASS|FAIL))|\z))`)
71
	arr := myExp.FindStringSubmatch(content)
72
	str := ""
73 74 75 76 77 78 79
	if len(arr) > 1 {
		str = arr[1]
	}

	return str
}

80 81
func GetRunModeAndName(assert string) (string, string) {
	ext := path.Ext(assert)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
82
	name := strings.Replace(utils.Base(assert), ext, "", -1)
83 84 85 86 87 88 89 90 91 92

	var mode string
	if ext == ".suite" {
		mode = "suite"
	} else {
		mode = "script"
	}

	return mode, name
}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
93

94
func GetLogFileByCase(assert string, date string, file string) string {
95 96
	mode, name := GetRunModeAndName(assert)

aaronchen2k2k's avatar
aaronchen2k2k 已提交
97
	ext := path.Ext(file)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
98
	logName := strings.Replace(utils.Base(file), ext, ".log", -1)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
99

aaronchen2k2k's avatar
aaronchen2k2k 已提交
100
	return utils.Prefer.WorkDir + utils.LogDir + logFolder(mode, name, date) + string(os.PathSeparator) + logName
101 102 103 104
}

func logFolder(mode string, name string, date string) string {
	return fmt.Sprintf("%s-%s-%s", mode, name, date)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
105
}