diff --git a/test/rekt/features/trigger/feature.go b/test/rekt/features/trigger/feature.go index 219e48535ce..fd4b3838517 100644 --- a/test/rekt/features/trigger/feature.go +++ b/test/rekt/features/trigger/feature.go @@ -72,6 +72,8 @@ func TriggerDependencyAnnotation() *feature.Feature { // trigger won't go ready until after the pingsource exists, because of the dependency annotation f.Requirement("trigger goes ready", trigger.IsReady(triggerName)) + f.Setup("Trigger not ready with reason DependencyDoesNotExist", trigger.IsDependencyDoesNotExist(triggerName)) + f.Requirement("install pingsource", func(ctx context.Context, t feature.T) { brokeruri, err := broker.Address(ctx, brokerName) if err != nil { diff --git a/test/rekt/resources/trigger/trigger.go b/test/rekt/resources/trigger/trigger.go index e6ea82a71fe..7b1005c54e6 100644 --- a/test/rekt/resources/trigger/trigger.go +++ b/test/rekt/resources/trigger/trigger.go @@ -192,6 +192,11 @@ func IsReady(name string, timing ...time.Duration) feature.StepFn { return k8s.IsReady(GVR(), name, timing...) } +// IsDependencyDoesNotExist tests to see if a Trigger not become ready with Dependency. +func IsDependencyDoesNotExist(name string, timing ...time.Duration) feature.StepFn { + return k8s.IsDependencyDoesNotExist(GVR(), name, timing...) +} + func WithNewFilters(filters []eventingv1.SubscriptionsAPIFilter) manifest.CfgFn { jsonBytes, err := json.Marshal(filters) if err != nil { diff --git a/vendor/knative.dev/reconciler-test/pkg/k8s/steps.go b/vendor/knative.dev/reconciler-test/pkg/k8s/steps.go index 86d27ed0652..06f99333db8 100644 --- a/vendor/knative.dev/reconciler-test/pkg/k8s/steps.go +++ b/vendor/knative.dev/reconciler-test/pkg/k8s/steps.go @@ -61,6 +61,18 @@ func IsNotReady(gvr schema.GroupVersionResource, name string, timing ...time.Dur } } +// IsDependencyDoesNotExist return a reusable feature.StepFn to assert if a dependency in not ready. +// within the time given. Timing is optional but if provided is [interval, timeout]. +func IsDependencyDoesNotExist(gvr schema.GroupVersionResource, name string, timing ...time.Duration) feature.StepFn { + return func(ctx context.Context, t feature.T) { + interval, timeout := PollTimings(ctx, timing) + env := environment.FromContext(ctx) + if err := WaitForResourceNotReady(ctx, t, env.Namespace(), name, gvr, interval, timeout); err != nil { + t.Error(gvr, "DependencyDoesNotExist,", err) + } + } +} + // IsAddressable tests to see if a resource becomes Addressable within the time // given. Timing is optional but if provided is [interval, timeout]. func IsAddressable(gvr schema.GroupVersionResource, name string, timing ...time.Duration) feature.StepFn {