@@ -639,6 +639,70 @@ func testFetchByTag(t *testing.T, tag, expectedCommitSubject string, isAnnotated
639639		require .Contains (t , strings .TrimSpace (string (gitLogOutput )), expectedCommitSubject )
640640	}
641641}
642+ func  TestFetchAnnotatedTagAfterCloneSHA1 (t  * testing.T ) {
643+ 	testFetchAnnotatedTagAfterClone (t , "sha1" )
644+ }
645+ 
646+ func  TestFetchAnnotatedTagAfterCloneSHA256 (t  * testing.T ) {
647+ 	testFetchAnnotatedTagAfterClone (t , "sha256" )
648+ }
649+ 
650+ func  testFetchAnnotatedTagAfterClone (t  * testing.T , format  string ) {
651+ 	if  runtime .GOOS  ==  "windows"  {
652+ 		t .Skip ("Depends on unimplemented containerd bind-mount support on Windows" )
653+ 	}
654+ 
655+ 	t .Parallel ()
656+ 	ctx  :=  namespaces .WithNamespace (context .Background (), "buildkit-test" )
657+ 	ctx  =  logProgressStreams (ctx , t )
658+ 
659+ 	repo  :=  setupGitRepo (t , format )
660+ 	cmd  :=  exec .Command ("git" , "rev-parse" , "HEAD" )
661+ 	cmd .Dir  =  repo .mainPath 
662+ 
663+ 	out , err  :=  cmd .Output ()
664+ 	require .NoError (t , err )
665+ 
666+ 	expLen  :=  40 
667+ 	if  format  ==  "sha256"  {
668+ 		expLen  =  64 
669+ 	}
670+ 	sha  :=  strings .TrimSpace (string (out ))
671+ 	require .Equal (t , expLen , len (sha ))
672+ 
673+ 	gs  :=  setupGitSource (t , t .TempDir ())
674+ 
675+ 	id  :=  & GitIdentifier {Remote : repo .mainURL , Ref : sha , KeepGitDir : true }
676+ 
677+ 	g , err  :=  gs .Resolve (ctx , id , nil , nil )
678+ 	require .NoError (t , err )
679+ 
680+ 	key1 , pin1 , _ , done , err  :=  g .CacheKey (ctx , nil , 0 )
681+ 	require .NoError (t , err )
682+ 	require .True (t , done )
683+ 
684+ 	require .GreaterOrEqual (t , len (key1 ), expLen + 4 )
685+ 	require .Equal (t , expLen , len (pin1 ))
686+ 
687+ 	ref , err  :=  g .Snapshot (ctx , nil )
688+ 	require .NoError (t , err )
689+ 	ref .Release (context .TODO ())
690+ 
691+ 	id  =  & GitIdentifier {Remote : repo .mainURL , Ref : "refs/tags/v1.2.3" , KeepGitDir : true }
692+ 	g , err  =  gs .Resolve (ctx , id , nil , nil )
693+ 	require .NoError (t , err )
694+ 
695+ 	key1 , pin1 , _ , done , err  =  g .CacheKey (ctx , nil , 0 )
696+ 	require .NoError (t , err )
697+ 	require .True (t , done )
698+ 
699+ 	require .GreaterOrEqual (t , len (key1 ), expLen + 4 )
700+ 	require .Equal (t , expLen , len (pin1 ))
701+ 
702+ 	ref , err  =  g .Snapshot (ctx , nil )
703+ 	require .NoError (t , err )
704+ 	ref .Release (context .TODO ())
705+ }
642706
643707func  TestMultipleTagAccessKeepGitDirSHA1 (t  * testing.T ) {
644708	testMultipleTagAccess (t , true , "sha1" )
0 commit comments