Skip to content

Commit

Permalink
Warn on beta version (#505)
Browse files Browse the repository at this point in the history
* Add logrus test hook dependency

Signed-off-by: liz <liz@heptio.com>

* Warn instead of error on unstable versions

Signed-off-by: liz <liz@heptio.com>
  • Loading branch information
liztio authored and timothysc committed Jul 24, 2018
1 parent 093f4a7 commit a534ae0
Show file tree
Hide file tree
Showing 4 changed files with 124 additions and 5 deletions.
7 changes: 5 additions & 2 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion cmd/sonobuoy/app/imageversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (

version "github.com/hashicorp/go-version"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
"k8s.io/client-go/discovery"
)

Expand Down Expand Up @@ -92,7 +93,7 @@ func validateVersion(v string) error {
version, err := version.NewVersion(v)
if err == nil {
if version.Metadata() != "" || version.Prerelease() != "" {
err = errors.New("version cannot have prelease or metadata, please use a stable version")
logrus.Warningf("Version %v is not a stable version, conformance image may not exist upstream", v)
} else if !strings.HasPrefix(v, "v") {
err = errors.New("version must start with v")
}
Expand Down
24 changes: 22 additions & 2 deletions cmd/sonobuoy/app/imageversion_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,18 @@ limitations under the License.
package app

import (
"io/ioutil"
"testing"

"github.com/pkg/errors"
"github.com/sirupsen/logrus"
testhook "github.com/sirupsen/logrus/hooks/test"
"k8s.io/apimachinery/pkg/version"
"k8s.io/client-go/discovery"
)

func TestSetConformanceImageVersion(t *testing.T) {
logrus.SetOutput(ioutil.Discard)

tests := []struct {
name string
Expand Down Expand Up @@ -64,7 +68,7 @@ func TestSetConformanceImageVersion(t *testing.T) {
{
name: "version with addendum",
version: "v1.11.0-beta.2.78+e0b33dbc2bde88",
error: true,
error: false,
},
}

Expand All @@ -82,6 +86,10 @@ func TestSetConformanceImageVersion(t *testing.T) {
}

func TestGetConformanceImageVersion(t *testing.T) {
testHook := &testhook.Hook{}
logrus.AddHook(testHook)
logrus.SetOutput(ioutil.Discard)

workingServerVersion := &fakeServerVersionInterface{
version: version.Info{
Major: "1",
Expand All @@ -108,6 +116,7 @@ func TestGetConformanceImageVersion(t *testing.T) {
serverVersion discovery.ServerVersionInterface
expected string
error bool
warning bool
}{
{
name: "auto retrieves server version",
Expand All @@ -125,7 +134,8 @@ func TestGetConformanceImageVersion(t *testing.T) {
name: "beta server version throws error",
version: "auto",
serverVersion: betaServerVersion,
error: true,
warning: true,
expected: "v1.11",
},
{
name: "set version ignores server version",
Expand Down Expand Up @@ -161,13 +171,23 @@ func TestGetConformanceImageVersion(t *testing.T) {

for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
testHook.Reset()
v, err := test.version.Get(test.serverVersion)
if test.error && err == nil {
t.Fatalf("expected error, got nil")
} else if !test.error && err != nil {
t.Fatalf("unexpecter error %v", err)
}

if test.warning {
last := testHook.LastEntry()
if last == nil {
t.Errorf("expected warning entry, got nothing")
} else if last.Level != logrus.WarnLevel {
t.Errorf("expected level %v, got %v", logrus.WarnLevel, last.Level)
}
}

if v != test.expected {
t.Errorf("expected version %q, got %q", test.expected, v)
}
Expand Down
95 changes: 95 additions & 0 deletions vendor/github.com/sirupsen/logrus/hooks/test/test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit a534ae0

Please sign in to comment.