@@ -280,6 +280,49 @@ func TestGetComponentFromGit(t *testing.T) {
280280 assert .True (t , exists )
281281 })
282282
283+ t .Run ("git directory is preserved in destination" , func (t * testing.T ) {
284+ ctrl := gomock .NewController (t )
285+ mockGitProvider := git_test .NewMockGitProvider (ctrl )
286+ mockExtractor := fedorasource_test .NewMockFedoraSourceDownloader (ctrl )
287+
288+ provider , err := sourceproviders .NewFedoraSourcesProviderImpl (
289+ env .FS (), env .DryRunnable , mockGitProvider , mockExtractor , mockDistroResolver (), retry .Disabled (),
290+ )
291+ require .NoError (t , err )
292+
293+ mockComponent := components_testutils .NewMockComponent (ctrl )
294+ mockComponent .EXPECT ().GetName ().AnyTimes ().Return (testPackageName )
295+ mockComponent .EXPECT ().GetConfig ().AnyTimes ().Return (& projectconfig.ComponentConfig {Name : testPackageName })
296+
297+ mockGitProvider .EXPECT ().
298+ Clone (gomock .Any (), repoURL , gomock .Any (), gomock .Any ()).
299+ DoAndReturn (func (_ context.Context , _ , cloneDir string , _ ... git.GitOptions ) error {
300+ for path , content := range map [string ]string {
301+ cloneDir + "/" + testPackageName + ".spec" : "Name: " + testPackageName ,
302+ cloneDir + "/.git/HEAD" : "ref: refs/heads/main\n " ,
303+ } {
304+ if err := fileutils .WriteFile (env .FS (), path , []byte (content ), fileperms .PublicFile ); err != nil {
305+ return err
306+ }
307+ }
308+
309+ return nil
310+ })
311+
312+ mockExtractor .EXPECT ().
313+ ExtractSourcesFromRepo (gomock .Any (), gomock .Any (), testPackageName , gomock .Any ()).
314+ Return (nil )
315+
316+ gitDestDir := destDir + "/with-git"
317+ err = provider .GetComponent (context .Background (), mockComponent , gitDestDir )
318+ require .NoError (t , err )
319+
320+ // Verify the .git directory was preserved in the destination.
321+ exists , err := fileutils .Exists (env .FS (), gitDestDir + "/.git/HEAD" )
322+ require .NoError (t , err )
323+ assert .True (t , exists , ".git/HEAD should exist in destination" )
324+ })
325+
283326 t .Run ("validation failures" , func (t * testing.T ) {
284327 ctrl := gomock .NewController (t )
285328 mockGitProvider := git_test .NewMockGitProvider (ctrl )
0 commit comments