run.go 1.9 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"
aaronchen2k2k's avatar
readme  
aaronchen2k2k 已提交
9 10
	i118Utils "github.com/easysoft/zentaoatf/src/utils/i118"
	logUtils "github.com/easysoft/zentaoatf/src/utils/log"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
11
	"github.com/easysoft/zentaoatf/src/utils/vari"
aaronchen2k2k's avatar
readme  
aaronchen2k2k 已提交
12
	"github.com/fatih/color"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
13 14
	"path/filepath"
	"strconv"
15 16
)

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

aaronchen2k2k's avatar
aaronchen2k2k 已提交
21
	vari.RunDir, _ = filepath.Abs("")
aaronchen2k2k's avatar
aaronchen2k2k 已提交
22

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

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

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

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

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

aaronchen2k2k's avatar
aaronchen2k2k 已提交
54
	var report = model.TestReport{Path: vari.ReportDir, Env: commonUtils.GetOs(),
55 56
		Pass: 0, Fail: 0, Total: 0, Cases: make([]model.CaseLog, 0)}

57
	testingService.ExeScripts(cases, &report)
58

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