Этот коммит содержится в:
Jayson Smith 2020-02-06 08:48:19 -07:00
родитель 428e6d194b 61be573982
коммит 91cef78eb8
38 изменённых файлов: 222 добавлений и 148 удалений

23
.circleci/config.yml Обычный файл
Просмотреть файл

@ -0,0 +1,23 @@
version: 2.1
executors:
go:
docker:
- image: circleci/golang:1.13
jobs:
test:
working_directory: /go/src/github.com/cucumber/godog
environment:
GO111MODULE: auto
executor: go
steps:
- checkout
- run: cd $GOPATH
- run: go get github.com/cucumber/godog/cmd/godog
- run: go test
workflows:
version: 2
test:
jobs:
- test

Просмотреть файл

@ -1,110 +1,48 @@
# Change LOG
# CHANGE LOG
**2020-01-31**
- change license to MIT and moving project repository to **cucumber**
organization.
All notable changes to this project will be documented in this file.
**2018-11-16**
- added formatter output test suite, currently mainly pretty format
tested.
- these tests, helped to identify some output format issues.
This project adheres to [Semantic Versioning](http://semver.org).
**2018-11-12**
- proper go module support added for `godog` command build.
- added build tests.
This document is formatted according to the principles of [Keep A CHANGELOG](http://keepachangelog.com).
**2018-10-27**
- support go1.11 new compiler and linker changes for **godog** command.
- support go1.11 modules and `go mod` builds.
- `BindFlags` now has a prefix option for flags, so that `go test` command
can avoid flag name collisions.
- `BindFlags` respect default options provided for binding, so that it
does not override predefined options when flags are bind, see #144.
- Minor patch to support tag filters on example tables for
ScenarioOutline.
- Minor patch for pretty printer, when scenario has no steps, comment
possition computation was in panic.
----
**2018-03-04**
- support go1.10 new compiler and linker changes for **godog** command.
## [Unreleased]
**2017-08-31**
- added **BeforeFeature** and **AfterFeature** hooks.
- failed multistep error is now prepended with a parent step text in order
to determine failed nested step.
- pretty format now removes the step definition location package name in
comment next to step if the step definition matches tested package. If
step definition is imported from other package, full package name will
be printed.
### Added
**2017-05-04**
- added **--strict** option in order to fail suite when there are pending
or undefined steps. By default, suite passes and treats pending or
undefined steps as TODOs.
- Added initial CircleCI config. ([jaysonesmith])
**2017-04-29** - **v0.7.0**
- added support for nested steps. From now on, it is possible to return
**godog.Steps** instead of an **error** in the step definition func.
This change introduced few minor changes in **Formatter** interface. Be
sure to adapt the changes if you have custom formatters.
### Changed
**2017-04-27**
- added an option to randomize scenario execution order, so we could
ensure that scenarios do not depend on global state.
- godog was manually sorting feature files by name. Now it just runs them
in given order, you may sort them anyway you like. For example `godog
$(find . -name '*.feature' | sort)`
- Changed code references to DATA-DOG/godog to cucumber/godog to help get things building correctly. ([jaysonesmith])
**2016-10-30** - **v0.6.0**
- added experimental **events** format, this might be used for unified
cucumber formats. But should be not adapted widely, since it is highly
possible that specification will change.
- added **RunWithOptions** method which allows to easily run godog from
**TestMain** without needing to simulate flag arguments. These options
now allows to configure output writer.
- added flag **-o, --output=runner.binary** which only compiles the test
runner executable, but does not execute it.
- **FlagSet** initialization now takes io.Writer as output for help text
output. It was not showing nice colors on windows before.
**--no-colors** option only applies to test run output.
### Deprecated
**2016-06-14** - **v0.5.0**
- godog now uses **go tool compile** and **go tool link** to support
vendor directory dependencies. It also compiles test executable the same
way as standard **go test** utility. With this change, only go
versions from **1.5** are now supported.
### Removed
**2016-06-01**
- parse flags in main command, to show version and help without needing
to compile test package and buildable go sources.
### Fixed
**2016-05-28**
- show nicely formatted called step func name and file path
## [0.8.0]
**2016-05-26**
- pack gherkin dependency in a subpackage to prevent compatibility
conflicts in the future. If recently upgraded, probably you will need to
reference gherkin as `github.com/DATA-DOG/godog/gherkin` instead.
### Added
**2016-05-25**
- refactored test suite build tooling in order to use standard **go test**
tool. Which allows to compile package with godog runner script in **go**
idiomatic way. It also supports all build environment options as usual.
- **godog.Run** now returns an **int** exit status. It was not returning
anything before, so there is no compatibility breaks.
- Added initial CircleCI config. ([jaysonesmith])
**2016-03-04**
- added **junit** compatible output formatter, which prints **xml**
results to **os.Stdout**
- fixed #14 which skipped printing background steps when there was
scenario outline in feature.
### Changed
**2015-07-03**
- changed **godog.Suite** from interface to struct. Context registration should be updated accordingly. The reason
for change: since it exports the same methods and there is no need to mock a function in tests, there is no
obvious reason to keep an interface.
- in order to support running suite concurrently, needed to refactor an entry point of application. The **Run** method
now is a func of godog package which initializes and run the suite (or more suites). Method **New** is removed. This
change made godog a little cleaner.
- renamed **RegisterFormatter** func to **Format** to be more consistent.
- Changed code references to DATA-DOG/godog to cucumber/godog to help get things building correctly. ([jaysonesmith])
### Deprecated
### Removed
### Fixed
<!-- Releases -->
[Unreleased]: https://github.com/cucumber/cucumber/compare/godog/v0.8.0...master
[0.8.0]: https://github.com/cucumber/cucumber/compare/godog/v0.7.13...godog/v0.8.0
<!-- Contributors -->
[jaysonesmith]: https://github.com/jaysonesmith

113
CHANGELOG_OLD.md Обычный файл
Просмотреть файл

@ -0,0 +1,113 @@
# Change LOG
**2020-02-06**
- move to new [CHANGELOG.md](CHANGELOG.md)
**2020-01-31**
- change license to MIT and moving project repository to **cucumber**
organization.
**2018-11-16**
- added formatter output test suite, currently mainly pretty format
tested.
- these tests, helped to identify some output format issues.
**2018-11-12**
- proper go module support added for `godog` command build.
- added build tests.
**2018-10-27**
- support go1.11 new compiler and linker changes for **godog** command.
- support go1.11 modules and `go mod` builds.
- `BindFlags` now has a prefix option for flags, so that `go test` command
can avoid flag name collisions.
- `BindFlags` respect default options provided for binding, so that it
does not override predefined options when flags are bind, see #144.
- Minor patch to support tag filters on example tables for
ScenarioOutline.
- Minor patch for pretty printer, when scenario has no steps, comment
possition computation was in panic.
**2018-03-04**
- support go1.10 new compiler and linker changes for **godog** command.
**2017-08-31**
- added **BeforeFeature** and **AfterFeature** hooks.
- failed multistep error is now prepended with a parent step text in order
to determine failed nested step.
- pretty format now removes the step definition location package name in
comment next to step if the step definition matches tested package. If
step definition is imported from other package, full package name will
be printed.
**2017-05-04**
- added **--strict** option in order to fail suite when there are pending
or undefined steps. By default, suite passes and treats pending or
undefined steps as TODOs.
**2017-04-29** - **v0.7.0**
- added support for nested steps. From now on, it is possible to return
**godog.Steps** instead of an **error** in the step definition func.
This change introduced few minor changes in **Formatter** interface. Be
sure to adapt the changes if you have custom formatters.
**2017-04-27**
- added an option to randomize scenario execution order, so we could
ensure that scenarios do not depend on global state.
- godog was manually sorting feature files by name. Now it just runs them
in given order, you may sort them anyway you like. For example `godog
$(find . -name '*.feature' | sort)`
**2016-10-30** - **v0.6.0**
- added experimental **events** format, this might be used for unified
cucumber formats. But should be not adapted widely, since it is highly
possible that specification will change.
- added **RunWithOptions** method which allows to easily run godog from
**TestMain** without needing to simulate flag arguments. These options
now allows to configure output writer.
- added flag **-o, --output=runner.binary** which only compiles the test
runner executable, but does not execute it.
- **FlagSet** initialization now takes io.Writer as output for help text
output. It was not showing nice colors on windows before.
**--no-colors** option only applies to test run output.
**2016-06-14** - **v0.5.0**
- godog now uses **go tool compile** and **go tool link** to support
vendor directory dependencies. It also compiles test executable the same
way as standard **go test** utility. With this change, only go
versions from **1.5** are now supported.
**2016-06-01**
- parse flags in main command, to show version and help without needing
to compile test package and buildable go sources.
**2016-05-28**
- show nicely formatted called step func name and file path
**2016-05-26**
- pack gherkin dependency in a subpackage to prevent compatibility
conflicts in the future. If recently upgraded, probably you will need to
reference gherkin as `github.com/DATA-DOG/godog/gherkin` instead.
**2016-05-25**
- refactored test suite build tooling in order to use standard **go test**
tool. Which allows to compile package with godog runner script in **go**
idiomatic way. It also supports all build environment options as usual.
- **godog.Run** now returns an **int** exit status. It was not returning
anything before, so there is no compatibility breaks.
**2016-03-04**
- added **junit** compatible output formatter, which prints **xml**
results to **os.Stdout**
- fixed #14 which skipped printing background steps when there was
scenario outline in feature.
**2015-07-03**
- changed **godog.Suite** from interface to struct. Context registration should be updated accordingly. The reason
for change: since it exports the same methods and there is no need to mock a function in tests, there is no
obvious reason to keep an interface.
- in order to support running suite concurrently, needed to refactor an entry point of application. The **Run** method
now is a func of godog package which initializes and run the suite (or more suites). Method **New** is removed. This
change made godog a little cleaner.
- renamed **RegisterFormatter** func to **Format** to be more consistent.

Просмотреть файл

@ -6,8 +6,8 @@ test:
@echo "running all tests"
@go install ./...
@go fmt ./...
@golint github.com/DATA-DOG/godog
@golint github.com/DATA-DOG/godog/cmd/godog
@golint github.com/cucumber/godog
@golint github.com/cucumber/godog/cmd/godog
go vet ./...
go test -race
godog -f progress -c 4
@ -23,7 +23,7 @@ bump:
@if [ -z "$(VERSION)" ]; then echo "Provide version like: 'VERSION=$(VERS) make bump'"; exit 1; fi
@echo "bumping version from: $(VERS) to $(VERSION)"
@sed -i.bak 's/$(VERS)/$(VERSION)/g' godog.go
@sed -i.bak 's/$(VERS)/$(VERSION)/g' examples/api/version.feature
@sed -i.bak 's/$(VERS)/$(VERSION)/g' examples/api/features/version.feature
@find . -name '*.bak' | xargs rm
cover:

Просмотреть файл

@ -1,4 +1,4 @@
[![Build Status](https://travis-ci.org/DATA-DOG/godog.svg?branch=master)](https://travis-ci.org/DATA-DOG/godog)
[![CircleCI](https://circleci.com/gh/cucumber/godog/tree/master.svg?style=svg)](https://circleci.com/gh/cucumber/godog/tree/master)
[![GoDoc](https://godoc.org/github.com/DATA-DOG/godog?status.svg)](https://godoc.org/github.com/DATA-DOG/godog)
[![codecov.io](https://codecov.io/github/DATA-DOG/godog/branch/master/graph/badge.svg)](https://codecov.io/github/DATA-DOG/godog)

Просмотреть файл

@ -9,7 +9,7 @@ import (
var astContextSrc = `package main
import (
"github.com/DATA-DOG/godog"
"github.com/cucumber/godog"
)
func MyContext(s *godog.Suite) {
@ -18,7 +18,7 @@ func MyContext(s *godog.Suite) {
var astTwoContextSrc = `package lib
import (
"github.com/DATA-DOG/godog"
"github.com/cucumber/godog"
)
func ApiContext(s *godog.Suite) {

Просмотреть файл

@ -26,11 +26,11 @@ var gopaths = filepath.SplitList(build.Default.GOPATH)
var goarch = build.Default.GOARCH
var goos = build.Default.GOOS
var godogImportPath = "github.com/DATA-DOG/godog"
var godogImportPath = "github.com/cucumber/godog"
var runnerTemplate = template.Must(template.New("testmain").Parse(`package main
import (
"github.com/DATA-DOG/godog"
"github.com/cucumber/godog"
{{if .Contexts}}_test "{{.ImportPath}}"{{end}}
"os"
)

Просмотреть файл

@ -25,13 +25,13 @@ var (
compiler = filepath.Join(tooldir, "compile")
linker = filepath.Join(tooldir, "link")
gopaths = filepath.SplitList(build.Default.GOPATH)
godogImportPath = "github.com/DATA-DOG/godog"
godogImportPath = "github.com/cucumber/godog"
// godep
runnerTemplate = template.Must(template.New("testmain").Parse(`package main
import (
"github.com/DATA-DOG/godog"
"github.com/cucumber/godog"
{{if .Contexts}}_test "{{.ImportPath}}"{{end}}
{{if .XContexts}}_xtest "{{.ImportPath}}_test"{{end}}
{{if .XContexts}}"testing/internal/testdeps"{{end}}
@ -60,7 +60,7 @@ func main() {
// temp file for import
tempFileTemplate = template.Must(template.New("temp").Parse(`package {{.Name}}
import "github.com/DATA-DOG/godog"
import "github.com/cucumber/godog"
var _ = godog.Version
`))

Просмотреть файл

@ -36,7 +36,7 @@ func TestGodogBuildWithModuleOutsideGopathAndHavingOnlyFeature(t *testing.T) {
t.Fatal(err)
}
if out, err := exec.Command("go", "mod", "edit", "-require", "github.com/DATA-DOG/godog@v0.7.12").CombinedOutput(); err != nil {
if out, err := exec.Command("go", "mod", "edit", "-require", "github.com/cucumber/godog@v0.7.12").CombinedOutput(); err != nil {
t.Log(string(out))
t.Fatal(err)
}

Просмотреть файл

@ -27,7 +27,7 @@ var builderTestFile = `package godogs
import (
"fmt"
"github.com/DATA-DOG/godog"
"github.com/cucumber/godog"
)
func thereAreGodogs(available int) error {
@ -66,7 +66,7 @@ var builderXTestFile = `package godogs_test
import (
"fmt"
"github.com/DATA-DOG/godog"
"github.com/cucumber/godog"
"godogs"
)
@ -275,7 +275,7 @@ func TestGodogBuildWithinGopath(t *testing.T) {
}
defer os.RemoveAll(gopath)
pkg := filepath.Join(gopath, "src", "github.com", "DATA-DOG")
pkg := filepath.Join(gopath, "src", "github.com", "cucumber")
if err := os.MkdirAll(pkg, 0755); err != nil {
t.Fatal(err)
}
@ -325,7 +325,7 @@ func TestGodogBuildWithVendoredGodogAndMod(t *testing.T) {
}
defer os.RemoveAll(gopath)
pkg := filepath.Join(dir, "vendor", "github.com", "DATA-DOG")
pkg := filepath.Join(dir, "vendor", "github.com", "cucumber")
if err := os.MkdirAll(pkg, 0755); err != nil {
t.Fatal(err)
}
@ -371,7 +371,7 @@ func TestGodogBuildWithVendoredGodogWithoutModule(t *testing.T) {
}
defer os.RemoveAll(gopath)
pkg := filepath.Join(dir, "vendor", "github.com", "DATA-DOG")
pkg := filepath.Join(dir, "vendor", "github.com", "cucumber")
if err := os.MkdirAll(pkg, 0755); err != nil {
t.Fatal(err)
}

Просмотреть файл

@ -8,8 +8,8 @@ import (
"path/filepath"
"syscall"
"github.com/DATA-DOG/godog"
"github.com/DATA-DOG/godog/colors"
"github.com/cucumber/godog"
"github.com/cucumber/godog/colors"
)
var parsedStatus int

Просмотреть файл

@ -7,7 +7,7 @@ import (
"strings"
"testing"
"github.com/DATA-DOG/godog/colors"
"github.com/cucumber/godog/colors"
)
type csiState int

Просмотреть файл

@ -6,7 +6,7 @@ import (
"fmt"
"net/http"
"github.com/DATA-DOG/godog"
"github.com/cucumber/godog"
)
func getVersion(w http.ResponseWriter, r *http.Request) {

Просмотреть файл

@ -7,8 +7,8 @@ import (
"net/http/httptest"
"reflect"
"github.com/DATA-DOG/godog"
"github.com/DATA-DOG/godog/gherkin"
"github.com/cucumber/godog"
"github.com/cucumber/godog/gherkin"
)
type apiFeature struct {

Просмотреть файл

@ -10,8 +10,8 @@ import (
"strings"
txdb "github.com/DATA-DOG/go-txdb"
"github.com/DATA-DOG/godog"
"github.com/DATA-DOG/godog/gherkin"
"github.com/cucumber/godog"
"github.com/cucumber/godog/gherkin"
)
func init() {

Просмотреть файл

@ -7,8 +7,8 @@ import (
"os"
"testing"
"github.com/DATA-DOG/godog"
"github.com/DATA-DOG/godog/colors"
"github.com/cucumber/godog"
"github.com/cucumber/godog/colors"
)
var opt = godog.Options{Output: colors.Colored(os.Stdout)}

Просмотреть файл

@ -9,7 +9,7 @@ import (
"strings"
"time"
"github.com/DATA-DOG/godog/colors"
"github.com/cucumber/godog/colors"
)
var descFeaturesArgument = "Optional feature(s) to run. Can be:\n" +

Просмотреть файл

@ -7,7 +7,7 @@ import (
"strings"
"testing"
"github.com/DATA-DOG/godog/colors"
"github.com/cucumber/godog/colors"
)
func TestFlagsShouldRandomizeAndGenerateSeed(t *testing.T) {

4
fmt.go
Просмотреть файл

@ -13,8 +13,8 @@ import (
"time"
"unicode"
"github.com/DATA-DOG/godog/colors"
"github.com/DATA-DOG/godog/gherkin"
"github.com/cucumber/godog/colors"
"github.com/cucumber/godog/gherkin"
)
// some snippet formatting regexps

Просмотреть файл

@ -19,7 +19,7 @@ import (
"strings"
"time"
"github.com/DATA-DOG/godog/gherkin"
"github.com/cucumber/godog/gherkin"
)
func init() {

Просмотреть файл

@ -5,7 +5,7 @@ import (
"fmt"
"io"
"github.com/DATA-DOG/godog/gherkin"
"github.com/cucumber/godog/gherkin"
)
const nanoSec = 1000000

Просмотреть файл

@ -9,7 +9,7 @@ import (
"sync"
"time"
"github.com/DATA-DOG/godog/gherkin"
"github.com/cucumber/godog/gherkin"
)
func init() {

Просмотреть файл

@ -9,8 +9,8 @@ import (
"testing"
"time"
"github.com/DATA-DOG/godog/colors"
"github.com/DATA-DOG/godog/gherkin"
"github.com/cucumber/godog/colors"
"github.com/cucumber/godog/gherkin"
)
var sampleGherkinFeature = `

Просмотреть файл

@ -8,8 +8,8 @@ import (
"strings"
"unicode/utf8"
"github.com/DATA-DOG/godog/colors"
"github.com/DATA-DOG/godog/gherkin"
"github.com/cucumber/godog/colors"
"github.com/cucumber/godog/gherkin"
)
func init() {

Просмотреть файл

@ -7,7 +7,7 @@ import (
"strings"
"sync"
"github.com/DATA-DOG/godog/gherkin"
"github.com/cucumber/godog/gherkin"
)
func init() {

Просмотреть файл

@ -7,8 +7,8 @@ import (
"strings"
"testing"
"github.com/DATA-DOG/godog/colors"
"github.com/DATA-DOG/godog/gherkin"
"github.com/cucumber/godog/colors"
"github.com/cucumber/godog/gherkin"
)
func TestProgressFormatterOutput(t *testing.T) {

Просмотреть файл

@ -30,7 +30,7 @@ func TestPrintingFormatters(t *testing.T) {
suite.Step(`^odd (\d+) and even (\d+) number$`, oddEvenStepDef)
pkg := os.Getenv("GODOG_TESTED_PACKAGE")
os.Setenv("GODOG_TESTED_PACKAGE", "github.com/DATA-DOG/godog")
os.Setenv("GODOG_TESTED_PACKAGE", "github.com/cucumber/godog")
for _, feat := range features {
for name := range AvailableFormatters() {
expectOutputPath := strings.Replace(feat.Path, "features", name, 1)

Просмотреть файл

@ -1,6 +1,6 @@
package godog
import "github.com/DATA-DOG/godog/gherkin"
import "github.com/cucumber/godog/gherkin"
// examples is a helper func to cast gherkin.Examples
// or gherkin.BaseExamples if its empty

5
go.mod
Просмотреть файл

@ -1,9 +1,8 @@
module github.com/DATA-DOG/godog
module github.com/cucumber/godog
go 1.12
go 1.13
require (
github.com/DATA-DOG/go-txdb v0.1.3
github.com/go-sql-driver/mysql v1.5.0
github.com/lib/pq v1.3.0 // indirect
)

3
go.sum
Просмотреть файл

@ -1,3 +1,4 @@
github.com/DATA-DOG/go-txdb v0.1.3 h1:R4v6OuOcy2O147e2zHxU0B4NDtF+INb5R9q/CV7AEMg=
github.com/DATA-DOG/go-txdb v0.1.3/go.mod h1:DhAhxMXZpUJVGnT+p9IbzJoRKvlArO2pkHjnGX7o0n0=
github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=

Просмотреть файл

@ -39,4 +39,4 @@ Godog was inspired by Behat and Cucumber the above description is taken from it'
package godog
// Version of package - based on Semantic Versioning 2.0.0 http://semver.org/
const Version = "v0.7.14"
const Version = "v0.8.0"

2
run.go
Просмотреть файл

@ -10,7 +10,7 @@ import (
"strings"
"sync"
"github.com/DATA-DOG/godog/colors"
"github.com/cucumber/godog/colors"
)
const (

Просмотреть файл

@ -10,8 +10,8 @@ import (
"testing"
"time"
"github.com/DATA-DOG/godog/colors"
"github.com/DATA-DOG/godog/gherkin"
"github.com/cucumber/godog/colors"
"github.com/cucumber/godog/gherkin"
)
func okStep() error {

Просмотреть файл

@ -10,7 +10,7 @@ import (
"strconv"
"strings"
"github.com/DATA-DOG/godog/gherkin"
"github.com/cucumber/godog/gherkin"
)
var matchFuncDefRef = regexp.MustCompile(`\(([^\)]+)\)`)

Просмотреть файл

@ -5,7 +5,7 @@ import (
"strings"
"testing"
"github.com/DATA-DOG/godog/gherkin"
"github.com/cucumber/godog/gherkin"
)
func TestShouldSupportIntTypes(t *testing.T) {

Просмотреть файл

@ -15,7 +15,7 @@ import (
"time"
"unicode/utf8"
"github.com/DATA-DOG/godog/gherkin"
"github.com/cucumber/godog/gherkin"
)
var errorInterface = reflect.TypeOf((*error)(nil)).Elem()

Просмотреть файл

@ -11,7 +11,7 @@ import (
"strconv"
"strings"
"github.com/DATA-DOG/godog/gherkin"
"github.com/cucumber/godog/gherkin"
)
// SuiteContext provides steps for godog suite execution and

Просмотреть файл

@ -4,7 +4,7 @@ import (
"strings"
"time"
"github.com/DATA-DOG/godog/colors"
"github.com/cucumber/godog/colors"
)
var (