Skip to content

Commit 0404c89

Browse files
committed
git: test for branch checkout should not delete untracked file
1 parent ad102d2 commit 0404c89

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

worktree_test.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -764,6 +764,39 @@ func (s *WorktreeSuite) TestCheckoutBranch() {
764764
s.True(status.IsClean())
765765
}
766766

767+
func (s *WorktreeSuite) TestCheckoutBranchUntracked() {
768+
w := &Worktree{
769+
r: s.Repository,
770+
Filesystem: memfs.New(),
771+
}
772+
773+
uf, err := w.Filesystem.Create("untracked_file")
774+
s.NoError(err)
775+
_, err = uf.Write([]byte("don't delete me"))
776+
s.NoError(err)
777+
778+
err = w.Checkout(&CheckoutOptions{
779+
Branch: "refs/heads/branch",
780+
})
781+
s.NoError(err)
782+
783+
head, err := w.r.Head()
784+
s.NoError(err)
785+
s.Equal("refs/heads/branch", head.Name().String())
786+
787+
status, err := w.Status()
788+
s.NoError(err)
789+
// The untracked file should still be there, so it's not clean
790+
s.False(status.IsClean())
791+
s.True(status.IsUntracked("untracked_file"))
792+
err = w.Filesystem.Remove("untracked_file")
793+
s.NoError(err)
794+
status, err = w.Status()
795+
s.NoError(err)
796+
// After deleting the untracked file it should now be clean
797+
s.True(status.IsClean())
798+
}
799+
767800
func (s *WorktreeSuite) TestCheckoutCreateWithHash() {
768801
w := &Worktree{
769802
r: s.Repository,

0 commit comments

Comments
 (0)