do not panic on command error exit

Этот коммит содержится в:
gedi 2015-06-12 16:58:45 +03:00
родитель 1eac4376b2
коммит 5fdfd4f4b1
3 изменённых файлов: 17 добавлений и 6 удалений

Просмотреть файл

@ -1,9 +1,11 @@
package main package main
import ( import (
"fmt"
"os" "os"
"os/exec" "os/exec"
"strings" "strings"
"time"
"github.com/DATA-DOG/godog" "github.com/DATA-DOG/godog"
"github.com/shiena/ansicolor" "github.com/shiena/ansicolor"
@ -14,10 +16,8 @@ func main() {
stdout := ansicolor.NewAnsiColorWriter(os.Stdout) stdout := ansicolor.NewAnsiColorWriter(os.Stdout)
stderr := ansicolor.NewAnsiColorWriter(os.Stdout) stderr := ansicolor.NewAnsiColorWriter(os.Stdout)
builtFile := os.TempDir() + "/godog_build.go" builtFile := fmt.Sprintf("%s/%dgodog.go", os.TempDir(), time.Now().UnixNano())
if err := os.Remove(builtFile); err != nil && !os.IsNotExist(err) { defer os.Remove(builtFile) // comment out for debug
panic(err)
}
buf, err := godog.Build() buf, err := godog.Build()
if err != nil { if err != nil {
@ -35,11 +35,16 @@ func main() {
w.Close() w.Close()
c := strings.TrimSpace("go run " + builtFile + " " + strings.Join(os.Args[1:], " ")) c := strings.TrimSpace("go run " + builtFile + " " + strings.Join(os.Args[1:], " "))
// @TODO: support for windows
cmd := exec.Command("sh", "-c", c) cmd := exec.Command("sh", "-c", c)
cmd.Stdout = stdout cmd.Stdout = stdout
cmd.Stderr = stderr cmd.Stderr = stderr
err = cmd.Run() err = cmd.Run()
if err != nil { switch err.(type) {
case *exec.ExitError:
os.Exit(1)
case *exec.Error:
panic(err) panic(err)
} }
} }

Просмотреть файл

@ -18,6 +18,7 @@ type config struct {
} }
func init() { func init() {
// @TODO: colorize flag help output
flag.StringVar(&cfg.featuresPath, "features", "features", "Path to feature files") flag.StringVar(&cfg.featuresPath, "features", "features", "Path to feature files")
flag.StringVar(&cfg.formatterName, "formatter", "pretty", "Formatter name") flag.StringVar(&cfg.formatterName, "formatter", "pretty", "Formatter name")
} }

Просмотреть файл

@ -1,6 +1,7 @@
package godog package godog
import ( import (
"flag"
"log" "log"
"regexp" "regexp"
) )
@ -24,5 +25,9 @@ func (s *suite) Step(exp *regexp.Regexp, h StepHandler) {
} }
func (s *suite) Run() { func (s *suite) Run() {
log.Println("running godoc, num registered steps:", len(s.steps)) if !flag.Parsed() {
flag.Parse()
}
log.Println("running godoc, num registered steps:", len(s.steps), "color test:", cl("red", red))
log.Println("will read features in path:", cl(cfg.featuresPath, yellow))
} }