@@ -220,6 +220,56 @@ func TestGitRepositoryReconciler_Reconcile(t *testing.T) {
220220 testSuspendedObjectDeleteWithArtifact (ctx , g , obj )
221221}
222222
223+ func TestGitRepositoryReconciler_reconcileSource_emptyRepository (t * testing.T ) {
224+ g := NewWithT (t )
225+
226+ server , err := gittestserver .NewTempGitServer ()
227+ g .Expect (err ).NotTo (HaveOccurred ())
228+ defer os .RemoveAll (server .Root ())
229+ server .AutoCreate ()
230+ g .Expect (server .StartHTTP ()).To (Succeed ())
231+ defer server .StopHTTP ()
232+
233+ obj := & sourcev1.GitRepository {
234+ ObjectMeta : metav1.ObjectMeta {
235+ GenerateName : "empty-" ,
236+ Generation : 1 ,
237+ },
238+ Spec : sourcev1.GitRepositorySpec {
239+ Interval : metav1.Duration {Duration : interval },
240+ Timeout : & metav1.Duration {Duration : timeout },
241+ URL : server .HTTPAddress () + "/test.git" ,
242+ },
243+ }
244+
245+ builder := fakeclient .NewClientBuilder ().WithScheme (testEnv .GetScheme ())
246+
247+ r := & GitRepositoryReconciler {
248+ Client : builder .Build (),
249+ EventRecorder : record .NewFakeRecorder (32 ),
250+ Storage : testStorage ,
251+ patchOptions : getPatchOptions (gitRepositoryReadyCondition .Owned , "sc" ),
252+ }
253+
254+ g .Expect (r .Client .Create (context .TODO (), obj )).ToNot (HaveOccurred ())
255+ defer func () {
256+ g .Expect (r .Client .Delete (context .TODO (), obj )).ToNot (HaveOccurred ())
257+ }()
258+
259+ var commit git.Commit
260+ var includes artifactSet
261+ sp := patch .NewSerialPatcher (obj , r .Client )
262+
263+ got , err := r .reconcileSource (context .TODO (), sp , obj , & commit , & includes , t .TempDir ())
264+ assertConditions := []metav1.Condition {
265+ * conditions .TrueCondition (sourcev1 .FetchFailedCondition , "EmptyGitRepository" , "git repository is empty" ),
266+ }
267+ g .Expect (obj .Status .Conditions ).To (conditions .MatchConditions (assertConditions ))
268+ g .Expect (err ).To (HaveOccurred ())
269+ g .Expect (got ).To (Equal (sreconcile .ResultEmpty ))
270+ g .Expect (commit ).ToNot (BeNil ())
271+ }
272+
223273func TestGitRepositoryReconciler_reconcileSource_authStrategy (t * testing.T ) {
224274 type options struct {
225275 username string
0 commit comments