parse flags in runner command, to be able to show version or help, closes #34
Этот коммит содержится в:
родитель
f9eab9da27
коммит
9bde6a2b9b
6 изменённых файлов: 33 добавлений и 9 удалений
|
@ -157,6 +157,10 @@ See implementation examples:
|
||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
|
|
||||||
|
**2016-06-01**
|
||||||
|
- parse flags in main command, to show version and help without needing
|
||||||
|
to compile test package and buildable go sources.
|
||||||
|
|
||||||
**2016-05-28**
|
**2016-05-28**
|
||||||
- show nicely formatted called step func name and file path
|
- show nicely formatted called step func name and file path
|
||||||
|
|
||||||
|
|
|
@ -17,11 +17,11 @@ import (
|
||||||
var statusMatch = regexp.MustCompile("^exit status (\\d+)")
|
var statusMatch = regexp.MustCompile("^exit status (\\d+)")
|
||||||
var parsedStatus int
|
var parsedStatus int
|
||||||
|
|
||||||
|
var stdout = createAnsiColorWriter(os.Stdout)
|
||||||
|
var stderr = createAnsiColorWriter(statusOutputFilter(os.Stderr))
|
||||||
|
|
||||||
func buildAndRun() (int, error) {
|
func buildAndRun() (int, error) {
|
||||||
var status int
|
var status int
|
||||||
// will support Ansi colors for windows
|
|
||||||
stdout := createAnsiColorWriter(os.Stdout)
|
|
||||||
stderr := createAnsiColorWriter(statusOutputFilter(os.Stderr))
|
|
||||||
|
|
||||||
dir := fmt.Sprintf(filepath.Join("%s", "godog-%d"), os.TempDir(), time.Now().UnixNano())
|
dir := fmt.Sprintf(filepath.Join("%s", "godog-%d"), os.TempDir(), time.Now().UnixNano())
|
||||||
err := godog.Build(dir)
|
err := godog.Build(dir)
|
||||||
|
@ -75,9 +75,25 @@ func buildAndRun() (int, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
var vers, defs, sof bool
|
||||||
|
var tags, format string
|
||||||
|
var concurrency int
|
||||||
|
|
||||||
|
flagSet := godog.FlagSet(&format, &tags, &defs, &sof, &vers, &concurrency)
|
||||||
|
err := flagSet.Parse(os.Args[1:])
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintln(stderr, err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
if vers {
|
||||||
|
fmt.Fprintln(stdout, "Godog version is", godog.Version)
|
||||||
|
os.Exit(0) // should it be 0?
|
||||||
|
}
|
||||||
|
|
||||||
status, err := buildAndRun()
|
status, err := buildAndRun()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintln(os.Stderr, err)
|
fmt.Fprintln(stderr, err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
// it might be a case, that status might not be resolved
|
// it might be a case, that status might not be resolved
|
||||||
|
|
|
@ -20,6 +20,6 @@ Feature: get version
|
||||||
And the response should match json:
|
And the response should match json:
|
||||||
"""
|
"""
|
||||||
{
|
{
|
||||||
"version": "v0.4.2"
|
"version": "v0.4.3"
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
|
|
8
flags.go
8
flags.go
|
@ -5,7 +5,8 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
)
|
)
|
||||||
|
|
||||||
func flags(format, tags *string, defs, sof, vers *bool, cl *int) *flag.FlagSet {
|
// FlagSet allows to manage flags by external suite runner
|
||||||
|
func FlagSet(format, tags *string, defs, sof, vers *bool, cl *int) *flag.FlagSet {
|
||||||
set := flag.NewFlagSet("godog", flag.ExitOnError)
|
set := flag.NewFlagSet("godog", flag.ExitOnError)
|
||||||
set.StringVar(format, "format", "pretty", "")
|
set.StringVar(format, "format", "pretty", "")
|
||||||
set.StringVar(format, "f", "pretty", "")
|
set.StringVar(format, "f", "pretty", "")
|
||||||
|
@ -32,7 +33,10 @@ func usage() {
|
||||||
|
|
||||||
// --- GENERAL ---
|
// --- GENERAL ---
|
||||||
fmt.Println(cl("Usage:", yellow))
|
fmt.Println(cl("Usage:", yellow))
|
||||||
fmt.Println(s(2) + "godog [options] [<features>]\n")
|
fmt.Printf(s(2) + "godog [options] [<features>]\n\n")
|
||||||
|
// description
|
||||||
|
fmt.Println("Builds a test package and runs given feature files.")
|
||||||
|
fmt.Printf("Command should be run from the directory of tested package and contain buildable go source.\n\n")
|
||||||
|
|
||||||
// --- ARGUMENTS ---
|
// --- ARGUMENTS ---
|
||||||
fmt.Println(cl("Arguments:", yellow))
|
fmt.Println(cl("Arguments:", yellow))
|
||||||
|
|
2
godog.go
2
godog.go
|
@ -44,4 +44,4 @@ Godog was inspired by Behat and the above description is taken from it's documen
|
||||||
package godog
|
package godog
|
||||||
|
|
||||||
// Version of package - based on Semantic Versioning 2.0.0 http://semver.org/
|
// Version of package - based on Semantic Versioning 2.0.0 http://semver.org/
|
||||||
const Version = "v0.4.2"
|
const Version = "v0.4.3"
|
||||||
|
|
2
run.go
2
run.go
|
@ -56,7 +56,7 @@ func Run(contextInitializer func(suite *Suite)) int {
|
||||||
var vers, defs, sof bool
|
var vers, defs, sof bool
|
||||||
var tags, format string
|
var tags, format string
|
||||||
var concurrency int
|
var concurrency int
|
||||||
flagSet := flags(&format, &tags, &defs, &sof, &vers, &concurrency)
|
flagSet := FlagSet(&format, &tags, &defs, &sof, &vers, &concurrency)
|
||||||
err := flagSet.Parse(os.Args[1:])
|
err := flagSet.Parse(os.Args[1:])
|
||||||
fatal(err)
|
fatal(err)
|
||||||
|
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче