From e52746cbefdc60ac624e52eb9441bb7441ca81a8 Mon Sep 17 00:00:00 2001 From: Michelle Noorali Date: Wed, 22 Feb 2017 14:26:16 -0800 Subject: [PATCH] ref(*): remove error if no tests found on test cmd * resolves #1973 --- pkg/hooks/hooks.go | 15 ++--------- pkg/releasetesting/environment_test.go | 10 +++---- pkg/releasetesting/test_suite.go | 9 ++++--- pkg/releasetesting/test_suite_test.go | 37 +++++++++++++++++++++++--- 4 files changed, 45 insertions(+), 26 deletions(-) diff --git a/pkg/hooks/hooks.go b/pkg/hooks/hooks.go index 6e0e56fd9..ee467ea27 100644 --- a/pkg/hooks/hooks.go +++ b/pkg/hooks/hooks.go @@ -17,8 +17,6 @@ limitations under the License. package hooks import ( - "errors" - "k8s.io/helm/pkg/proto/hapi/release" ) @@ -40,13 +38,8 @@ const ( ) // FilterTestHooks filters the list of hooks are returns only testing hooks. -func FilterTestHooks(hooks []*release.Hook) ([]*release.Hook, error) { +func FilterTestHooks(hooks []*release.Hook) []*release.Hook { testHooks := []*release.Hook{} - notFoundErr := errors.New("no tests found") - - if len(hooks) == 0 { - return nil, notFoundErr - } for _, h := range hooks { for _, e := range h.Events { @@ -57,9 +50,5 @@ func FilterTestHooks(hooks []*release.Hook) ([]*release.Hook, error) { } } - if len(testHooks) == 0 { - return nil, notFoundErr - } - - return testHooks, nil + return testHooks } diff --git a/pkg/releasetesting/environment_test.go b/pkg/releasetesting/environment_test.go index cefdec3d4..deb8617f6 100644 --- a/pkg/releasetesting/environment_test.go +++ b/pkg/releasetesting/environment_test.go @@ -63,7 +63,7 @@ func TestDeleteTestPods(t *testing.T) { mockTestEnv.DeleteTestPods(mockTestSuite.TestManifests) - stream := mockTestEnv.Stream.(mockStream) + stream := mockTestEnv.Stream.(*mockStream) if len(stream.messages) != 0 { t.Errorf("Expected 0 errors, got at least one: %v", stream.messages) } @@ -82,9 +82,9 @@ func TestDeleteTestPodsFailingDelete(t *testing.T) { mockTestEnv.DeleteTestPods(mockTestSuite.TestManifests) - stream := mockTestEnv.Stream.(mockStream) - if len(stream.messages) == 1 { - t.Errorf("Expected 1 error, got none: %v", stream.messages) + stream := mockTestEnv.Stream.(*mockStream) + if len(stream.messages) != 1 { + t.Errorf("Expected 1 error, got: %v", len(stream.messages)) } } @@ -100,7 +100,7 @@ func newMockTestingEnvironment() *MockTestingEnvironment { Namespace: "default", KubeClient: tEnv.KubeClient, Timeout: 5, - Stream: mockStream{}, + Stream: &mockStream{}, }, } } diff --git a/pkg/releasetesting/test_suite.go b/pkg/releasetesting/test_suite.go index fcfd19c54..f4362dc5b 100644 --- a/pkg/releasetesting/test_suite.go +++ b/pkg/releasetesting/test_suite.go @@ -64,6 +64,10 @@ func NewTestSuite(rel *release.Release) (*TestSuite, error) { func (ts *TestSuite) Run(env *Environment) error { ts.StartedAt = timeconv.Now() + if len(ts.TestManifests) == 0 { + env.streamMessage("No Tests Found") + } + for _, testManifest := range ts.TestManifests { test, err := newTest(testManifest) if err != nil { @@ -147,10 +151,7 @@ func expectedSuccess(hookTypes []string) (bool, error) { } func extractTestManifestsFromHooks(h []*release.Hook) ([]string, error) { - testHooks, err := hooks.FilterTestHooks(h) - if err != nil { - return nil, err - } + testHooks := hooks.FilterTestHooks(h) tests := []string{} for _, h := range testHooks { diff --git a/pkg/releasetesting/test_suite_test.go b/pkg/releasetesting/test_suite_test.go index e42b52fb2..58055345d 100644 --- a/pkg/releasetesting/test_suite_test.go +++ b/pkg/releasetesting/test_suite_test.go @@ -139,6 +139,37 @@ func TestRun(t *testing.T) { } +func TestRunEmptyTestSuite(t *testing.T) { + ts := testSuiteFixture([]string{}) + mockTestEnv := testEnvFixture() + if err := ts.Run(mockTestEnv); err != nil { + t.Errorf("%s", err) + } + + if ts.StartedAt == nil { + t.Errorf("Expected StartedAt to not be nil. Got: %v", ts.StartedAt) + } + + if ts.CompletedAt == nil { + t.Errorf("Expected CompletedAt to not be nil. Got: %v", ts.CompletedAt) + } + + if len(ts.Results) != 0 { + t.Errorf("Expected 0 test result. Got %v", len(ts.Results)) + } + + stream := mockTestEnv.Stream.(*mockStream) + if len(stream.messages) == 0 { + t.Errorf("Expected at least one message, Got: %v", len(stream.messages)) + } else { + msg := stream.messages[0].Msg + if msg != "No Tests Found" { + t.Errorf("Expected message 'No Tests Found', Got: %v", msg) + } + } + +} + func TestRunSuccessWithTestFailureHook(t *testing.T) { ts := testSuiteFixture([]string{manifestWithTestFailureHook}) env := testEnvFixture() @@ -246,9 +277,6 @@ func testFixture() *test { } func testSuiteFixture(testManifests []string) *TestSuite { - if len(testManifests) == 0 { - testManifests = []string{manifestWithTestSuccessHook, manifestWithTestFailureHook} - } testResults := []*release.TestRun{} ts := &TestSuite{ TestManifests: testManifests, @@ -274,10 +302,11 @@ type mockStream struct { messages []*services.TestReleaseResponse } -func (rs mockStream) Send(m *services.TestReleaseResponse) error { +func (rs *mockStream) Send(m *services.TestReleaseResponse) error { rs.messages = append(rs.messages, m) return nil } + func (rs mockStream) SetHeader(m metadata.MD) error { return nil } func (rs mockStream) SendHeader(m metadata.MD) error { return nil } func (rs mockStream) SetTrailer(m metadata.MD) {}