
* Add release assets automation * Use single module with local replace for examples * Update CHANGELOG.md * Allow expected failure for custom formatter example test * Set version value with ldflags * Restore artifacts cleanup
78 строки
1,7 КиБ
Go
78 строки
1,7 КиБ
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/cucumber/godog"
|
|
"github.com/cucumber/godog/colors"
|
|
flag "github.com/spf13/pflag"
|
|
)
|
|
|
|
var opts = godog.Options{
|
|
Output: colors.Colored(os.Stdout),
|
|
Format: "emoji",
|
|
}
|
|
|
|
func init() {
|
|
godog.BindCommandLineFlags("godog.", &opts)
|
|
}
|
|
|
|
func TestMain(m *testing.M) {
|
|
flag.Parse()
|
|
opts.Paths = flag.Args()
|
|
|
|
status := godog.TestSuite{
|
|
Name: "godogs",
|
|
TestSuiteInitializer: InitializeTestSuite,
|
|
ScenarioInitializer: InitializeScenario,
|
|
Options: &opts,
|
|
}.Run()
|
|
|
|
// This example test is expected to fail to showcase custom formatting, suppressing status.
|
|
if status != 1 {
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
|
|
func thereAreGodogs(available int) error {
|
|
Godogs = available
|
|
return nil
|
|
}
|
|
|
|
func iEat(num int) error {
|
|
if Godogs < num {
|
|
return fmt.Errorf("you cannot eat %d godogs, there are %d available", num, Godogs)
|
|
}
|
|
Godogs -= num
|
|
return nil
|
|
}
|
|
|
|
func thereShouldBeRemaining(remaining int) error {
|
|
if Godogs != remaining {
|
|
return fmt.Errorf("expected %d godogs to be remaining, but there is %d", remaining, Godogs)
|
|
}
|
|
return nil
|
|
}
|
|
func thisStepIsPending() error {
|
|
return godog.ErrPending
|
|
}
|
|
|
|
func InitializeTestSuite(ctx *godog.TestSuiteContext) {
|
|
ctx.BeforeSuite(func() { Godogs = 0 })
|
|
}
|
|
|
|
func InitializeScenario(ctx *godog.ScenarioContext) {
|
|
ctx.Before(func(ctx context.Context, sc *godog.Scenario) (context.Context, error) {
|
|
Godogs = 0 // clean the state before every scenario
|
|
|
|
return ctx, nil
|
|
})
|
|
|
|
ctx.Step(`^there are (\d+) godogs$`, thereAreGodogs)
|
|
ctx.Step(`^I eat (\d+)$`, iEat)
|
|
ctx.Step(`^there should be (\d+) remaining$`, thereShouldBeRemaining)
|
|
ctx.Step(`^this step is pending$`, thisStepIsPending)
|
|
}
|