tests progress formatter output production

Этот коммит содержится в:
gedi 2017-04-28 16:37:36 +03:00
родитель b41f349e3c
коммит 7474489b9c
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 56604CDCCC201556
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 Обычный файл
Просмотреть файл

@ -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")
}