result.go 2.3 KB
Newer Older
aaronchen2k2k's avatar
aaronchen2k2k 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
package script

import (
	"fmt"
	"github.com/easysoft/zentaoatf/src/utils"
	"io/ioutil"
	"path"
	"regexp"
	"strings"
)

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

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

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

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

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

	return ret
}
34

35 36
func GetTestResult(assert string, date string) string {
	mode, name := GetRunModeAndName(assert)
37
	resultPath := utils.Prefer.WorkDir + utils.LogDir + logFolder(mode, name, date) + "/result.txt"
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

	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)
	}

	return strings.Join(arr, "\n")
}

58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
func GetCheckpointsResult(assert string, date string, caseLine string) string {
	mode, name := GetRunModeAndName(assert)
	resultPath := utils.Prefer.WorkDir + utils.LogDir + logFolder(mode, name, date) + "/result.txt"

	content := utils.ReadFile(resultPath)

	utils.PrintToCmd(utils.Cui, resultPath)
	utils.PrintToCmd(utils.Cui, content)
	utils.PrintToCmd(utils.Cui, caseLine+"(.*)")

	myExp := regexp.MustCompile("(?m:^\\s" + caseLine + "\n([\\s\\S]*?)((^\\s(PASS|FAIL))|\\z))")
	arr := myExp.FindStringSubmatch(content)

	str := "111"
	if len(arr) > 1 {
		str = arr[1]
	}

	return str
}

79 80 81 82 83 84 85 86 87 88 89 90 91
func GetRunModeAndName(assert string) (string, string) {
	ext := path.Ext(assert)
	name := strings.Replace(path.Base(assert), ext, "", -1)

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

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

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

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

99 100 101 102 103
	return utils.Prefer.WorkDir + utils.LogDir + logFolder(mode, name, date) + "/" + logName
}

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