diff --git a/pkg/hooks/hooks.go b/pkg/hooks/hooks.go
index 6e0e56fd9d33a89df8982e2032f62b92e77a3b6d..ee467ea27bae72053690690f7d10806e718b507b 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 cefdec3d4f06ffa38b04577e0c262697d44a0b31..deb8617f620bc7c7f9643ba6ebe1c0cf02fcd0eb 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 fcfd19c54ed32b980881f02b8849bd8b36ac8f8e..f4362dc5b3b6f88e20ae84929f1b7bc258f4df10 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 e42b52fb2cca55660c1511a8dbdce56987157b0e..58055345db1e30b9af616fff7a466b563cfb20cd 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)       {}