run.go 2.5 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
aaronchen2k2k 已提交
9 10
	configUtils "github.com/easysoft/zentaoatf/src/utils/config"
	constant "github.com/easysoft/zentaoatf/src/utils/const"
11
	fileUtils "github.com/easysoft/zentaoatf/src/utils/file"
aaronchen2k2k's avatar
readme  
aaronchen2k2k 已提交
12 13
	i118Utils "github.com/easysoft/zentaoatf/src/utils/i118"
	logUtils "github.com/easysoft/zentaoatf/src/utils/log"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
14
	"github.com/easysoft/zentaoatf/src/utils/vari"
15
	zentaoUtils "github.com/easysoft/zentaoatf/src/utils/zentao"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
16
	"path"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
17
	"strconv"
18 19
)

aaronchen2k2k's avatar
aaronchen2k2k 已提交
20
func Run(files []string, suiteIdStr string, taskIdStr string) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
21 22
	caseIdMap := map[int]string{}
	cases := make([]string, 0)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
23

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

aaronchen2k2k's avatar
aaronchen2k2k 已提交
27 28 29 30 31 32
	if suiteIdStr != "" {
		suiteId, err := strconv.Atoi(suiteIdStr)
		if err == nil && suiteId > 0 {

			configUtils.CheckConfigForRequest()
			zentaoService.GetCaseIdsBySuite(suiteIdStr, &caseIdMap)
33 34
		}

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

			configUtils.CheckConfigForRequest()
			zentaoService.GetCaseIdsByTask(taskIdStr, &caseIdMap)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
42
		}
43

44
		scriptService.GetScriptByIdsInDir(files[0], caseIdMap, &cases)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
45
	} else { // no suiteId, taskId param
46

aaronchen2k2k's avatar
aaronchen2k2k 已提交
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
		if len(files) > 1 && fileUtils.IsDir(files[0]) &&
			path.Ext(files[1]) == constant.ExtNameSuite { // run suite file

			scriptService.GetCaseIdsInSuiteFile(files[1], &caseIdMap)
			scriptService.GetScriptByIdsInDir(files[0], caseIdMap, &cases)

		} else if len(files) > 1 && fileUtils.IsDir(files[0]) &&
			path.Ext(files[1]) == constant.ExtNameResult { // run result file

			scriptService.GetFailedCasesFromTestResult(files[1], &caseIdMap)
			scriptService.GetScriptByIdsInDir(files[0], caseIdMap, &cases)

		} else { // run with dir and script files
			for _, file := range files {
				scriptService.GetAllScriptsInDir(file, &cases)
			}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
63
		}
64
	}
65

66
	if len(cases) < 1 {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
67
		logUtils.PrintToCmd("\n"+i118Utils.I118Prt.Sprintf("no_scripts")+"\n", -1)
aaronchen2k2k's avatar
readme  
aaronchen2k2k 已提交
68 69 70
		return
	}

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

74
	testingService.ExeScripts(cases, &report)
75

aaronchen2k2k's avatar
aaronchen2k2k 已提交
76
	testingService.Report(report)
77
}