/usr/share/doc/golang-github-gucumber-gucumber-dev/README.md is in golang-github-gucumber-gucumber-dev 0.0~git20160715.0.71608e2-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | # Gucumber
[![GoDoc](http://img.shields.io/badge/godoc-reference-blue.svg)](http://godoc.org/github.com/gucumber/gucumber)
[![Build Status](https://img.shields.io/travis/gucumber/gucumber.svg)](https://travis-ci.org/gucumber/gucumber)
[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/gucumber/gucumber/blob/master/LICENSE.txt)
An implementation of [Cucumber][cuke] BDD-style testing for Go.
# Installing
```sh
$ go get github.com/gucumber/gucumber/cmd/gucumber
```
# Usage
Cucumber tests are made up of plain text ".feature" files and program source
"step definitions", which for Gucumber are written in Go.
## Features
Put [feature files][features] `internal/features/` with whatever organization you
prefer. For example, you might create `internal/features/accounts/login.feature`
with the following text:
```
@login
Feature: Login Support
Scenario: User successfully logs in
Given I have user/pass "foo" / "bar"
And they log into the website with user "foo" and password "bar"
Then the user should be successfully logged in
```
## Step Definitions
Create step definitions to match each step in your feature files. These go
in ".go" files in the same `internal/features/` directory. We might create
`internal/features/accounts/step_definitions.go`:
```go
package accounts
import (
. "github.com/gucumber/gucumber"
)
func init() {
user, pass := "", ""
Before("@login", func() {
// runs before every feature or scenario tagged with @login
generatePassword()
})
Given(`^I have user/pass "(.+?)" / "(.+?)"$`, func(u, p string) {
user, pass = u, p
})
// ...
Then(`^the user should be successfully logged in$`, func() {
if !userIsLoggedIn() {
T.Fail("user should have been logged in")
}
})
}
```
### T?
The `T` value is a [testing.T](http://golang.org/pkg/testing/#T) style
value that represents the test context for each test. It mostly supports
`Errorf(fmt, args...)`, but also supports other convenience methods. See
the [API documentation](http://godoc.org/github.com/gucumber/gucumber#TestingT)
for more information.
## Running
To run your tests, execute:
```sh
$ gucumber
```
You can also specify the path to features in command line arguments:
```sh
$ gucumber path/to/features
```
You can also filter features and scenarios by tags:
```sh
$ gucumber -tags=@login # only run login feature(s)
```
Or:
```sh
$ gucumber -tags=~@slow # ignore all "slow" scenarios
```
# Copyright
This library was written by [Loren Segal][lsegal] in 2015. It is licensed for
use under the [MIT license][mit].
[cuke]: http://cukes.info
[features]: https://github.com/cucumber/cucumber/wiki/Feature-Introduction
[lsegal]: http://gnuu.org
[mit]: http://opensource.org/licenses/MIT
|