run.go 2.1 KB
Newer Older
1 2 3 4
package action

import (
	"github.com/easysoft/zentaoatf/src/model"
5
	scriptService "github.com/easysoft/zentaoatf/src/service/script"
6
	testingService "github.com/easysoft/zentaoatf/src/service/testing"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
7
	zentaoService "github.com/easysoft/zentaoatf/src/service/zentao"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
8
	"github.com/easysoft/zentaoatf/src/utils/common"
9
	fileUtils "github.com/easysoft/zentaoatf/src/utils/file"
aaronchen2k2k's avatar
readme  
aaronchen2k2k 已提交
10 11
	i118Utils "github.com/easysoft/zentaoatf/src/utils/i118"
	logUtils "github.com/easysoft/zentaoatf/src/utils/log"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
12
	"github.com/easysoft/zentaoatf/src/utils/vari"
13
	zentaoUtils "github.com/easysoft/zentaoatf/src/utils/zentao"
aaronchen2k2k's avatar
readme  
aaronchen2k2k 已提交
14
	"github.com/fatih/color"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
15
	"strconv"
16 17
)

aaronchen2k2k's avatar
aaronchen2k2k 已提交
18 19 20
func Run(files []string, suite string, task string, result string) {
	caseIdMap := map[int]string{}
	cases := make([]string, 0)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
21

22
	vari.WorkDir = fileUtils.AbosutePath(".")
aaronchen2k2k's avatar
aaronchen2k2k 已提交
23
	vari.RunDir = zentaoUtils.RunDateFolder()
aaronchen2k2k's avatar
aaronchen2k2k 已提交
24

aaronchen2k2k's avatar
aaronchen2k2k 已提交
25 26 27
	if suite != "" {
		suiteId, err := strconv.Atoi(suite)
		if err == nil && suiteId > 0 { // load cases from remote by suite id
28
			zentaoService.GetCaseIdsBySuite(suite, &caseIdMap)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
29
		} else { // load cases in suite file
30
			scriptService.GetCaseIdsInSuiteFile(suite, &caseIdMap)
31 32
		}

33
		scriptService.GetScriptByIdsInDir(files[0], caseIdMap, &cases)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
34
	} else if task != "" { // load cases from remote by task id
35 36 37
		taskId, err := strconv.Atoi(task)
		if err == nil && taskId > 0 {
			zentaoService.GetCaseIdsByTask(task, &caseIdMap)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
38
		}
39

40
		scriptService.GetScriptByIdsInDir(files[0], caseIdMap, &cases)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
41
	} else if result != "" { // load cases result file
42
		scriptService.GetFailedCasesFromTestResult(result, &caseIdMap)
43

44
		scriptService.GetScriptByIdsInDir(files[0], caseIdMap, &cases)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
45 46
	} else { // find cases in current dir
		for _, file := range files {
47
			scriptService.GetAllScriptsInDir(file, &cases)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
48
		}
49
	}
50

51
	if len(cases) < 1 {
aaronchen2k2k's avatar
readme  
aaronchen2k2k 已提交
52 53 54 55
		logUtils.PrintToCmd(color.RedString("\n" + i118Utils.I118Prt.Sprintf("no_scripts")))
		return
	}

56
	var report = model.TestReport{Env: commonUtils.GetOs(),
57 58
		Pass: 0, Fail: 0, Total: 0, Cases: make([]model.CaseLog, 0)}

59
	testingService.ExeScripts(cases, &report)
60

61
	testingService.CheckResults(cases, &report)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
62
	testingService.Print(report)
63
}