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
|
||||
|
||||
script:
|
||||
# run standard go tests
|
||||
- go vet ./...
|
||||
- go fmt ./...
|
||||
- go test -race -coverprofile=coverage.txt -covermode=atomic
|
||||
- go test -v -race -coverprofile=coverage.txt -covermode=atomic
|
||||
|
||||
after_success:
|
||||
- bash <(curl -s https://codecov.io/bash)
|
||||
|
|
|
@ -49,7 +49,7 @@ Feature: junit formatter
|
|||
| passing | undefined |
|
||||
`
|
||||
|
||||
func TestJUnitSimpleFeature(t *testing.T) {
|
||||
func TestJUnitFormatterOutput(t *testing.T) {
|
||||
feat, err := gherkin.ParseFeature(strings.NewReader(sampleGherkinFeature))
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
|
|
|
@ -4,6 +4,7 @@ import (
|
|||
"fmt"
|
||||
"io"
|
||||
"math"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/DATA-DOG/godog/gherkin"
|
||||
|
@ -57,7 +58,7 @@ func (f *progress) Summary() {
|
|||
if len(f.failed) > 0 {
|
||||
fmt.Fprintln(f.out, "\n--- "+red("Failed steps:")+"\n")
|
||||
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")
|
||||
}
|
||||
}
|
||||
|
|
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")
|
||||
}
|
Загрузка…
Создание таблицы
Сослаться в новой задаче