do not panic on command error exit
Этот коммит содержится в:
родитель
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")
|
||||||
}
|
}
|
||||||
|
|
7
suite.go
7
suite.go
|
@ -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))
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче