atf.go 5.3 KB
Newer Older
1 2 3 4
package main

import (
	"flag"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
5
	"fmt"
6
	"github.com/easysoft/zentaoatf/src/action"
7
	"github.com/easysoft/zentaoatf/src/model"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
8
	"github.com/easysoft/zentaoatf/src/ui/page"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
9 10
	"github.com/easysoft/zentaoatf/src/utils/common"
	"github.com/easysoft/zentaoatf/src/utils/config"
11
	"github.com/easysoft/zentaoatf/src/utils/log"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
12
	"github.com/easysoft/zentaoatf/src/utils/vari"
13 14 15 16
	"os"
)

func main() {
17 18
	flagSets := make([]flag.FlagSet, 0)

19
	var language string
20
	var workDir string
21

22 23 24
	var scriptDir string
	var langType string

25 26 27 28
	var singleFile bool
	var zentaoUrl string
	var entityType string
	var entityVal string
aaronchen2k2k's avatar
aaronchen2k2k 已提交
29 30
	var account string
	var password string
31

32
	var path string
33
	var files model.FlagSlice
aaronchen2k2k's avatar
aaronchen2k2k 已提交
34

aaronchen2k2k's avatar
aaronchen2k2k 已提交
35 36
	//mockSet := flag.NewFlagSet("atf mock - Start Mock Server", flag.ContinueOnError)
	//flagSets = append(flagSets, *mockSet)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
37 38 39 40

	cuiSet := flag.NewFlagSet("atf cui - Open CUI Window", flag.ContinueOnError)
	flagSets = append(flagSets, *cuiSet)

41
	preferenceSet := flag.NewFlagSet("atf set - Set preferences", flag.ContinueOnError)
42 43
	flagSets = append(flagSets, *preferenceSet)
	preferenceSet.StringVar(&language, "l", "", "tool language, en or zh")
44
	preferenceSet.StringVar(&workDir, "d", "", "work dir")
45

46 47
	runSet := flag.NewFlagSet("atf run - Run test scripts in specified folder", flag.ContinueOnError)
	flagSets = append(flagSets, *runSet)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
48
	runSet.StringVar(&scriptDir, "d", ".", "Directory that contains test scripts")
49
	runSet.StringVar(&langType, "l", "", "Script Language like python, php etc.")
50
	runSet.Var(&files, "f", "Script files to run, no need langType if specified")
51

52 53
	rerunSet := flag.NewFlagSet("atf rerun - Rerun failed test scripts in specified result", flag.ContinueOnError)
	flagSets = append(flagSets, *rerunSet)
54 55
	rerunSet.StringVar(&path, "p", "", "Test result file path")

aaronchen2k2k's avatar
aaronchen2k2k 已提交
56
	genSet := flag.NewFlagSet("atf gen - Generate test scripts from zentaoService test cases", flag.ContinueOnError)
57
	flagSets = append(flagSets, *genSet)
58
	genSet.StringVar(&zentaoUrl, "u", "", "Zentao project url")
aaronchen2k2k's avatar
aaronchen2k2k 已提交
59
	genSet.StringVar(&entityType, "t", "", "Import type, 'product' or 'task'")
60
	genSet.StringVar(&entityVal, "v", "", "product code or task id")
61
	genSet.StringVar(&langType, "l", "", "Script Language like python, php etc.")
62
	genSet.BoolVar(&singleFile, "s", false, "Save ExpectResult in same file file or not")
aaronchen2k2k's avatar
aaronchen2k2k 已提交
63 64
	genSet.StringVar(&account, "a", "", "Zentao login account")
	genSet.StringVar(&password, "p", "", "Zentao login password")
65

66 67
	listSet := flag.NewFlagSet("atf list - List test scripts", flag.ContinueOnError)
	flagSets = append(flagSets, *listSet)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
68
	listSet.StringVar(&scriptDir, "d", ".", "Directory that contains test scripts")
aaronchen2k2k's avatar
aaronchen2k2k 已提交
69 70
	listSet.StringVar(&langType, "l", "", "Script Language like python, php etc.")

71 72
	viewSet := flag.NewFlagSet("atf view - View test scripts", flag.ContinueOnError)
	flagSets = append(flagSets, *viewSet)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
73
	viewSet.StringVar(&scriptDir, "d", ".", "Directory that contains test scripts")
aaronchen2k2k's avatar
aaronchen2k2k 已提交
74 75 76
	viewSet.StringVar(&langType, "l", "", "Script Language like python, php etc.")
	viewSet.Var(&files, "f", "Script files to view, no need langType if specified")

aaronchen2k2k's avatar
aaronchen2k2k 已提交
77
	if len(os.Args) < 2 {
78
		usage(flagSets)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
79 80 81
		os.Exit(1)
	}

82
	switch os.Args[1] {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
83 84
	//case "mock":
	//	mock.Launch()
aaronchen2k2k's avatar
aaronchen2k2k 已提交
85
	case "cui":
aaronchen2k2k's avatar
aaronchen2k2k 已提交
86
		page.Cui()
87 88
	case "run":
		if err := runSet.Parse(os.Args[2:]); err == nil {
89
			if scriptDir == "" || (langType == "" && len(files) == 0) {
90
				runSet.Usage()
91 92
				os.Exit(1)
			} else {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
93
				scriptDir = commonUtils.ConvertRunDir(scriptDir)
94
				action.Run(scriptDir, files, langType)
95
			}
96
		}
97 98 99 100 101 102 103 104 105
	case "rerun":
		if err := rerunSet.Parse(os.Args[2:]); err == nil {
			if path == "" {
				rerunSet.Usage()
				os.Exit(1)
			} else {
				action.Rerun(path)
			}
		}
106 107
	case "gen":
		if err := genSet.Parse(os.Args[2:]); err == nil {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
108 109
			if zentaoUrl == "" || langType == "" || entityType == "" || entityVal == "" ||
				account == "" || password == "" {
110
				genSet.Usage()
111 112
				os.Exit(1)
			} else {
113
				action.GenerateScriptFromCmd(zentaoUrl, entityType, entityVal, langType, singleFile, account, password)
114
			}
115
		}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
116 117 118 119 120 121
	case "list":
		if err := listSet.Parse(os.Args[2:]); err == nil {
			if scriptDir == "" || langType == "" {
				listSet.Usage()
				os.Exit(1)
			} else {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
122
				scriptDir = commonUtils.ConvertRunDir(scriptDir)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
123 124 125 126 127
				action.List(scriptDir, langType)
			}
		}
	case "view":
		if err := viewSet.Parse(os.Args[2:]); err == nil {
128
			if scriptDir == "" || (langType == "" && len(files) == 0) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
129 130 131
				viewSet.Usage()
				os.Exit(1)
			} else {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
132
				scriptDir = commonUtils.ConvertRunDir(scriptDir)
133
				action.View(scriptDir, files, langType)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
134 135
			}
		}
136 137

	case "set":
138
		if err := preferenceSet.Parse(os.Args[2:]); err == nil {
139
			if language == "" && workDir == "" {
140
				preferenceSet.Usage()
141 142
				os.Exit(1)
			} else {
143
				if language != "" {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
144
					action.Set("lang", language, false)
145 146
				}
				if workDir != "" {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
147
					action.Set("workDir", workDir, false)
148 149
				}

aaronchen2k2k's avatar
aaronchen2k2k 已提交
150
				configUtils.PrintPreference()
151 152
			}
		}
153 154
	//case "reset":
	//	action.Reset()
155 156 157
	default:
		usage(flagSets)
		os.Exit(1)
158
	}
159
}
160

161
func init() {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
162 163
	if len(os.Args) > 1 {
		if os.Args[1] == "cui" {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
164
			vari.RunFromCui = true
aaronchen2k2k's avatar
aaronchen2k2k 已提交
165
		} else {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
166
			vari.RunFromCui = false
aaronchen2k2k's avatar
aaronchen2k2k 已提交
167 168
		}

aaronchen2k2k's avatar
aaronchen2k2k 已提交
169
		configUtils.InitPreference()
aaronchen2k2k's avatar
aaronchen2k2k 已提交
170
	}
171
}
172 173 174 175 176 177

func usage(flagSets []flag.FlagSet) {
	fmt.Printf("Usage of atf: \n")

	for inx, flag := range flagSets {
		if inx == 0 {
178
			logUtils.PrintUsageWithSpaceLine(flag, false)
179
		} else {
180
			logUtils.PrintUsage(flag)
181 182 183
		}
	}

184
	logUtils.PrintSample()
aaronchen2k2k's avatar
aaronchen2k2k 已提交
185

186
}