summaryrefslogtreecommitdiff
path: root/vendor/github.com
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2020-06-15 10:39:58 -0400
committerGitHub <noreply@github.com>2020-06-15 10:39:58 -0400
commit298d622a0c2db1e822d6e31c621f8be1a5e196c8 (patch)
treeaca517a42eb2dd2a5e504c64f267210094c0afb3 /vendor/github.com
parent4fe573edfc47a42c7e587311adc21a49eac23424 (diff)
parent68eca3c19e010882f7c82b70437f4edbbbfeca3d (diff)
downloadpodman-298d622a0c2db1e822d6e31c621f8be1a5e196c8.tar.gz
podman-298d622a0c2db1e822d6e31c621f8be1a5e196c8.tar.bz2
podman-298d622a0c2db1e822d6e31c621f8be1a5e196c8.zip
Merge pull request #6607 from containers/dependabot/go_modules/github.com/onsi/ginkgo-1.13.0
Bump github.com/onsi/ginkgo from 1.12.3 to 1.13.0
Diffstat (limited to 'vendor/github.com')
-rw-r--r--vendor/github.com/onsi/ginkgo/CHANGELOG.md13
-rw-r--r--vendor/github.com/onsi/ginkgo/README.md29
-rw-r--r--vendor/github.com/onsi/ginkgo/config/config.go2
-rw-r--r--vendor/github.com/onsi/ginkgo/extensions/table/table.go19
-rw-r--r--vendor/github.com/onsi/ginkgo/extensions/table/table_entry.go94
-rw-r--r--vendor/github.com/onsi/ginkgo/ginkgo/generate_command.go8
-rw-r--r--vendor/github.com/onsi/ginkgo/ginkgo/main.go4
-rw-r--r--vendor/github.com/onsi/ginkgo/go.mod1
-rw-r--r--vendor/github.com/onsi/ginkgo/go.sum2
-rw-r--r--vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_darwin.go11
-rw-r--r--vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_dragonfly.go11
-rw-r--r--vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_freebsd.go11
-rw-r--r--vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_linux.go12
-rw-r--r--vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_linux_mips64le.go12
-rw-r--r--vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_netbsd.go11
-rw-r--r--vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_openbsd.go11
-rw-r--r--vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_solaris.go11
-rw-r--r--vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_unix.go7
18 files changed, 230 insertions, 39 deletions
diff --git a/vendor/github.com/onsi/ginkgo/CHANGELOG.md b/vendor/github.com/onsi/ginkgo/CHANGELOG.md
index 395fa90f4..03ce58a46 100644
--- a/vendor/github.com/onsi/ginkgo/CHANGELOG.md
+++ b/vendor/github.com/onsi/ginkgo/CHANGELOG.md
@@ -1,3 +1,16 @@
+## 1.13.0
+
+### Features
+- Add a version of table.Entry that allows dumping the entry parameters. (#689) [21eaef2]
+
+### Fixes
+- Ensure integration tests pass in an environment sans GOPATH [606fba2]
+- Add books package (#568) [fc0e44e]
+- doc(readme): installation via "tools package" (#677) [83bb20e]
+- Solve the undefined: unix.Dup2 compile error on mips64le (#680) [0624f75]
+- Import package without dot (#687) [6321024]
+- Fix integration tests to stop require GOPATH (#686) [a912ec5]
+
## 1.12.3
### Fixes
diff --git a/vendor/github.com/onsi/ginkgo/README.md b/vendor/github.com/onsi/ginkgo/README.md
index ddb0cd882..fab114580 100644
--- a/vendor/github.com/onsi/ginkgo/README.md
+++ b/vendor/github.com/onsi/ginkgo/README.md
@@ -75,15 +75,36 @@ Ginkgo is best paired with Gomega. Learn more about Gomega [here](https://onsi.
Agouti allows you run WebDriver integration tests. Learn more about Agouti [here](https://agouti.org)
-## Set Me Up!
+## Getting Started
-You'll need the Go command-line tools. Ginkgo is tested with Go 1.6+, but preferably you should get the latest. Follow the [installation instructions](https://golang.org/doc/install) if you don't have it installed.
+You'll need the Go command-line tools. Follow the [installation instructions](https://golang.org/doc/install) if you don't have it installed.
+### Global installation
+To install the Ginkgo command line interface into the `$PATH` (actually to `$GOBIN`):
```bash
+go get -u github.com/onsi/ginkgo/ginkgo
+```
+
+### Go module ["tools package"](https://github.com/golang/go/issues/25922):
+Create (or update) a file called `tools/tools.go` with the following contents:
+```go
+// +build tools
+
+package tools
-go get -u github.com/onsi/ginkgo/ginkgo # installs the ginkgo CLI
-go get -u github.com/onsi/gomega/... # fetches the matcher library
+import (
+ _ "github.com/onsi/ginkgo"
+)
+// This file imports packages that are used when running go generate, or used
+// during the development process but not otherwise depended on by built code.
+```
+The Ginkgo command can then be run via `go run github.com/onsi/ginkgo/ginkgo`.
+This approach allows the version of Ginkgo to be maintained under source control for reproducible results,
+and is well suited to automated test pipelines.
+
+### Bootstrapping
+```bash
cd path/to/package/you/want/to/test
ginkgo bootstrap # set up a new ginkgo suite
diff --git a/vendor/github.com/onsi/ginkgo/config/config.go b/vendor/github.com/onsi/ginkgo/config/config.go
index 5d4b35732..cf22a8e44 100644
--- a/vendor/github.com/onsi/ginkgo/config/config.go
+++ b/vendor/github.com/onsi/ginkgo/config/config.go
@@ -20,7 +20,7 @@ import (
"fmt"
)
-const VERSION = "1.12.3"
+const VERSION = "1.13.0"
type GinkgoConfigType struct {
RandomSeed int64
diff --git a/vendor/github.com/onsi/ginkgo/extensions/table/table.go b/vendor/github.com/onsi/ginkgo/extensions/table/table.go
index 2ed5314f2..4b0027807 100644
--- a/vendor/github.com/onsi/ginkgo/extensions/table/table.go
+++ b/vendor/github.com/onsi/ginkgo/extensions/table/table.go
@@ -42,6 +42,25 @@ Under the hood, `DescribeTable` simply generates a new Ginkgo `Describe`. Each
It's important to understand that the `Describe`s and `It`s are generated at evaluation time (i.e. when Ginkgo constructs the tree of tests and before the tests run).
Individual Entries can be focused (with FEntry) or marked pending (with PEntry or XEntry). In addition, the entire table can be focused or marked pending with FDescribeTable and PDescribeTable/XDescribeTable.
+
+A description function can be passed to Entry in place of the description. The function is then fed with the entry parameters to generate the description of the It corresponding to that particular Entry.
+
+For example:
+
+ describe := func(desc string) func(int, int, bool) string {
+ return func(x, y int, expected bool) string {
+ return fmt.Sprintf("%s x=%d y=%d expected:%t", desc, x, y, expected)
+ }
+ }
+
+ DescribeTable("a simple table",
+ func(x int, y int, expected bool) {
+ Ω(x > y).Should(Equal(expected))
+ },
+ Entry(describe("x > y"), 1, 0, true),
+ Entry(describe("x == y"), 0, 0, false),
+ Entry(describe("x < y"), 0, 1, false),
+ )
*/
func DescribeTable(description string, itBody interface{}, entries ...TableEntry) bool {
describeTable(description, itBody, entries, types.FlagTypeNone)
diff --git a/vendor/github.com/onsi/ginkgo/extensions/table/table_entry.go b/vendor/github.com/onsi/ginkgo/extensions/table/table_entry.go
index 1a919a1fe..783e7964a 100644
--- a/vendor/github.com/onsi/ginkgo/extensions/table/table_entry.go
+++ b/vendor/github.com/onsi/ginkgo/extensions/table/table_entry.go
@@ -1,6 +1,7 @@
package table
import (
+ "fmt"
"reflect"
"github.com/onsi/ginkgo/internal/codelocation"
@@ -12,7 +13,7 @@ import (
TableEntry represents an entry in a table test. You generally use the `Entry` constructor.
*/
type TableEntry struct {
- Description string
+ Description interface{}
Parameters []interface{}
Pending bool
Focused bool
@@ -26,33 +27,56 @@ func (t TableEntry) generateIt(itBody reflect.Value) {
t.codeLocation = codelocation.New(5)
}
- if t.Pending {
- global.Suite.PushItNode(t.Description, func() {}, types.FlagTypePending, t.codeLocation, 0)
- return
+ var description string
+ descriptionValue := reflect.ValueOf(t.Description)
+ switch descriptionValue.Kind() {
+ case reflect.String:
+ description = descriptionValue.String()
+ case reflect.Func:
+ values := castParameters(descriptionValue, t.Parameters)
+ res := descriptionValue.Call(values)
+ if len(res) != 1 {
+ panic(fmt.Sprintf("The describe function should return only a value, returned %d", len(res)))
+ }
+ if res[0].Kind() != reflect.String {
+ panic(fmt.Sprintf("The describe function should return a string, returned %#v", res[0]))
+ }
+ description = res[0].String()
+ default:
+ panic(fmt.Sprintf("Description can either be a string or a function, got %#v", descriptionValue))
}
- values := make([]reflect.Value, len(t.Parameters))
- iBodyType := itBody.Type()
- for i, param := range t.Parameters {
- if param == nil {
- inType := iBodyType.In(i)
- values[i] = reflect.Zero(inType)
- } else {
- values[i] = reflect.ValueOf(param)
- }
+ if t.Pending {
+ global.Suite.PushItNode(description, func() {}, types.FlagTypePending, t.codeLocation, 0)
+ return
}
+ values := castParameters(itBody, t.Parameters)
body := func() {
itBody.Call(values)
}
if t.Focused {
- global.Suite.PushItNode(t.Description, body, types.FlagTypeFocused, t.codeLocation, global.DefaultTimeout)
+ global.Suite.PushItNode(description, body, types.FlagTypeFocused, t.codeLocation, global.DefaultTimeout)
} else {
- global.Suite.PushItNode(t.Description, body, types.FlagTypeNone, t.codeLocation, global.DefaultTimeout)
+ global.Suite.PushItNode(description, body, types.FlagTypeNone, t.codeLocation, global.DefaultTimeout)
}
}
+func castParameters(function reflect.Value, parameters []interface{}) []reflect.Value {
+ res := make([]reflect.Value, len(parameters))
+ funcType := function.Type()
+ for i, param := range parameters {
+ if param == nil {
+ inType := funcType.In(i)
+ res[i] = reflect.Zero(inType)
+ } else {
+ res[i] = reflect.ValueOf(param)
+ }
+ }
+ return res
+}
+
/*
Entry constructs a TableEntry.
@@ -61,27 +85,51 @@ Subsequent parameters are saved off and sent to the callback passed in to `Descr
Each Entry ends up generating an individual Ginkgo It.
*/
-func Entry(description string, parameters ...interface{}) TableEntry {
- return TableEntry{description, parameters, false, false, codelocation.New(1)}
+func Entry(description interface{}, parameters ...interface{}) TableEntry {
+ return TableEntry{
+ Description: description,
+ Parameters: parameters,
+ Pending: false,
+ Focused: false,
+ codeLocation: codelocation.New(1),
+ }
}
/*
You can focus a particular entry with FEntry. This is equivalent to FIt.
*/
-func FEntry(description string, parameters ...interface{}) TableEntry {
- return TableEntry{description, parameters, false, true, codelocation.New(1)}
+func FEntry(description interface{}, parameters ...interface{}) TableEntry {
+ return TableEntry{
+ Description: description,
+ Parameters: parameters,
+ Pending: false,
+ Focused: true,
+ codeLocation: codelocation.New(1),
+ }
}
/*
You can mark a particular entry as pending with PEntry. This is equivalent to PIt.
*/
-func PEntry(description string, parameters ...interface{}) TableEntry {
- return TableEntry{description, parameters, true, false, codelocation.New(1)}
+func PEntry(description interface{}, parameters ...interface{}) TableEntry {
+ return TableEntry{
+ Description: description,
+ Parameters: parameters,
+ Pending: true,
+ Focused: false,
+ codeLocation: codelocation.New(1),
+ }
}
/*
You can mark a particular entry as pending with XEntry. This is equivalent to XIt.
*/
-func XEntry(description string, parameters ...interface{}) TableEntry {
- return TableEntry{description, parameters, true, false, codelocation.New(1)}
+func XEntry(description interface{}, parameters ...interface{}) TableEntry {
+ return TableEntry{
+ Description: description,
+ Parameters: parameters,
+ Pending: true,
+ Focused: false,
+ codeLocation: codelocation.New(1),
+ }
}
diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/generate_command.go b/vendor/github.com/onsi/ginkgo/ginkgo/generate_command.go
index c0a39237e..4099f99a8 100644
--- a/vendor/github.com/onsi/ginkgo/ginkgo/generate_command.go
+++ b/vendor/github.com/onsi/ginkgo/ginkgo/generate_command.go
@@ -39,7 +39,7 @@ import (
{{if .IncludeImports}}. "github.com/onsi/ginkgo"{{end}}
{{if .IncludeImports}}. "github.com/onsi/gomega"{{end}}
- {{if .DotImportPackage}}. "{{.PackageImportPath}}"{{end}}
+ {{if .ImportPackage}}"{{.PackageImportPath}}"{{end}}
)
var _ = Describe("{{.Subject}}", func() {
@@ -55,7 +55,7 @@ import (
"github.com/sclevine/agouti"
. "github.com/sclevine/agouti/matchers"
- {{if .DotImportPackage}}. "{{.PackageImportPath}}"{{end}}
+ {{if .ImportPackage}}"{{.PackageImportPath}}"{{end}}
)
var _ = Describe("{{.Subject}}", func() {
@@ -78,7 +78,7 @@ type specData struct {
Subject string
PackageImportPath string
IncludeImports bool
- DotImportPackage bool
+ ImportPackage bool
}
func generateSpec(args []string, agouti, noDot, internal bool) {
@@ -119,7 +119,7 @@ func generateSpecForSubject(subject string, agouti, noDot, internal bool) error
Subject: formattedName,
PackageImportPath: getPackageImportPath(),
IncludeImports: !noDot,
- DotImportPackage: !internal,
+ ImportPackage: !internal,
}
targetFile := fmt.Sprintf("%s_test.go", specFilePrefix)
diff --git a/vendor/github.com/onsi/ginkgo/ginkgo/main.go b/vendor/github.com/onsi/ginkgo/ginkgo/main.go
index 0741ba8c9..f60c48a72 100644
--- a/vendor/github.com/onsi/ginkgo/ginkgo/main.go
+++ b/vendor/github.com/onsi/ginkgo/ginkgo/main.go
@@ -288,9 +288,9 @@ func findSuites(args []string, recurseForAll bool, skipPackage string, allowPrec
}
func goFmt(path string) {
- err := exec.Command("go", "fmt", path).Run()
+ out, err := exec.Command("go", "fmt", path).CombinedOutput()
if err != nil {
- complainAndQuit("Could not fmt: " + err.Error())
+ complainAndQuit("Could not fmt: " + err.Error() + "\n" + string(out))
}
}
diff --git a/vendor/github.com/onsi/ginkgo/go.mod b/vendor/github.com/onsi/ginkgo/go.mod
index 1f7125228..212b2454c 100644
--- a/vendor/github.com/onsi/ginkgo/go.mod
+++ b/vendor/github.com/onsi/ginkgo/go.mod
@@ -4,6 +4,7 @@ require (
github.com/fsnotify/fsnotify v1.4.9 // indirect
github.com/nxadm/tail v1.4.4
github.com/onsi/gomega v1.10.1
+ github.com/sclevine/agouti v3.0.0+incompatible // indirect
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299
golang.org/x/text v0.3.2 // indirect
)
diff --git a/vendor/github.com/onsi/ginkgo/go.sum b/vendor/github.com/onsi/ginkgo/go.sum
index 2b774f3e8..beb29b3e6 100644
--- a/vendor/github.com/onsi/ginkgo/go.sum
+++ b/vendor/github.com/onsi/ginkgo/go.sum
@@ -25,6 +25,8 @@ github.com/onsi/gomega v1.7.1 h1:K0jcRCwNQM3vFGh1ppMtDh/+7ApJrjldlX8fA0jDTLQ=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
+github.com/sclevine/agouti v3.0.0+incompatible h1:8IBJS6PWz3uTlMP3YBIR5f+KAldcGuOeFkFbUWfBgK4=
+github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd h1:nTDtHvHSdCn1m6ITfMRqtOd/9+7a3s8RBNOZ3eYZzJA=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
diff --git a/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_darwin.go b/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_darwin.go
new file mode 100644
index 000000000..e3d09eadb
--- /dev/null
+++ b/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_darwin.go
@@ -0,0 +1,11 @@
+// +build darwin
+
+package remote
+
+import (
+ "golang.org/x/sys/unix"
+)
+
+func interceptorDupx(oldfd int, newfd int) {
+ unix.Dup2(oldfd, newfd)
+}
diff --git a/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_dragonfly.go b/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_dragonfly.go
new file mode 100644
index 000000000..72d38686a
--- /dev/null
+++ b/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_dragonfly.go
@@ -0,0 +1,11 @@
+// +build dragonfly
+
+package remote
+
+import (
+ "golang.org/x/sys/unix"
+)
+
+func interceptorDupx(oldfd int, newfd int) {
+ unix.Dup2(oldfd, newfd)
+}
diff --git a/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_freebsd.go b/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_freebsd.go
new file mode 100644
index 000000000..497d548d9
--- /dev/null
+++ b/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_freebsd.go
@@ -0,0 +1,11 @@
+// +build freebsd
+
+package remote
+
+import (
+ "golang.org/x/sys/unix"
+)
+
+func interceptorDupx(oldfd int, newfd int) {
+ unix.Dup2(oldfd, newfd)
+}
diff --git a/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_linux.go b/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_linux.go
new file mode 100644
index 000000000..29add0d33
--- /dev/null
+++ b/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_linux.go
@@ -0,0 +1,12 @@
+// +build linux
+// +build !mips64le
+
+package remote
+
+import (
+ "golang.org/x/sys/unix"
+)
+
+func interceptorDupx(oldfd int, newfd int) {
+ unix.Dup2(oldfd, newfd)
+}
diff --git a/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_linux_mips64le.go b/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_linux_mips64le.go
new file mode 100644
index 000000000..09bd06260
--- /dev/null
+++ b/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_linux_mips64le.go
@@ -0,0 +1,12 @@
+// +build linux
+// +build mips64le
+
+package remote
+
+import (
+ "golang.org/x/sys/unix"
+)
+
+func interceptorDupx(oldfd int, newfd int) {
+ unix.Dup3(oldfd, newfd, 0)
+}
diff --git a/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_netbsd.go b/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_netbsd.go
new file mode 100644
index 000000000..16ad6aeb2
--- /dev/null
+++ b/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_netbsd.go
@@ -0,0 +1,11 @@
+// +build netbsd
+
+package remote
+
+import (
+ "golang.org/x/sys/unix"
+)
+
+func interceptorDupx(oldfd int, newfd int) {
+ unix.Dup2(oldfd, newfd)
+}
diff --git a/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_openbsd.go b/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_openbsd.go
new file mode 100644
index 000000000..4275f8421
--- /dev/null
+++ b/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_openbsd.go
@@ -0,0 +1,11 @@
+// +build openbsd
+
+package remote
+
+import (
+ "golang.org/x/sys/unix"
+)
+
+func interceptorDupx(oldfd int, newfd int) {
+ unix.Dup2(oldfd, newfd)
+}
diff --git a/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_solaris.go b/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_solaris.go
new file mode 100644
index 000000000..882a38a9e
--- /dev/null
+++ b/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_solaris.go
@@ -0,0 +1,11 @@
+// +build solaris
+
+package remote
+
+import (
+ "golang.org/x/sys/unix"
+)
+
+func interceptorDupx(oldfd int, newfd int) {
+ unix.Dup2(oldfd, newfd)
+}
diff --git a/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_unix.go b/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_unix.go
index 774967db6..80614d0ce 100644
--- a/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_unix.go
+++ b/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_unix.go
@@ -8,7 +8,6 @@ import (
"os"
"github.com/nxadm/tail"
- "golang.org/x/sys/unix"
)
func NewOutputInterceptor() OutputInterceptor {
@@ -36,10 +35,8 @@ func (interceptor *outputInterceptor) StartInterceptingOutput() error {
return err
}
- // This might call Dup3 if the dup2 syscall is not available, e.g. on
- // linux/arm64 or linux/riscv64
- unix.Dup2(int(interceptor.redirectFile.Fd()), 1)
- unix.Dup2(int(interceptor.redirectFile.Fd()), 2)
+ interceptorDupx(int(interceptor.redirectFile.Fd()), 1)
+ interceptorDupx(int(interceptor.redirectFile.Fd()), 2)
if interceptor.streamTarget != nil {
interceptor.tailer, _ = tail.TailFile(interceptor.redirectFile.Name(), tail.Config{Follow: true})