summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--README.md2
-rw-r--r--RELEASE_NOTES.md6
-rw-r--r--changelog.txt23
-rw-r--r--contrib/spec/podman.spec.in2
-rw-r--r--docs/tutorials/README.md4
-rw-r--r--docs/tutorials/podman-derivative-api.md4
-rw-r--r--go.mod4
-rw-r--r--go.sum4
-rw-r--r--install.md1
-rw-r--r--libpod/runtime.go7
-rw-r--r--pkg/spec/spec.go3
-rw-r--r--test/system/005-info.bats2
-rw-r--r--test/system/055-rm.bats2
-rw-r--r--test/system/065-cp.bats2
-rw-r--r--test/system/400-unprivileged-access.bats2
-rw-r--r--vendor/github.com/onsi/gomega/.travis.yml1
-rw-r--r--vendor/github.com/onsi/gomega/CHANGELOG.md32
-rw-r--r--vendor/github.com/onsi/gomega/format/format.go37
-rw-r--r--vendor/github.com/onsi/gomega/gbytes/say_matcher.go4
-rw-r--r--vendor/github.com/onsi/gomega/gexec/build.go4
-rw-r--r--vendor/github.com/onsi/gomega/gexec/exit_matcher.go2
-rw-r--r--vendor/github.com/onsi/gomega/gexec/prefixed_writer.go4
-rw-r--r--vendor/github.com/onsi/gomega/gexec/session.go3
-rw-r--r--vendor/github.com/onsi/gomega/gomega_dsl.go10
-rw-r--r--vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers.go16
-rw-r--r--vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_a_directory.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_a_regular_file.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_an_existing_file.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_closed_matcher.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_element_of_matcher.go57
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_empty_matcher.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_false_matcher.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_identical_to.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_nil_matcher.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_numerically_matcher.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_sent_matcher.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_temporally_matcher.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_true_matcher.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/consist_of.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/contain_element_matcher.go22
-rw-r--r--vendor/github.com/onsi/gomega/matchers/contain_substring_matcher.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/have_cap_matcher.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/have_key_matcher.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/receive_matcher.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/semi_structured_data_support.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/support/goraph/bipartitegraph/bipartitegraph.go3
-rw-r--r--vendor/github.com/onsi/gomega/matchers/type_support.go3
-rw-r--r--vendor/gopkg.in/yaml.v2/decode.go13
-rw-r--r--vendor/gopkg.in/yaml.v2/resolve.go2
-rw-r--r--vendor/modules.txt4
-rw-r--r--version/version.go2
57 files changed, 289 insertions, 46 deletions
diff --git a/Makefile b/Makefile
index e35264a74..97f5d407c 100644
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@ export GOPROXY=https://proxy.golang.org
GO ?= go
DESTDIR ?=
-EPOCH_TEST_COMMIT ?= d7eba026876e4a6a362464dcf08fe6757ebedd1a
+EPOCH_TEST_COMMIT ?= 960f07b0f79e6d6f94842fd4892e775c319f0a39
HEAD ?= HEAD
CHANGELOG_BASE ?= HEAD~
CHANGELOG_TARGET ?= HEAD
diff --git a/README.md b/README.md
index da8df1c15..9bb7403dc 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@
Libpod provides a library for applications looking to use the Container Pod concept,
popularized by Kubernetes. Libpod also contains the Pod Manager tool `(Podman)`. Podman manages pods, containers, container images, and container volumes.
-* [Latest Version: 1.5.1](https://github.com/containers/libpod/releases/latest)
+* [Latest Version: 1.6.0](https://github.com/containers/libpod/releases/latest)
* [Continuous Integration:](contrib/cirrus/README.md) [![Build Status](https://api.cirrus-ci.com/github/containers/libpod.svg)](https://cirrus-ci.com/github/containers/libpod/master)
* [GoDoc: ![GoDoc](https://godoc.org/github.com/containers/libpod/libpod?status.svg)](https://godoc.org/github.com/containers/libpod/libpod)
* Automated continuous release downloads (including remote-client):
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index a8e7ec58f..bff9a5f14 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -1,5 +1,11 @@
# Release Notes
+## 1.6.1
+### Bugfixes
+- Fixed a bug where rootless Podman on systems using CGroups V2 would not function with the `cgroupfs` CGroups manager
+- Fixed a bug where rootless Podman could not correctly identify the DBus session address, causing containers to fail to start ([#4162](https://github.com/containers/libpod/issues/4162))
+- Fixed a bug where rootless Podman with `slirp4netns` networking would fail to start containers due to mount leaks
+
## 1.6.0
### Features
- The `podman network create`, `podman network rm`, `podman network inspect`, and `podman network ls` commands have been added to manage CNI networks used by Podman
diff --git a/changelog.txt b/changelog.txt
index 7d6522c4d..8508d0d1c 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,3 +1,26 @@
+- Changelog for v1.6.1 (2019-10-02)
+ * Update release notes for v1.6.1
+ * Bump gitvalidation epoch
+ * Bump to v1.6.1-dev
+ * rootless: allow cgroupfs manager on cgroups v2
+ * system tests: reenable skipped tests
+
+- Changelog for v1.6.1-rc1 (2019-10-02)
+ * rootless: set DBUS_SESSION_BUS_ADDRESS if it is not set
+ * install.md: add libbtrfs-dev for Debian build
+ * Bump github.com/onsi/gomega from 1.5.0 to 1.7.0
+ * Cirrus: Show names/versions of critical packages
+ * network: add workaround for slirp4netns --enable-sandbox issue
+ * rootless: do not attempt a CNI refresh
+ * Bump github.com/containernetworking/plugins from 0.8.1 to 0.8.2
+ * network: hide EPERM warning when rootless
+ * networking: fix segfault when slirp4netns is missing
+ * Bump gitvalidation epoch
+ * Bump to v1.6.1-dev
+ * Move derivitive doc so it won't be treated as a manpage
+ * catatonit: clone and build
+ * bump catatonit to v0.1.4
+
- Changelog for v1.6.0 (2019-09-30)
* info: add cgroups2
* Finalize release notes for 1.6.0 final
diff --git a/contrib/spec/podman.spec.in b/contrib/spec/podman.spec.in
index dc734a6b4..bd2cff3f6 100644
--- a/contrib/spec/podman.spec.in
+++ b/contrib/spec/podman.spec.in
@@ -39,7 +39,7 @@
%global shortcommit_conmon %(c=%{commit_conmon}; echo ${c:0:7})
Name: podman
-Version: 1.6.1
+Version: 1.6.2
Release: #COMMITDATE#.git%{shortcommit0}%{?dist}
Summary: Manage Pods, Containers and Container Images
License: ASL 2.0
diff --git a/docs/tutorials/README.md b/docs/tutorials/README.md
index 2cf9613b6..bcd1b01d9 100644
--- a/docs/tutorials/README.md
+++ b/docs/tutorials/README.md
@@ -19,3 +19,7 @@ Special setup for running the Podman remote client on a Mac and connecting to Po
**[Remote Client](remote_client.md)**
A brief how-to on using the Podman remote-client.
+
+**[How to use libpod for custom/derivative projects](podman-derivative-api.md)**
+
+How the libpod API can be used within your own project.
diff --git a/docs/tutorials/podman-derivative-api.md b/docs/tutorials/podman-derivative-api.md
index 0342bb740..065b0c4a9 100644
--- a/docs/tutorials/podman-derivative-api.md
+++ b/docs/tutorials/podman-derivative-api.md
@@ -1,3 +1,5 @@
+![PODMAN logo](../../logo/podman-logo-source.svg)
+
# How to use libpod for custom/derivative projects
libpod today is a Golang library and a CLI. The choice of interface you make has advantages and disadvantages.
@@ -41,4 +43,4 @@ Making the choice
A good question to ask first is: Do you want users to be able to use `podman` to manipulate the containers created by your project?
If so, that makes it more likely that you want to run `podman` as a subprocess. If you want a separate image store and a fundamentally
different experience; if what you're doing with containers is quite different from those created by the `podman` CLI,
-that may drive you towards vendoring. \ No newline at end of file
+that may drive you towards vendoring.
diff --git a/go.mod b/go.mod
index c9844fad6..7dd0a8845 100644
--- a/go.mod
+++ b/go.mod
@@ -61,7 +61,7 @@ require (
github.com/mrunalp/fileutils v0.0.0-20171103030105-7d4729fb3618
github.com/munnerz/goautoneg v0.0.0-20190414153302-2ae31c8b6b30 // indirect
github.com/onsi/ginkgo v1.10.1
- github.com/onsi/gomega v1.5.0
+ github.com/onsi/gomega v1.7.0
github.com/opencontainers/go-digest v1.0.0-rc1
github.com/opencontainers/image-spec v1.0.1
github.com/opencontainers/runc v1.0.0-rc8.0.20190827142921-dd075602f158
@@ -104,7 +104,7 @@ require (
google.golang.org/genproto v0.0.0-20190620144150-6af8c5fc6601 // indirect
google.golang.org/grpc v1.21.1 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
- gopkg.in/yaml.v2 v2.2.2
+ gopkg.in/yaml.v2 v2.2.3
k8s.io/api v0.0.0-20190813020757-36bff7324fb7
k8s.io/apimachinery v0.0.0-20190809020650-423f5d784010
k8s.io/client-go v0.0.0-20190620085101-78d2af792bab
diff --git a/go.sum b/go.sum
index aecbcfaba..c82030a32 100644
--- a/go.sum
+++ b/go.sum
@@ -411,6 +411,8 @@ github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU=
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.5.0 h1:izbySO9zDPmjJ8rDjLvkA2zJHIo+HkYXHnf7eN7SSyo=
github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
+github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME=
+github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s=
github.com/opencontainers/go-digest v1.0.0-rc1 h1:WzifXhOVOEOuFYOJAW6aQqW0TooG2iki3E3Ii+WN7gQ=
github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s=
@@ -756,6 +758,8 @@ gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bl
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.3 h1:fvjTMHxHEw/mxHbtzPi3JCcKXQRAnQTBRo6YCJSVHKI=
+gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gotest.tools v0.0.0-20190624233834-05ebafbffc79/go.mod h1:R//lfYlUuTOTfblYI3lGoAAAebUdzjvbmQsuB7Ykd90=
gotest.tools v2.1.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
diff --git a/install.md b/install.md
index eb4ecfa68..b90f20395 100644
--- a/install.md
+++ b/install.md
@@ -130,6 +130,7 @@ sudo apt-get install \
go-md2man \
iptables \
libassuan-dev \
+ libbtrfs-dev \
libc6-dev \
libdevmapper-dev \
libglib2.0-dev \
diff --git a/libpod/runtime.go b/libpod/runtime.go
index 675c92b7a..9f3549e00 100644
--- a/libpod/runtime.go
+++ b/libpod/runtime.go
@@ -387,6 +387,13 @@ func SetXdgDirs() error {
return errors.Wrapf(err, "cannot set XDG_RUNTIME_DIR")
}
+ if rootless.IsRootless() && os.Getenv("DBUS_SESSION_BUS_ADDRESS") == "" {
+ sessionAddr := filepath.Join(runtimeDir, "bus")
+ if _, err := os.Stat(sessionAddr); err == nil {
+ os.Setenv("DBUS_SESSION_BUS_ADDRESS", fmt.Sprintf("unix:path=%s", sessionAddr))
+ }
+ }
+
// Setup XDG_CONFIG_HOME
if cfgHomeDir := os.Getenv("XDG_CONFIG_HOME"); cfgHomeDir == "" {
if cfgHomeDir, err = util.GetRootlessConfigHomeDir(); err != nil {
diff --git a/pkg/spec/spec.go b/pkg/spec/spec.go
index 38f9c7306..c7aa003e8 100644
--- a/pkg/spec/spec.go
+++ b/pkg/spec/spec.go
@@ -387,6 +387,9 @@ func (config *CreateConfig) createConfigToOCISpec(runtime *libpod.Runtime, userM
if err != nil {
return nil, err
}
+ if !addedResources {
+ configSpec.Linux.Resources = &spec.LinuxResources{}
+ }
if addedResources && !cgroup2 {
return nil, errors.New("invalid configuration, cannot set resources with rootless containers not using cgroups v2 unified mode")
}
diff --git a/test/system/005-info.bats b/test/system/005-info.bats
index 7fccc75af..5df6033fc 100644
--- a/test/system/005-info.bats
+++ b/test/system/005-info.bats
@@ -33,7 +33,7 @@ RunRoot:
run_podman info --format=json
expr_nvr="[a-z0-9-]\\\+-[a-z0-9.]\\\+-[a-z0-9]\\\+\."
- expr_path="/[a-z0-9\\\-\\\/.]\\\+\\\$"
+ expr_path="/[a-z0-9\\\/.-]\\\+\\\$"
tests="
host.BuildahVersion | [0-9.]
diff --git a/test/system/055-rm.bats b/test/system/055-rm.bats
index c13c8c52e..8ef8a119e 100644
--- a/test/system/055-rm.bats
+++ b/test/system/055-rm.bats
@@ -32,8 +32,6 @@ load helpers
#
# See https://github.com/containers/libpod/issues/3795
@test "podman rm -f" {
- skip_if_remote "podman-remote does not handle exit codes"
-
rand=$(random_string 30)
( sleep 3; run_podman rm -f $rand ) &
run_podman 137 run --name $rand $IMAGE sleep 30
diff --git a/test/system/065-cp.bats b/test/system/065-cp.bats
index 38660a13c..0701055f9 100644
--- a/test/system/065-cp.bats
+++ b/test/system/065-cp.bats
@@ -38,7 +38,6 @@ load helpers
# into host-only space. Try to podman-cp that symlink. It should fail.
@test "podman cp - will not recognize symlink pointing into host space" {
skip_if_remote "podman-remote does not yet handle cp"
- skip "BROKEN: PLEASE ENABLE ONCE #3829 GETS FIXED"
srcdir=$PODMAN_TMPDIR/cp-test-in
dstdir=$PODMAN_TMPDIR/cp-test-out
@@ -69,7 +68,6 @@ load helpers
# this invalid double symlink. It must fail.
@test "podman cp - will not expand globs in host space (#3829)" {
skip_if_remote "podman-remote does not yet handle cp"
- skip "BROKEN: PLEASE ENABLE ONCE #3829 GETS FIXED"
srcdir=$PODMAN_TMPDIR/cp-test-in
dstdir=$PODMAN_TMPDIR/cp-test-out
diff --git a/test/system/400-unprivileged-access.bats b/test/system/400-unprivileged-access.bats
index 738d8d87b..56c40e9c8 100644
--- a/test/system/400-unprivileged-access.bats
+++ b/test/system/400-unprivileged-access.bats
@@ -22,7 +22,7 @@ load helpers
# as a user, the parent directory must be world-readable.
test_script=$PODMAN_TMPDIR/fail-if-writable
cat >$test_script <<"EOF"
-#!/bin/sh
+#!/bin/bash
path="$1"
diff --git a/vendor/github.com/onsi/gomega/.travis.yml b/vendor/github.com/onsi/gomega/.travis.yml
index 2420a5d07..d147e451d 100644
--- a/vendor/github.com/onsi/gomega/.travis.yml
+++ b/vendor/github.com/onsi/gomega/.travis.yml
@@ -4,6 +4,7 @@ go:
- 1.10.x
- 1.11.x
- 1.12.x
+ - gotip
env:
- GO111MODULE=on
diff --git a/vendor/github.com/onsi/gomega/CHANGELOG.md b/vendor/github.com/onsi/gomega/CHANGELOG.md
index 5d1eda837..f67074016 100644
--- a/vendor/github.com/onsi/gomega/CHANGELOG.md
+++ b/vendor/github.com/onsi/gomega/CHANGELOG.md
@@ -1,3 +1,35 @@
+## 1.7.0
+
+### Features
+- export format property variables (#347) [642e5ba]
+
+### Fixes
+- minor fix in the documentation of ExpectWithOffset (#358) [beea727]
+
+## 1.6.0
+
+### Features
+
+- Display special chars on error [41e1b26]
+- Add BeElementOf matcher [6a48b48]
+
+### Fixes
+
+- Remove duplication in XML matcher tests [cc1a6cb]
+- Remove unnecessary conversions (#357) [7bf756a]
+- Fixed import order (#353) [2e3b965]
+- Added missing error handling in test (#355) [c98d3eb]
+- Simplify code (#356) [0001ed9]
+- Simplify code (#354) [0d9100e]
+- Fixed typos (#352) [3f647c4]
+- Add failure message tests to BeElementOf matcher [efe19c3]
+- Update go-testcov untested sections [37ee382]
+- Mark all uncovered files so go-testcov ./... works [53b150e]
+- Reenable gotip in travis [5c249dc]
+- Fix the typo of comment (#345) [f0e010e]
+- Optimize contain_element_matcher [abeb93d]
+
+
## 1.5.0
### Features
diff --git a/vendor/github.com/onsi/gomega/format/format.go b/vendor/github.com/onsi/gomega/format/format.go
index 6559525f1..fae25adce 100644
--- a/vendor/github.com/onsi/gomega/format/format.go
+++ b/vendor/github.com/onsi/gomega/format/format.go
@@ -1,6 +1,9 @@
/*
Gomega's format package pretty-prints objects. It explores input objects recursively and generates formatted, indented output with type information.
*/
+
+// untested sections: 4
+
package format
import (
@@ -33,7 +36,15 @@ var PrintContextObjects = false
// TruncatedDiff choose if we should display a truncated pretty diff or not
var TruncatedDiff = true
-// Ctx interface defined here to keep backwards compatability with go < 1.7
+// TruncateThreshold (default 50) specifies the maximum length string to print in string comparison assertion error
+// messages.
+var TruncateThreshold uint = 50
+
+// CharactersAroundMismatchToInclude (default 5) specifies how many contextual characters should be printed before and
+// after the first diff location in a truncated string assertion error message.
+var CharactersAroundMismatchToInclude uint = 5
+
+// Ctx interface defined here to keep backwards compatibility with go < 1.7
// It matches the context.Context interface
type Ctx interface {
Deadline() (deadline time.Time, ok bool)
@@ -58,7 +69,7 @@ Generates a formatted matcher success/failure message of the form:
<message>
<pretty printed expected>
-If expected is omited, then the message looks like:
+If expected is omitted, then the message looks like:
Expected
<pretty printed actual>
@@ -85,7 +96,7 @@ to equal |
*/
func MessageWithDiff(actual, message, expected string) string {
- if TruncatedDiff && len(actual) >= truncateThreshold && len(expected) >= truncateThreshold {
+ if TruncatedDiff && len(actual) >= int(TruncateThreshold) && len(expected) >= int(TruncateThreshold) {
diffPoint := findFirstMismatch(actual, expected)
formattedActual := truncateAndFormat(actual, diffPoint)
formattedExpected := truncateAndFormat(expected, diffPoint)
@@ -97,14 +108,23 @@ func MessageWithDiff(actual, message, expected string) string {
padding := strings.Repeat(" ", spaceFromMessageToActual+spacesBeforeFormattedMismatch) + "|"
return Message(formattedActual, message+padding, formattedExpected)
}
+
+ actual = escapedWithGoSyntax(actual)
+ expected = escapedWithGoSyntax(expected)
+
return Message(actual, message, expected)
}
+func escapedWithGoSyntax(str string) string {
+ withQuotes := fmt.Sprintf("%q", str)
+ return withQuotes[1 : len(withQuotes)-1]
+}
+
func truncateAndFormat(str string, index int) string {
leftPadding := `...`
rightPadding := `...`
- start := index - charactersAroundMismatchToInclude
+ start := index - int(CharactersAroundMismatchToInclude)
if start < 0 {
start = 0
leftPadding = ""
@@ -112,7 +132,7 @@ func truncateAndFormat(str string, index int) string {
// slice index must include the mis-matched character
lengthOfMismatchedCharacter := 1
- end := index + charactersAroundMismatchToInclude + lengthOfMismatchedCharacter
+ end := index + int(CharactersAroundMismatchToInclude) + lengthOfMismatchedCharacter
if end > len(str) {
end = len(str)
rightPadding = ""
@@ -141,11 +161,6 @@ func findFirstMismatch(a, b string) int {
return 0
}
-const (
- truncateThreshold = 50
- charactersAroundMismatchToInclude = 5
-)
-
/*
Pretty prints the passed in object at the passed in indentation level.
@@ -288,7 +303,7 @@ func formatString(object interface{}, indentation uint) string {
}
}
- return fmt.Sprintf("%s", result)
+ return result
} else {
return fmt.Sprintf("%q", object)
}
diff --git a/vendor/github.com/onsi/gomega/gbytes/say_matcher.go b/vendor/github.com/onsi/gomega/gbytes/say_matcher.go
index 14317182b..0763f5e2d 100644
--- a/vendor/github.com/onsi/gomega/gbytes/say_matcher.go
+++ b/vendor/github.com/onsi/gomega/gbytes/say_matcher.go
@@ -1,3 +1,5 @@
+// untested sections: 1
+
package gbytes
import (
@@ -19,7 +21,7 @@ Say is a Gomega matcher that operates on gbytes.Buffers:
will succeed if the unread portion of the buffer matches the regular expression "something".
-When Say succeeds, it fast forwards the gbytes.Buffer's read cursor to just after the succesful match.
+When Say succeeds, it fast forwards the gbytes.Buffer's read cursor to just after the successful match.
Thus, subsequent calls to Say will only match against the unread portion of the buffer
Say pairs very well with Eventually. To assert that a buffer eventually receives data matching "[123]-star" within 3 seconds you can:
diff --git a/vendor/github.com/onsi/gomega/gexec/build.go b/vendor/github.com/onsi/gomega/gexec/build.go
index 869c1ead8..741d845f4 100644
--- a/vendor/github.com/onsi/gomega/gexec/build.go
+++ b/vendor/github.com/onsi/gomega/gexec/build.go
@@ -1,3 +1,5 @@
+// untested sections: 5
+
package gexec
import (
@@ -66,7 +68,7 @@ func doBuild(gopath, packagePath string, env []string, args ...string) (compiled
executable := filepath.Join(tmpDir, path.Base(packagePath))
if runtime.GOOS == "windows" {
- executable = executable + ".exe"
+ executable += ".exe"
}
cmdArgs := append([]string{"build"}, args...)
diff --git a/vendor/github.com/onsi/gomega/gexec/exit_matcher.go b/vendor/github.com/onsi/gomega/gexec/exit_matcher.go
index 98a354937..6e70de68d 100644
--- a/vendor/github.com/onsi/gomega/gexec/exit_matcher.go
+++ b/vendor/github.com/onsi/gomega/gexec/exit_matcher.go
@@ -1,3 +1,5 @@
+// untested sections: 2
+
package gexec
import (
diff --git a/vendor/github.com/onsi/gomega/gexec/prefixed_writer.go b/vendor/github.com/onsi/gomega/gexec/prefixed_writer.go
index 05e695abc..feb6620c5 100644
--- a/vendor/github.com/onsi/gomega/gexec/prefixed_writer.go
+++ b/vendor/github.com/onsi/gomega/gexec/prefixed_writer.go
@@ -1,3 +1,5 @@
+// untested sections: 1
+
package gexec
import (
@@ -6,7 +8,7 @@ import (
)
/*
-PrefixedWriter wraps an io.Writer, emiting the passed in prefix at the beginning of each new line.
+PrefixedWriter wraps an io.Writer, emitting the passed in prefix at the beginning of each new line.
This can be useful when running multiple gexec.Sessions concurrently - you can prefix the log output of each
session by passing in a PrefixedWriter:
diff --git a/vendor/github.com/onsi/gomega/gexec/session.go b/vendor/github.com/onsi/gomega/gexec/session.go
index 5cb00ca65..6a09140fb 100644
--- a/vendor/github.com/onsi/gomega/gexec/session.go
+++ b/vendor/github.com/onsi/gomega/gexec/session.go
@@ -1,6 +1,9 @@
/*
Package gexec provides support for testing external processes.
*/
+
+// untested sections: 1
+
package gexec
import (
diff --git a/vendor/github.com/onsi/gomega/gomega_dsl.go b/vendor/github.com/onsi/gomega/gomega_dsl.go
index 448d595da..b145768cf 100644
--- a/vendor/github.com/onsi/gomega/gomega_dsl.go
+++ b/vendor/github.com/onsi/gomega/gomega_dsl.go
@@ -24,7 +24,7 @@ import (
"github.com/onsi/gomega/types"
)
-const GOMEGA_VERSION = "1.5.0"
+const GOMEGA_VERSION = "1.7.0"
const nilFailHandlerPanic = `You are trying to make an assertion, but Gomega's fail handler is nil.
If you're using Ginkgo then you probably forgot to put your assertion in an It().
@@ -155,7 +155,7 @@ func Expect(actual interface{}, extra ...interface{}) Assertion {
// ExpectWithOffset(1, "foo").To(Equal("foo"))
//
// Unlike `Expect` and `Ω`, `ExpectWithOffset` takes an additional integer argument
-// this is used to modify the call-stack offset when computing line numbers.
+// that is used to modify the call-stack offset when computing line numbers.
//
// This is most useful in helper functions that make assertions. If you want Gomega's
// error message to refer to the calling line in the test (as opposed to the line in the helper function)
@@ -242,7 +242,7 @@ func EventuallyWithOffset(offset int, actual interface{}, intervals ...interface
// assert that all other values are nil/zero.
// This allows you to pass Consistently a function that returns a value and an error - a common pattern in Go.
//
-// Consistently is useful in cases where you want to assert that something *does not happen* over a period of tiem.
+// Consistently is useful in cases where you want to assert that something *does not happen* over a period of time.
// For example, you want to assert that a goroutine does *not* send data down a channel. In this case, you could:
//
// Consistently(channel).ShouldNot(Receive())
@@ -280,7 +280,7 @@ func SetDefaultEventuallyPollingInterval(t time.Duration) {
defaultEventuallyPollingInterval = t
}
-// SetDefaultConsistentlyDuration sets the default duration for Consistently. Consistently will verify that your condition is satsified for this long.
+// SetDefaultConsistentlyDuration sets the default duration for Consistently. Consistently will verify that your condition is satisfied for this long.
func SetDefaultConsistentlyDuration(t time.Duration) {
defaultConsistentlyDuration = t
}
@@ -320,7 +320,7 @@ type GomegaAsyncAssertion = AsyncAssertion
// All methods take a variadic optionalDescription argument. This is passed on to fmt.Sprintf()
// and is used to annotate failure messages.
//
-// All methods return a bool that is true if hte assertion passed and false if it failed.
+// All methods return a bool that is true if the assertion passed and false if it failed.
//
// Example:
//
diff --git a/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go b/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go
index cdab233eb..a233e48c0 100644
--- a/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go
+++ b/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go
@@ -1,3 +1,5 @@
+// untested sections: 2
+
package asyncassertion
import (
diff --git a/vendor/github.com/onsi/gomega/matchers.go b/vendor/github.com/onsi/gomega/matchers.go
index c3a326dd4..9ec8893cb 100644
--- a/vendor/github.com/onsi/gomega/matchers.go
+++ b/vendor/github.com/onsi/gomega/matchers.go
@@ -269,6 +269,22 @@ func ContainElement(element interface{}) types.GomegaMatcher {
}
}
+//BeElementOf succeeds if actual is contained in the passed in elements.
+//BeElementOf() always uses Equal() to perform the match.
+//When the passed in elements are comprised of a single element that is either an Array or Slice, BeElementOf() behaves
+//as the reverse of ContainElement() that operates with Equal() to perform the match.
+// Expect(2).Should(BeElementOf([]int{1, 2}))
+// Expect(2).Should(BeElementOf([2]int{1, 2}))
+//Otherwise, BeElementOf() provides a syntactic sugar for Or(Equal(_), Equal(_), ...):
+// Expect(2).Should(BeElementOf(1, 2))
+//
+//Actual must be typed.
+func BeElementOf(elements ...interface{}) types.GomegaMatcher {
+ return &matchers.BeElementOfMatcher{
+ Elements: elements,
+ }
+}
+
//ConsistOf succeeds if actual contains precisely the elements passed into the matcher. The ordering of the elements does not matter.
//By default ConsistOf() uses Equal() to match the elements, however custom matchers can be passed in instead. Here are some examples:
//
diff --git a/vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher.go b/vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher.go
index 51f8be6ae..be4839520 100644
--- a/vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher.go
+++ b/vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher.go
@@ -1,3 +1,5 @@
+// untested sections: 2
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/be_a_directory.go b/vendor/github.com/onsi/gomega/matchers/be_a_directory.go
index 7b6975e41..acffc8570 100644
--- a/vendor/github.com/onsi/gomega/matchers/be_a_directory.go
+++ b/vendor/github.com/onsi/gomega/matchers/be_a_directory.go
@@ -1,3 +1,5 @@
+// untested sections: 5
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/be_a_regular_file.go b/vendor/github.com/onsi/gomega/matchers/be_a_regular_file.go
index e239131fb..89441c800 100644
--- a/vendor/github.com/onsi/gomega/matchers/be_a_regular_file.go
+++ b/vendor/github.com/onsi/gomega/matchers/be_a_regular_file.go
@@ -1,3 +1,5 @@
+// untested sections: 5
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/be_an_existing_file.go b/vendor/github.com/onsi/gomega/matchers/be_an_existing_file.go
index d42eba223..ec6506b00 100644
--- a/vendor/github.com/onsi/gomega/matchers/be_an_existing_file.go
+++ b/vendor/github.com/onsi/gomega/matchers/be_an_existing_file.go
@@ -1,3 +1,5 @@
+// untested sections: 3
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/be_closed_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_closed_matcher.go
index 80c9c8bb1..f13c24490 100644
--- a/vendor/github.com/onsi/gomega/matchers/be_closed_matcher.go
+++ b/vendor/github.com/onsi/gomega/matchers/be_closed_matcher.go
@@ -1,3 +1,5 @@
+// untested sections: 2
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/be_element_of_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_element_of_matcher.go
new file mode 100644
index 000000000..1f9d7a8e6
--- /dev/null
+++ b/vendor/github.com/onsi/gomega/matchers/be_element_of_matcher.go
@@ -0,0 +1,57 @@
+// untested sections: 1
+
+package matchers
+
+import (
+ "fmt"
+ "reflect"
+
+ "github.com/onsi/gomega/format"
+)
+
+type BeElementOfMatcher struct {
+ Elements []interface{}
+}
+
+func (matcher *BeElementOfMatcher) Match(actual interface{}) (success bool, err error) {
+ if reflect.TypeOf(actual) == nil {
+ return false, fmt.Errorf("BeElement matcher expects actual to be typed")
+ }
+
+ length := len(matcher.Elements)
+ valueAt := func(i int) interface{} {
+ return matcher.Elements[i]
+ }
+ // Special handling of a single element of type Array or Slice
+ if length == 1 && isArrayOrSlice(valueAt(0)) {
+ element := valueAt(0)
+ value := reflect.ValueOf(element)
+ length = value.Len()
+ valueAt = func(i int) interface{} {
+ return value.Index(i).Interface()
+ }
+ }
+
+ var lastError error
+ for i := 0; i < length; i++ {
+ matcher := &EqualMatcher{Expected: valueAt(i)}
+ success, err := matcher.Match(actual)
+ if err != nil {
+ lastError = err
+ continue
+ }
+ if success {
+ return true, nil
+ }
+ }
+
+ return false, lastError
+}
+
+func (matcher *BeElementOfMatcher) FailureMessage(actual interface{}) (message string) {
+ return format.Message(actual, "to be an element of", matcher.Elements)
+}
+
+func (matcher *BeElementOfMatcher) NegatedFailureMessage(actual interface{}) (message string) {
+ return format.Message(actual, "not to be an element of", matcher.Elements)
+}
diff --git a/vendor/github.com/onsi/gomega/matchers/be_empty_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_empty_matcher.go
index 8b00311b0..527c1a1c1 100644
--- a/vendor/github.com/onsi/gomega/matchers/be_empty_matcher.go
+++ b/vendor/github.com/onsi/gomega/matchers/be_empty_matcher.go
@@ -1,3 +1,5 @@
+// untested sections: 2
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher.go
index 97ab20a4e..263627f40 100644
--- a/vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher.go
+++ b/vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher.go
@@ -1,3 +1,5 @@
+// untested sections: 2
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/be_false_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_false_matcher.go
index 91d3b779e..e326c0157 100644
--- a/vendor/github.com/onsi/gomega/matchers/be_false_matcher.go
+++ b/vendor/github.com/onsi/gomega/matchers/be_false_matcher.go
@@ -1,3 +1,5 @@
+// untested sections: 2
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/be_identical_to.go b/vendor/github.com/onsi/gomega/matchers/be_identical_to.go
index fdcda4d1f..631ce11e3 100644
--- a/vendor/github.com/onsi/gomega/matchers/be_identical_to.go
+++ b/vendor/github.com/onsi/gomega/matchers/be_identical_to.go
@@ -1,3 +1,5 @@
+// untested sections: 2
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/be_nil_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_nil_matcher.go
index 7ee84fe1b..551d99d74 100644
--- a/vendor/github.com/onsi/gomega/matchers/be_nil_matcher.go
+++ b/vendor/github.com/onsi/gomega/matchers/be_nil_matcher.go
@@ -1,3 +1,5 @@
+// untested sections: 2
+
package matchers
import "github.com/onsi/gomega/format"
diff --git a/vendor/github.com/onsi/gomega/matchers/be_numerically_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_numerically_matcher.go
index 9f4f77eec..f72591a1a 100644
--- a/vendor/github.com/onsi/gomega/matchers/be_numerically_matcher.go
+++ b/vendor/github.com/onsi/gomega/matchers/be_numerically_matcher.go
@@ -1,3 +1,5 @@
+// untested sections: 4
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/be_sent_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_sent_matcher.go
index 302dd1a0a..cf582a3fc 100644
--- a/vendor/github.com/onsi/gomega/matchers/be_sent_matcher.go
+++ b/vendor/github.com/onsi/gomega/matchers/be_sent_matcher.go
@@ -1,3 +1,5 @@
+// untested sections: 3
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/be_temporally_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_temporally_matcher.go
index cb7c038ef..dec4db024 100644
--- a/vendor/github.com/onsi/gomega/matchers/be_temporally_matcher.go
+++ b/vendor/github.com/onsi/gomega/matchers/be_temporally_matcher.go
@@ -1,3 +1,5 @@
+// untested sections: 3
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/be_true_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_true_matcher.go
index ec57c5db4..60bc1e3fa 100644
--- a/vendor/github.com/onsi/gomega/matchers/be_true_matcher.go
+++ b/vendor/github.com/onsi/gomega/matchers/be_true_matcher.go
@@ -1,3 +1,5 @@
+// untested sections: 2
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/consist_of.go b/vendor/github.com/onsi/gomega/matchers/consist_of.go
index 7b0e08868..cbbf61802 100644
--- a/vendor/github.com/onsi/gomega/matchers/consist_of.go
+++ b/vendor/github.com/onsi/gomega/matchers/consist_of.go
@@ -1,3 +1,5 @@
+// untested sections: 3
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/contain_element_matcher.go b/vendor/github.com/onsi/gomega/matchers/contain_element_matcher.go
index 4159335d0..8d6c44c7a 100644
--- a/vendor/github.com/onsi/gomega/matchers/contain_element_matcher.go
+++ b/vendor/github.com/onsi/gomega/matchers/contain_element_matcher.go
@@ -1,3 +1,5 @@
+// untested sections: 2
+
package matchers
import (
@@ -22,19 +24,21 @@ func (matcher *ContainElementMatcher) Match(actual interface{}) (success bool, e
}
value := reflect.ValueOf(actual)
- var keys []reflect.Value
+ var valueAt func(int) interface{}
if isMap(actual) {
- keys = value.MapKeys()
+ keys := value.MapKeys()
+ valueAt = func(i int) interface{} {
+ return value.MapIndex(keys[i]).Interface()
+ }
+ } else {
+ valueAt = func(i int) interface{} {
+ return value.Index(i).Interface()
+ }
}
+
var lastError error
for i := 0; i < value.Len(); i++ {
- var success bool
- var err error
- if isMap(actual) {
- success, err = elemMatcher.Match(value.MapIndex(keys[i]).Interface())
- } else {
- success, err = elemMatcher.Match(value.Index(i).Interface())
- }
+ success, err := elemMatcher.Match(valueAt(i))
if err != nil {
lastError = err
continue
diff --git a/vendor/github.com/onsi/gomega/matchers/contain_substring_matcher.go b/vendor/github.com/onsi/gomega/matchers/contain_substring_matcher.go
index f8dc41e74..e725f8c27 100644
--- a/vendor/github.com/onsi/gomega/matchers/contain_substring_matcher.go
+++ b/vendor/github.com/onsi/gomega/matchers/contain_substring_matcher.go
@@ -1,3 +1,5 @@
+// untested sections: 2
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/have_cap_matcher.go b/vendor/github.com/onsi/gomega/matchers/have_cap_matcher.go
index 7ace93dc3..9856752f1 100644
--- a/vendor/github.com/onsi/gomega/matchers/have_cap_matcher.go
+++ b/vendor/github.com/onsi/gomega/matchers/have_cap_matcher.go
@@ -1,3 +1,5 @@
+// untested sections: 2
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/have_key_matcher.go b/vendor/github.com/onsi/gomega/matchers/have_key_matcher.go
index ea5b92336..00cffec70 100644
--- a/vendor/github.com/onsi/gomega/matchers/have_key_matcher.go
+++ b/vendor/github.com/onsi/gomega/matchers/have_key_matcher.go
@@ -1,3 +1,5 @@
+// untested sections: 6
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher.go b/vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher.go
index 06355b1e9..4c5916804 100644
--- a/vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher.go
+++ b/vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher.go
@@ -1,3 +1,5 @@
+// untested sections:10
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go b/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go
index bef00ae21..5bcfdd2ad 100644
--- a/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go
+++ b/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go
@@ -1,3 +1,5 @@
+// untested sections: 2
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/receive_matcher.go b/vendor/github.com/onsi/gomega/matchers/receive_matcher.go
index 2018a6128..1936a2ba5 100644
--- a/vendor/github.com/onsi/gomega/matchers/receive_matcher.go
+++ b/vendor/github.com/onsi/gomega/matchers/receive_matcher.go
@@ -1,3 +1,5 @@
+// untested sections: 3
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/semi_structured_data_support.go b/vendor/github.com/onsi/gomega/matchers/semi_structured_data_support.go
index 639295684..1369c1e87 100644
--- a/vendor/github.com/onsi/gomega/matchers/semi_structured_data_support.go
+++ b/vendor/github.com/onsi/gomega/matchers/semi_structured_data_support.go
@@ -1,3 +1,5 @@
+// untested sections: 5
+
package matchers
import (
diff --git a/vendor/github.com/onsi/gomega/matchers/support/goraph/bipartitegraph/bipartitegraph.go b/vendor/github.com/onsi/gomega/matchers/support/goraph/bipartitegraph/bipartitegraph.go
index 8aaf8759d..108f28586 100644
--- a/vendor/github.com/onsi/gomega/matchers/support/goraph/bipartitegraph/bipartitegraph.go
+++ b/vendor/github.com/onsi/gomega/matchers/support/goraph/bipartitegraph/bipartitegraph.go
@@ -1,6 +1,5 @@
package bipartitegraph
-import "errors"
import "fmt"
import . "github.com/onsi/gomega/matchers/support/goraph/node"
@@ -28,7 +27,7 @@ func NewBipartiteGraph(leftValues, rightValues []interface{}, neighbours func(in
for j, rightValue := range rightValues {
neighbours, err := neighbours(leftValue, rightValue)
if err != nil {
- return nil, errors.New(fmt.Sprintf("error determining adjacency for %v and %v: %s", leftValue, rightValue, err.Error()))
+ return nil, fmt.Errorf("error determining adjacency for %v and %v: %s", leftValue, rightValue, err.Error())
}
if neighbours {
diff --git a/vendor/github.com/onsi/gomega/matchers/type_support.go b/vendor/github.com/onsi/gomega/matchers/type_support.go
index 75afcd844..dced2419e 100644
--- a/vendor/github.com/onsi/gomega/matchers/type_support.go
+++ b/vendor/github.com/onsi/gomega/matchers/type_support.go
@@ -6,6 +6,9 @@ See the docs for Gomega for documentation on the matchers
http://onsi.github.io/gomega/
*/
+
+// untested sections: 11
+
package matchers
import (
diff --git a/vendor/gopkg.in/yaml.v2/decode.go b/vendor/gopkg.in/yaml.v2/decode.go
index e4e56e28e..91679b5b4 100644
--- a/vendor/gopkg.in/yaml.v2/decode.go
+++ b/vendor/gopkg.in/yaml.v2/decode.go
@@ -229,6 +229,10 @@ type decoder struct {
mapType reflect.Type
terrors []string
strict bool
+
+ decodeCount int
+ aliasCount int
+ aliasDepth int
}
var (
@@ -315,6 +319,13 @@ func (d *decoder) prepare(n *node, out reflect.Value) (newout reflect.Value, unm
}
func (d *decoder) unmarshal(n *node, out reflect.Value) (good bool) {
+ d.decodeCount++
+ if d.aliasDepth > 0 {
+ d.aliasCount++
+ }
+ if d.aliasCount > 100 && d.decodeCount > 1000 && float64(d.aliasCount)/float64(d.decodeCount) > 0.99 {
+ failf("document contains excessive aliasing")
+ }
switch n.kind {
case documentNode:
return d.document(n, out)
@@ -353,7 +364,9 @@ func (d *decoder) alias(n *node, out reflect.Value) (good bool) {
failf("anchor '%s' value contains itself", n.value)
}
d.aliases[n] = true
+ d.aliasDepth++
good = d.unmarshal(n.alias, out)
+ d.aliasDepth--
delete(d.aliases, n)
return good
}
diff --git a/vendor/gopkg.in/yaml.v2/resolve.go b/vendor/gopkg.in/yaml.v2/resolve.go
index 6c151db6f..4120e0c91 100644
--- a/vendor/gopkg.in/yaml.v2/resolve.go
+++ b/vendor/gopkg.in/yaml.v2/resolve.go
@@ -81,7 +81,7 @@ func resolvableTag(tag string) bool {
return false
}
-var yamlStyleFloat = regexp.MustCompile(`^[-+]?[0-9]*\.?[0-9]+([eE][-+][0-9]+)?$`)
+var yamlStyleFloat = regexp.MustCompile(`^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?$`)
func resolve(tag string, in string) (rtag string, out interface{}) {
if !resolvableTag(tag) {
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 63014d4a1..1d92a249d 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -335,7 +335,7 @@ github.com/onsi/ginkgo/internal/containernode
github.com/onsi/ginkgo/internal/leafnodes
github.com/onsi/ginkgo/internal/spec
github.com/onsi/ginkgo/internal/specrunner
-# github.com/onsi/gomega v1.5.0
+# github.com/onsi/gomega v1.7.0
github.com/onsi/gomega
github.com/onsi/gomega/gexec
github.com/onsi/gomega/internal/assertion
@@ -549,7 +549,7 @@ gopkg.in/fsnotify.v1
gopkg.in/inf.v0
# gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7
gopkg.in/tomb.v1
-# gopkg.in/yaml.v2 v2.2.2
+# gopkg.in/yaml.v2 v2.2.3
gopkg.in/yaml.v2
# k8s.io/api v0.0.0-20190813020757-36bff7324fb7
k8s.io/api/core/v1
diff --git a/version/version.go b/version/version.go
index 9fcd5faa7..2c4d69b78 100644
--- a/version/version.go
+++ b/version/version.go
@@ -4,7 +4,7 @@ package version
// NOTE: remember to bump the version at the top
// of the top-level README.md file when this is
// bumped.
-const Version = "1.6.1-dev"
+const Version = "1.6.2-dev"
// RemoteAPIVersion is the version for the remote
// client API. It is used to determine compatibility