From 995cab57d463ee44783068e9a1d70a1993373a55 Mon Sep 17 00:00:00 2001 From: Hidde Beydals Date: Mon, 3 Jul 2023 12:17:01 +0200 Subject: [PATCH] Revert "Disable "empty repository" Git test" This reverts commit 60571c08f1113bf94bbd53443289ab379dc4754d. Signed-off-by: Hidde Beydals --- .../gitrepository_controller_test.go | 107 +++++++++--------- 1 file changed, 51 insertions(+), 56 deletions(-) diff --git a/internal/controller/gitrepository_controller_test.go b/internal/controller/gitrepository_controller_test.go index 62c90b6d..aa9b3070 100644 --- a/internal/controller/gitrepository_controller_test.go +++ b/internal/controller/gitrepository_controller_test.go @@ -219,62 +219,57 @@ func TestGitRepositoryReconciler_Reconcile(t *testing.T) { testSuspendedObjectDeleteWithArtifact(ctx, g, obj) } -// TODO(hidde): Re-enable this test. -// It is currently disabled because it fails on machines with Git version -// >=v2.41.0 due to changes to commands used by the test server. Causing -// the test server to return an error when cloning an empty repository, -// instead of yielding an empty object. -//func TestGitRepositoryReconciler_reconcileSource_emptyRepository(t *testing.T) { -// g := NewWithT(t) -// -// server, err := gittestserver.NewTempGitServer() -// g.Expect(err).NotTo(HaveOccurred()) -// defer os.RemoveAll(server.Root()) -// server.AutoCreate() -// g.Expect(server.StartHTTP()).To(Succeed()) -// defer server.StopHTTP() -// -// obj := &sourcev1.GitRepository{ -// ObjectMeta: metav1.ObjectMeta{ -// GenerateName: "empty-", -// Generation: 1, -// }, -// Spec: sourcev1.GitRepositorySpec{ -// Interval: metav1.Duration{Duration: interval}, -// Timeout: &metav1.Duration{Duration: timeout}, -// URL: server.HTTPAddress() + "/test.git", -// }, -// } -// -// clientBuilder := fakeclient.NewClientBuilder(). -// WithScheme(testEnv.GetScheme()). -// WithStatusSubresource(&sourcev1.GitRepository{}) -// -// r := &GitRepositoryReconciler{ -// Client: clientBuilder.Build(), -// EventRecorder: record.NewFakeRecorder(32), -// Storage: testStorage, -// patchOptions: getPatchOptions(gitRepositoryReadyCondition.Owned, "sc"), -// } -// -// g.Expect(r.Client.Create(context.TODO(), obj)).ToNot(HaveOccurred()) -// defer func() { -// g.Expect(r.Client.Delete(context.TODO(), obj)).ToNot(HaveOccurred()) -// }() -// -// var commit git.Commit -// var includes artifactSet -// sp := patch.NewSerialPatcher(obj, r.Client) -// -// got, err := r.reconcileSource(context.TODO(), sp, obj, &commit, &includes, t.TempDir()) -// assertConditions := []metav1.Condition{ -// *conditions.TrueCondition(sourcev1.FetchFailedCondition, "EmptyGitRepository", "git repository is empty"), -// } -// g.Expect(obj.Status.Conditions).To(conditions.MatchConditions(assertConditions)) -// g.Expect(err).To(HaveOccurred()) -// g.Expect(got).To(Equal(sreconcile.ResultEmpty)) -// g.Expect(commit).ToNot(BeNil()) -//} +func TestGitRepositoryReconciler_reconcileSource_emptyRepository(t *testing.T) { + g := NewWithT(t) + + server, err := gittestserver.NewTempGitServer() + g.Expect(err).NotTo(HaveOccurred()) + defer os.RemoveAll(server.Root()) + server.AutoCreate() + g.Expect(server.StartHTTP()).To(Succeed()) + defer server.StopHTTP() + + obj := &sourcev1.GitRepository{ + ObjectMeta: metav1.ObjectMeta{ + GenerateName: "empty-", + Generation: 1, + }, + Spec: sourcev1.GitRepositorySpec{ + Interval: metav1.Duration{Duration: interval}, + Timeout: &metav1.Duration{Duration: timeout}, + URL: server.HTTPAddress() + "/test.git", + }, + } + + clientBuilder := fakeclient.NewClientBuilder(). + WithScheme(testEnv.GetScheme()). + WithStatusSubresource(&sourcev1.GitRepository{}) + + r := &GitRepositoryReconciler{ + Client: clientBuilder.Build(), + EventRecorder: record.NewFakeRecorder(32), + Storage: testStorage, + patchOptions: getPatchOptions(gitRepositoryReadyCondition.Owned, "sc"), + } + + g.Expect(r.Client.Create(context.TODO(), obj)).ToNot(HaveOccurred()) + defer func() { + g.Expect(r.Client.Delete(context.TODO(), obj)).ToNot(HaveOccurred()) + }() + + var commit git.Commit + var includes artifactSet + sp := patch.NewSerialPatcher(obj, r.Client) + + got, err := r.reconcileSource(context.TODO(), sp, obj, &commit, &includes, t.TempDir()) + assertConditions := []metav1.Condition{ + *conditions.TrueCondition(sourcev1.FetchFailedCondition, "EmptyGitRepository", "git repository is empty"), + } + g.Expect(obj.Status.Conditions).To(conditions.MatchConditions(assertConditions)) + g.Expect(err).To(HaveOccurred()) + g.Expect(got).To(Equal(sreconcile.ResultEmpty)) + g.Expect(commit).ToNot(BeNil()) +} func TestGitRepositoryReconciler_reconcileSource_authStrategy(t *testing.T) { type options struct {