tests progress formatter output production
Этот коммит содержится в:
родитель
b41f349e3c
коммит
7474489b9c
4 изменённых файлов: 94 добавлений и 4 удалений
|
@ -10,10 +10,9 @@ go_import_path: github.com/DATA-DOG/godog
|
||||||
install: go install github.com/DATA-DOG/godog/cmd/godog
|
install: go install github.com/DATA-DOG/godog/cmd/godog
|
||||||
|
|
||||||
script:
|
script:
|
||||||
# run standard go tests
|
|
||||||
- go vet ./...
|
- go vet ./...
|
||||||
- go fmt ./...
|
- go fmt ./...
|
||||||
- go test -race -coverprofile=coverage.txt -covermode=atomic
|
- go test -v -race -coverprofile=coverage.txt -covermode=atomic
|
||||||
|
|
||||||
after_success:
|
after_success:
|
||||||
- bash <(curl -s https://codecov.io/bash)
|
- bash <(curl -s https://codecov.io/bash)
|
||||||
|
|
|
@ -49,7 +49,7 @@ Feature: junit formatter
|
||||||
| passing | undefined |
|
| passing | undefined |
|
||||||
`
|
`
|
||||||
|
|
||||||
func TestJUnitSimpleFeature(t *testing.T) {
|
func TestJUnitFormatterOutput(t *testing.T) {
|
||||||
feat, err := gherkin.ParseFeature(strings.NewReader(sampleGherkinFeature))
|
feat, err := gherkin.ParseFeature(strings.NewReader(sampleGherkinFeature))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected error: %v", err)
|
t.Fatalf("unexpected error: %v", err)
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"math"
|
"math"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/DATA-DOG/godog/gherkin"
|
"github.com/DATA-DOG/godog/gherkin"
|
||||||
|
@ -57,7 +58,7 @@ func (f *progress) Summary() {
|
||||||
if len(f.failed) > 0 {
|
if len(f.failed) > 0 {
|
||||||
fmt.Fprintln(f.out, "\n--- "+red("Failed steps:")+"\n")
|
fmt.Fprintln(f.out, "\n--- "+red("Failed steps:")+"\n")
|
||||||
for _, fail := range f.failed {
|
for _, fail := range f.failed {
|
||||||
fmt.Fprintln(f.out, s(4)+red(fail.step.Keyword+" "+fail.step.Text)+black(" # "+fail.line()))
|
fmt.Fprintln(f.out, s(4)+red(strings.TrimSpace(fail.step.Keyword)+" "+fail.step.Text)+black(" # "+fail.line()))
|
||||||
fmt.Fprintln(f.out, s(6)+red("Error: ")+redb(fmt.Sprintf("%+v", fail.err))+"\n")
|
fmt.Fprintln(f.out, s(6)+red("Error: ")+redb(fmt.Sprintf("%+v", fail.err))+"\n")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
90
fmt_progress_test.go
Обычный файл
90
fmt_progress_test.go
Обычный файл
|
@ -0,0 +1,90 @@
|
||||||
|
package godog
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/DATA-DOG/godog/colors"
|
||||||
|
"github.com/DATA-DOG/godog/gherkin"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestProgressFormatterOutput(t *testing.T) {
|
||||||
|
feat, err := gherkin.ParseFeature(strings.NewReader(sampleGherkinFeature))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var buf bytes.Buffer
|
||||||
|
w := colors.Uncolored(&buf)
|
||||||
|
s := &Suite{
|
||||||
|
fmt: progressFunc("progress", w),
|
||||||
|
features: []*feature{&feature{
|
||||||
|
Path: "any.feature",
|
||||||
|
Feature: feat,
|
||||||
|
Content: []byte(sampleGherkinFeature),
|
||||||
|
}},
|
||||||
|
}
|
||||||
|
|
||||||
|
s.Step(`^passing$`, func() error { return nil })
|
||||||
|
s.Step(`^failing$`, func() error { return fmt.Errorf("errored") })
|
||||||
|
s.Step(`^pending$`, func() error { return ErrPending })
|
||||||
|
|
||||||
|
// var zeroDuration time.Duration
|
||||||
|
expected := `
|
||||||
|
...F-.P-.UU.....F..P..U 23
|
||||||
|
|
||||||
|
|
||||||
|
--- Failed steps:
|
||||||
|
|
||||||
|
When failing # any.feature:11
|
||||||
|
Error: errored
|
||||||
|
|
||||||
|
When failing # any.feature:24
|
||||||
|
Error: errored
|
||||||
|
|
||||||
|
|
||||||
|
8 scenarios (2 passed, 2 failed, 2 pending, 2 undefined)
|
||||||
|
23 steps (14 passed, 2 failed, 2 pending, 3 undefined, 2 skipped)
|
||||||
|
%s
|
||||||
|
|
||||||
|
Randomized with seed: %s
|
||||||
|
|
||||||
|
You can implement step definitions for undefined steps with these snippets:
|
||||||
|
|
||||||
|
func undefined() error {
|
||||||
|
return godog.ErrPending
|
||||||
|
}
|
||||||
|
|
||||||
|
func nextUndefined() error {
|
||||||
|
return godog.ErrPending
|
||||||
|
}
|
||||||
|
|
||||||
|
func FeatureContext(s *godog.Suite) {
|
||||||
|
s.Step(` + "`^undefined$`" + `, undefined)
|
||||||
|
s.Step(` + "`^next undefined$`" + `, nextUndefined)
|
||||||
|
}`
|
||||||
|
|
||||||
|
var zeroDuration time.Duration
|
||||||
|
expected = fmt.Sprintf(expected, zeroDuration.String(), os.Getenv("GODOG_SEED"))
|
||||||
|
expected = trimAllLines(expected)
|
||||||
|
|
||||||
|
s.run()
|
||||||
|
s.fmt.Summary()
|
||||||
|
|
||||||
|
actual := trimAllLines(buf.String())
|
||||||
|
if actual != expected {
|
||||||
|
t.Fatalf("expected output does not match: %s", actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func trimAllLines(s string) string {
|
||||||
|
var lines []string
|
||||||
|
for _, ln := range strings.Split(strings.TrimSpace(s), "\n") {
|
||||||
|
lines = append(lines, strings.TrimSpace(ln))
|
||||||
|
}
|
||||||
|
return strings.Join(lines, "\n")
|
||||||
|
}
|
Загрузка…
Создание таблицы
Сослаться в новой задаче