diff --git a/pkg/reconciler/knativeserving/knativeserving_controller.go b/pkg/reconciler/knativeserving/knativeserving_controller.go index 8f0bff97..09eb4517 100644 --- a/pkg/reconciler/knativeserving/knativeserving_controller.go +++ b/pkg/reconciler/knativeserving/knativeserving_controller.go @@ -247,7 +247,7 @@ func (r *Reconciler) delete(instance *servingv1alpha1.KnativeServing) error { return nil } if len(r.servings) == 0 { - if err := r.config.Delete(); err != nil { + if err := r.config.Filter(mf.NotCRDs).Delete(); err != nil { return err } } diff --git a/test/resources/verify.go b/test/resources/verify.go index 2ecb706b..8c39ea5c 100644 --- a/test/resources/verify.go +++ b/test/resources/verify.go @@ -20,9 +20,9 @@ import ( "runtime" "testing" - mf "github.com/manifestival/client-go-client" + mfc "github.com/manifestival/client-go-client" + mf "github.com/manifestival/manifestival" apierrs "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/wait" @@ -202,24 +202,29 @@ func KSOperatorCRDelete(t *testing.T, clients *test.Clients, names test.Resource t.Fatal("Timed out waiting on KnativeServing to delete", err) } _, b, _, _ := runtime.Caller(0) - m, err := mf.NewManifest(filepath.Join((filepath.Dir(b)+"/.."), "config/"), clients.Config) + m, err := mfc.NewManifest(filepath.Join((filepath.Dir(b)+"/.."), "config/"), clients.Config) if err != nil { t.Fatal("Failed to load manifest", err) } if err := verifyNoKSOperatorCR(clients); err != nil { t.Fatal(err) } - for _, u := range m.Resources() { - if u.GetKind() == "Namespace" { - // The namespace should be skipped, because when the CR is removed, the Manifest to be removed has - // been modified, since the namespace can be injected. - continue - } - gvrs, _ := meta.UnsafeGuessKindToResource(u.GroupVersionKind()) - if _, err := clients.Dynamic.Resource(gvrs).Get(u.GetName(), metav1.GetOptions{}); !apierrs.IsNotFound(err) { + + // TODO: pred := mf.Any(mf.CRDs, mf.ByKind("Namespace")) + // Loop through both pred and mf.None(pred) + + // verify all but the CRD's and the Namespace are gone + for _, u := range m.Filter(mf.NotCRDs, mf.Complement(mf.ByKind("Namespace"))).Resources() { + if _, err := m.Client.Get(&u); !apierrs.IsNotFound(err) { t.Fatalf("The %s %s failed to be deleted: %v", u.GetKind(), u.GetName(), err) } } + // verify all the CRD's remain + for _, u := range m.Filter(mf.JustCRDs).Resources() { + if _, err := m.Client.Get(&u); apierrs.IsNotFound(err) { + t.Fatalf("The %s CRD was deleted", u.GetName()) + } + } } func verifyNoKSOperatorCR(clients *test.Clients) error {