@@ -517,13 +517,15 @@ func TestManagedCheckoutBranch_Checkout(t *testing.T) {
517517
518518 repo , err := git2go .OpenRepository (filepath .Join (server .Root (), repoPath ))
519519 g .Expect (err ).ToNot (HaveOccurred ())
520+ defer repo .Free ()
520521
521522 branchRef , err := repo .References .Lookup (fmt .Sprintf ("refs/heads/%s" , git .DefaultBranch ))
522523 g .Expect (err ).ToNot (HaveOccurred ())
523524 defer branchRef .Free ()
524525
525526 commit , err := repo .LookupCommit (branchRef .Target ())
526527 g .Expect (err ).ToNot (HaveOccurred ())
528+ defer commit .Free ()
527529
528530 authOpts := & git.AuthOptions {
529531 TransportOptionsURL : getTransportOptionsURL (git .HTTP ),
@@ -552,6 +554,33 @@ func TestManagedCheckoutBranch_Checkout(t *testing.T) {
552554 g .Expect (err ).ToNot (HaveOccurred ())
553555 g .Expect (cc .String ()).To (Equal (git .DefaultBranch + "/" + commit .Id ().String ()))
554556 g .Expect (git .IsConcreteCommit (* cc )).To (Equal (true ))
557+
558+ // Create a new branch and push it.
559+ err = createBranch (repo , "test" , nil )
560+ g .Expect (err ).ToNot (HaveOccurred ())
561+ transportOptsURL := getTransportOptionsURL (git .HTTP )
562+ managed .AddTransportOptions (transportOptsURL , managed.TransportOptions {
563+ TargetURL : repoURL ,
564+ })
565+ defer managed .RemoveTransportOptions (transportOptsURL )
566+ origin , err := repo .Remotes .Create ("origin" , transportOptsURL )
567+ defer origin .Free ()
568+ g .Expect (err ).ToNot (HaveOccurred ())
569+ err = origin .Push ([]string {"refs/heads/test:refs/heads/test" }, & git2go.PushOptions {})
570+ g .Expect (err ).ToNot (HaveOccurred ())
571+
572+ branch .Branch = "test"
573+ tmpDir2 := t .TempDir ()
574+ cc , err = branch .Checkout (ctx , tmpDir2 , repoURL , authOpts )
575+ g .Expect (err ).ToNot (HaveOccurred ())
576+
577+ // Check if the repo HEAD points to the branch.
578+ repo , err = git2go .OpenRepository (tmpDir2 )
579+ g .Expect (err ).ToNot (HaveOccurred ())
580+ head , err := repo .Head ()
581+ defer head .Free ()
582+ g .Expect (err ).ToNot (HaveOccurred ())
583+ g .Expect (head .Branch ().Name ()).To (Equal ("test" ))
555584}
556585
557586func TestManagedCheckoutTag_Checkout (t * testing.T ) {
@@ -573,13 +602,15 @@ func TestManagedCheckoutTag_Checkout(t *testing.T) {
573602
574603 repo , err := git2go .OpenRepository (filepath .Join (server .Root (), repoPath ))
575604 g .Expect (err ).ToNot (HaveOccurred ())
605+ defer repo .Free ()
576606
577607 branchRef , err := repo .References .Lookup (fmt .Sprintf ("refs/heads/%s" , git .DefaultBranch ))
578608 g .Expect (err ).ToNot (HaveOccurred ())
579609 defer branchRef .Free ()
580610
581611 commit , err := repo .LookupCommit (branchRef .Target ())
582612 g .Expect (err ).ToNot (HaveOccurred ())
613+ defer commit .Free ()
583614 _ , err = tag (repo , commit .Id (), false , "tag-1" , time .Now ())
584615
585616 checkoutTag := CheckoutTag {
0 commit comments