diff --git a/pkg/watch/watch.go b/pkg/watch/watch.go index bed7163f14..e70ae15e93 100644 --- a/pkg/watch/watch.go +++ b/pkg/watch/watch.go @@ -41,14 +41,18 @@ const ( Added EventType = "ADDED" Modified EventType = "MODIFIED" Deleted EventType = "DELETED" + Error EventType = "ERROR" ) // Event represents a single event to a watched resource. type Event struct { Type EventType - // If Type == Deleted, then this is the state of the object - // immediately before deletion. + // Object is: + // * If Type is Added or Modified: the new state of the object. + // * If Type is Deleted: the state of the object immediately before deletion. + // * If Type is Error: *api.Status is recommended; other types may make sense + // depending on context. Object runtime.Object } @@ -94,6 +98,11 @@ func (f *FakeWatcher) Delete(lastValue runtime.Object) { f.result <- Event{Deleted, lastValue} } +// Error sends an Error event. +func (f *FakeWatcher) Error(errValue runtime.Object) { + f.result <- Event{Error, errValue} +} + // Action sends an event of the requested type, for table-based testing. func (f *FakeWatcher) Action(action EventType, obj runtime.Object) { f.result <- Event{action, obj} diff --git a/pkg/watch/watch_test.go b/pkg/watch/watch_test.go index a44bad88af..2ab8b4d2c5 100644 --- a/pkg/watch/watch_test.go +++ b/pkg/watch/watch_test.go @@ -35,6 +35,7 @@ func TestFake(t *testing.T) { {Modified, testType("qux")}, {Modified, testType("bar")}, {Deleted, testType("bar")}, + {Error, testType("error: blah")}, } // Prove that f implements Interface by phrasing this as a function. @@ -62,6 +63,7 @@ func TestFake(t *testing.T) { f.Action(Modified, testType("qux")) f.Modify(testType("bar")) f.Delete(testType("bar")) + f.Error(testType("error: blah")) f.Stop() }