do not panic on command error exit
Этот коммит содержится в:
родитель
1eac4376b2
коммит
5fdfd4f4b1
3 изменённых файлов: 17 добавлений и 6 удалений
|
@ -1,9 +1,11 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/DATA-DOG/godog"
|
||||
"github.com/shiena/ansicolor"
|
||||
|
@ -14,10 +16,8 @@ func main() {
|
|||
stdout := ansicolor.NewAnsiColorWriter(os.Stdout)
|
||||
stderr := ansicolor.NewAnsiColorWriter(os.Stdout)
|
||||
|
||||
builtFile := os.TempDir() + "/godog_build.go"
|
||||
if err := os.Remove(builtFile); err != nil && !os.IsNotExist(err) {
|
||||
panic(err)
|
||||
}
|
||||
builtFile := fmt.Sprintf("%s/%dgodog.go", os.TempDir(), time.Now().UnixNano())
|
||||
defer os.Remove(builtFile) // comment out for debug
|
||||
|
||||
buf, err := godog.Build()
|
||||
if err != nil {
|
||||
|
@ -35,11 +35,16 @@ func main() {
|
|||
w.Close()
|
||||
|
||||
c := strings.TrimSpace("go run " + builtFile + " " + strings.Join(os.Args[1:], " "))
|
||||
// @TODO: support for windows
|
||||
cmd := exec.Command("sh", "-c", c)
|
||||
cmd.Stdout = stdout
|
||||
cmd.Stderr = stderr
|
||||
|
||||
err = cmd.Run()
|
||||
if err != nil {
|
||||
switch err.(type) {
|
||||
case *exec.ExitError:
|
||||
os.Exit(1)
|
||||
case *exec.Error:
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ type config struct {
|
|||
}
|
||||
|
||||
func init() {
|
||||
// @TODO: colorize flag help output
|
||||
flag.StringVar(&cfg.featuresPath, "features", "features", "Path to feature files")
|
||||
flag.StringVar(&cfg.formatterName, "formatter", "pretty", "Formatter name")
|
||||
}
|
||||
|
|
7
suite.go
7
suite.go
|
@ -1,6 +1,7 @@
|
|||
package godog
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"log"
|
||||
"regexp"
|
||||
)
|
||||
|
@ -24,5 +25,9 @@ func (s *suite) Step(exp *regexp.Regexp, h StepHandler) {
|
|||
}
|
||||
|
||||
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))
|
||||
}
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче